[Insight-users] How to calculate distance between 2 points in millimeter
Jon Haitz Legarreta
jhlegarreta at vicomtech.org
Thu Jun 6 04:43:30 EDT 2013
Dear Cary,
take into accoun that the reader for a JPEG image and that for a DICOM
image series are not the same. Furthermore, reading them with ITK and VTK
differs on how that is done in each library.
For VTK, you may want to have a look at these VTK examples:
http://www.vtk.org/Wiki/VTK/Examples/Cxx/IO/ReadDICOM
http://www.vtk.org/Wiki/VTK/Examples/Cxx/IO/ReadDICOMSeries
If you want to know the resolution (also called spacing) you may want to
call the
double* vtkDICOMImageReader::GetPixelSpacing()
method. Have a look at the vtkDICOMImageReader class reference at this
site: http://www.vtk.org/doc/nightly/html/classvtkDICOMImageReader.html
In order to read a DICOM series and know its resolution in ITK, this may
be of help:
http://www.itk.org/Wiki/ITK/Examples/DICOM/ResampleDICOM
Ignore the resampling part; just read the input series and ask about its
spacing, i.e.
const InputImageType::SpacingType& inputSpacing =
reader->GetOutput()->GetSpacing();
HTH,
JON HAITZ
On 6 June 2013 02:51, Cary lorey <developement.unity at gmail.com> wrote:
> I am trying to read a DICOM image with itk and visualize it with vtk and
> see, I tried to get the resolution with itk but there is no method that
> allows, I recovers just the length and width of the image in pixels.
> if you have an idea how to get the resolution of an image can you help
> me with please
>
> thank you Nuwan Jayala for the answer but I did not find the
> method getspacing in itk.
>
> I tried another example of vtkDistanceWidget class, I tried to read a jpg
> image and I get the measurement between two points millimeter and it works
> well. but when I changed the type of image on DICOM , the value of the
> measurement is not correct, I did not understand where the problem is!!!!!
>
> Please can you help me please .here is my code with vtkDistanceWidget (the
> version that works with jpg is commented):
>
> int main(int, char *[])
> {
> /*std::string inputFilename = "C:/nature.jpg";
>
> //Read the image
> vtkSmartPointer<vtkJPEGReader> jpegReader =
> vtkSmartPointer<vtkJPEGReader>::New();
> jpegReader->SetFileName ( inputFilename.c_str() );*/
>
> std::string inputFilename = "C:/dicom decompress/dicom
> decompress/GM_23/2801/0/000121988";
>
> LectureFileDicom(inputFilename);
>
> typedef itk::FlipImageFilter< ImageType > FlipImageFilterType;
>
> FlipImageFilterType::Pointer flipFilter = FlipImageFilterType::New ();
> flipFilter->SetInput( reader->GetOutput() );
> bool flipAxes[3] = { false, true, false };
> flipFilter->SetFlipAxes(flipAxes);
> flipFilter->Update();
>
> Connector->SetInput( flipFilter->GetOutput() );
> Connector->Update();
>
>
> vtkSmartPointer<vtkImageViewer2> imageViewer =
> vtkSmartPointer<vtkImageViewer2>::New();
> // imageViewer->SetInputConnection( jpegReader->GetOutputPort() );
> imageViewer->SetInput(Connector->GetOutput());
>
>
> // An interactor
> vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
> vtkSmartPointer<vtkRenderWindowInteractor>::New();
> imageViewer->SetupInteractor(renderWindowInteractor);
> imageViewer->Render();
>
> vtkSmartPointer<vtkDistanceWidget> distanceWidget =
> vtkSmartPointer<vtkDistanceWidget>::New();
> distanceWidget->SetInteractor(renderWindowInteractor);
> // distanceWidget->CreateDefaultRepresentation();
> static_cast<vtkDistanceRepresentation
> *>(distanceWidget->GetRepresentation())
> ->SetLabelFormat("%-#6.3g mm");
>
> // Render an image (lights and cameras are created automatically)
>
>
> renderWindowInteractor->Initialize();
>
> distanceWidget->On();
>
> // Begin mouse interaction
> renderWindowInteractor->Start();
>
> return EXIT_SUCCESS;
> }
>
>
> 2013/6/5 Jon Haitz Legarreta <jhlegarreta at vicomtech.org>
>
>> Dear Cary,
>> ITK will give you the distance in image units, i.e. pixel/voxels. You
>> should ask your image object about its resolution (how many physical
>> distance units each pixel accounts for) and then do the conversion.
>>
>> HTH,
>> JON HAITZ
>>
>>
>> On 4 June 2013 01:35, Cary lorey <developement.unity at gmail.com> wrote:
>>
>>> Hello,
>>>
>>> I am trying to calculate the distance between 2 points on an image, I
>>> modified the code TestDistanceWidget according to my needs, but the problem
>>> when I measure the distance between the 2 points, the value is high, then I
>>> want a millimeter distance.
>>>
>>> Please please can you help me?
>>>
>>> thank you in advance.
>>>
>>> _____________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Kitware offers ITK Training Courses, for more information visit:
>>> http://www.kitware.com/products/protraining.php
>>>
>>> Please keep messages on-topic and check the ITK FAQ at:
>>> http://www.itk.org/Wiki/ITK_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.itk.org/mailman/listinfo/insight-users
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20130606/f8829bdd/attachment.htm>
More information about the Insight-users
mailing list