[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
>