[Insight-users] registration advice request
Luis Ibanez
luis.ibanez at kitware.com
Tue, 10 Feb 2004 08:36:11 -0500
Hi Ruby,
Here are some possibilities
1) Extracting a mesh from Dicom:
It depends on what do you want to be in the mesh.
Do you want the mesh to be a model of a particular organ ?
If that's the case you could first perform segmentation
with one of the multiple techniques available in ITK.
Once you segment the structure you want to register
against the laser scan, you convert the segmented image
to a VTK image, and run the ContourFilter on it, followed
by some decimation since you will probably get a lot of
triangles. You can then convert the VTK mesh back to an
ITK mesh.
2) Selection of points is already implemented in the
fltkImageViewer class available in
InsightApplications/Auxiliary/FltkImageViewer
Please look at the file SliceView.h and the std::list<>
of clicked points. This is all using plain OpenGL.
A more elegant option is to use VTK for visualization.
Get clicked points from the GUI (FLTK, QT, MFC, wxWindows...)
and map it to the image coordinates.
3) Please look at the ICP algorithm that Julien Jomier
from the CADDLab at UNC implemented in ITK. It combines
the following classes:
http://www.itk.org/Insight/Doxygen/html/classitk_1_1IterativeClosestPointMetric.html
http://www.itk.org/Insight/Doxygen/html/classitk_1_1PointSetToPointSetRegistrationMethod.html
----
*NOTE* that you can skip the entire process:
DICOM--->Segmentation--->Mesh
by using PointSetToImage registration. That is, you can
register the laser scan directly to the DICOM image,
that will certainly be faster and safer than the previous
method.
Please look at the PointSetToImageRegistration class
http://www.itk.org/Insight/Doxygen/html/classitk_1_1PointSetToImageRegistrationMethod.html
You simply need to define an appropriate metric representing
what you want to match between the DICOM image and the laser
scan.
For examples on PointSetToImage metrics, you can look at
http://www.itk.org/Insight/Doxygen/html/classitk_1_1PointSetToImageMetric.html
and its derived classes.
Note also that the DICOM slices just need to be read as
a single volume. For an example on how to do that, please
look at the example in:
Insight/Examples/IO/DicomSeriesReadImageWrite.cxx
Regards,
Luis
-------------------
Ruby Shamir wrote:
> Hello,
>
> I am working on MRI - Laser scan (cloud of points) registration.
>
> My plane is as follow:
> ---------------------
> 1. Reading and extracting a mesh from MRI data (DICOM) and from the
> laser scan data.
> 2. Enabling a user to select the Region of interest and then to define
> pairs of matching points and to perform (rough) closed form
> registration.
> 3. Then I would like to use other method for fine registration using
> last step information as initial guess.
> 4. In the end a visualization of the registered data can be done.
>
> I already downloaded and installed the ITK package (VC .NET compiler)
> and the VTK package.
> Currently I succeeded to run some simple programs.
>
> My questions are:
> -----------------
> 1. How can I extract a mesh from a set of 2D set of DICOM images?
> 2. How to enable a user to define matching point's pairs (based on
> Graphical User Interface)?
> 3. Which method is recommended for fine registration between two meshes
> or between mesh and cloud of points?
>
>
>
>
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>