[Insight-users] Deformable Surface Registration

somi seesomi at gmail.com
Tue Aug 4 18:37:01 EDT 2009


Hi Arnaud,
Thanks for the exhaustive mail :) ...It should make my task much easier...
By base mesh I mean a reference mesh (like MNI image in 3D brain
registration ) which would act as a surface atlas...

I also found 2 ITK projects which are very similar to what I want to do

http://www.midasjournal.org/browse/publication/101
http://www.midasjournal.org/browse/publication/111

I will try out and see how far I go :) ..Thanks again for the help

Regards,
Somi

On Tue, Aug 4, 2009 at 11:16 AM, Arnaud GELAS
<arnaud_gelas at hms.harvard.edu>wrote:

>  Hi Somi,
>
> Your project sounds interesting!
>
> Just to clarify, what you call a base mesh is just a reference mesh, right?
> or is it a base mesh in the multiresolution sense (meaning that you will
> apply successive subdivision filter)?
>
> The registration process will provide you a one to one mapping between
> surfaces, meaning that any point on one mesh will have exactly one point on
> the other one. Note that a point is not necessarily one vertex.
>
> It is not too difficult to perform the registration for faces, and use the
> deformation field for morphing. You should process as follows:
> 1- Compute the indicator you want to use for registration (curvature,
> etc..), and associate to vertices/faces this indicator.
>
>    - You can find some filters in itk for computing curvatures:
>    http://www.insight-journal.org/browse/publication/302
>
> 2- Parameterization to a square domain of the meshes with associated data
>
>    -   Planar parameterization is in itk:
>    http://www.insight-journal.org/browse/publication/202
>
> 3- The most difficult part is now to register two planar meshes.
>
>    - I don't think there is such a thing in itk. but you could have a look
>    at this paper and the code which is for the case of sphere.
>    http://www.insight-journal.org/browse/publication/687
>    - You could apply this to planar mesh and contribute by an insight
>    journal paper. It may interest some others :-)
>
> 4- Go back to 3D space. For every vertices of the moving mesh you need to
> find in which triangle of the other one it is (in 2D plane), and then with
> barycentric coordinates you can go back in 3D. I can guide you on this part
> if necessary. Contributing this code may interest some others too for
> different applications such as remeshing  :-)
>
> 5- To apply morphing, you need to keep track of the displacement of the
> moving mesh in the parametric space of the other one, and then apply the
> previous transformation for each step. If I remember well, in the late 90s
> Marc Alexa was working on such kind of problems, you may have a look to his
> papers.
>
> For the cortical surfaces, you need to make sure that your two meshes have
> similar topologies. If both of them are homeomorph to a sphere you can first
> do a spherical parameterization, then apply this paper:
> http://www.insight-journal.org/browse/publication/687
>
> Or you just create you own cut graph, just need to create a boundary that
> you keep and will reuse at the end of the process. Then you apply the same
> method as for the face, and use the boundary information you kept to zipper
> the mesh.
> Finally if your meshes are not homeomorph to a sphere or have different
> topologies you will have to read the paper I mentioned:
>
>
> http://www.cs.sunysb.edu/~gu/publications/pdf/2002/ComputeConformalStructure.pdf<http://www.cs.sunysb.edu/%7Egu/publications/pdf/2002/ComputeConformalStructure.pdf>
> Computing Conformal Structures Of Surfaces
> Xianfeng Gu and Shing-tung Yau, Communications in Information and Systems,
> 2002, Volume 2, 121--146
>
> Or correct the topology before applying any of these methods.
>
> HTH
> Have a good day,
> Arnaud
>
>
> On 07/31/2009 06:02 PM, somi wrote:
>
> Hi Karthik, Arnaud,
> Thanks for your inputs...Mostly I work with 3D human faces or cortial
> surfaces...I was interested to develop an application  which could do the
> following:
>
> a) Given two arbitrary meshes , register one mesh to a base mesh, and
> output the "Deformation field" (similar to 3D MR registration), the idea is
> to use deformation field as a feature
> b) After registration number of vertices/faces in both meshes should be
> same with one-to-one mapping between vertices
>
> c) This could be in a series of steps like first do affine, then deformable
> registration (possibly in a multi-resolution framework to enhance speed of
> convergence)
>
> d) Also Use the above framework for dynamic morphing (like given a series
> of  faces (e.g.) of a male morph a female face to this average male
> face)...this should take into account the curvature, orientation , height
> etc.
>
> I like the conformal mapping and doing registration in 2d then mapping it
> back to 3D. I was thinking of instead of just using Height of the mesh,
> first each vertex find features at each vertex (curvature, shape index,
> textures etc http://somesh.net/NorAsym_O.jpg ,
> http://somesh.net/AbsCmax_O.jpg , http://somesh.net/Cshape_O.jpg ,
> http://somesh.net/AbsCmean_F.jpg )
> and then use these feature vector at each vertex for registration.
>
>
> I have heard that ICP is sensitive to initialization...so if the initial
> meshes are not approximately alligned it might not converge....also I am not
> sure if it can give a deformation field as I require?
>
> Also would the "cut" in the graph be uniquely found always (can we cut
> along any particular direction or is there a best direction to cut the mesh)
>
> I was wondering which is the best way to go considering my requirements and
> if it is feasible...I haven't read through the references you mentioned in
> detail yet...is implementation available for those references or do we have
> to implement from the scratch ?
>
> Thanks again for the help,
>
> Best Regards,
> Somi
>
> On Fri, Jul 31, 2009 at 10:51 AM, Arnaud GELAS <
> arnaud_gelas at hms.harvard.edu> wrote:
>
>>  Hi Somi,
>>
>> As Karthik pointed, if both meshes are homeomorphic to a sphere you can
>> first use a spherical parameterization and can follow the provided
>> reference.
>>
>> A more general method (that could also handle this particular case), is to
>> first generate a "cut graph" on your mesh that will be used as boundary for
>> a planar parameterization. Note that if you constraint the boundary to be a
>> square in the plane, and if you associate to any point, or triangle
>> information like 3D coordinates, curvature, you can generate a 2D image.
>> Finally you can apply any registration method to register the 2
>> parameterizations.
>>
>> Regarding this last method, you can find an explanation how to compute the
>> cut graph in the following paper:
>>
>> http://www.cs.sunysb.edu/~gu/publications/pdf/2002/ComputeConformalStructure.pdf<http://www.cs.sunysb.edu/%7Egu/publications/pdf/2002/ComputeConformalStructure.pdf>
>> Computing Conformal Structures Of Surfaces
>> Xianfeng Gu and Shing-tung Yau, Communications in Information and Systems,
>> 2002, Volume 2, 121--146
>>
>> For the planar parameterization, you can find details at
>> http://www.insight-journal.org/browse/publication/202
>> "Parameterization of discrete surfaces", Gelas A. and Gouaillard A.
>>
>>
>> Arnaud
>>
>>
>> On 07/31/2009 01:00 AM, Karthik Krishnan wrote:
>>
>> There are methods for both
>> - Point set to point set registration
>> - mesh to mesh registration
>>
>> The former includes ICP. Please see the examples/tests in ITK. Search for
>> IterativeClosestPoint*.cxx
>>
>> The latter is expected to be added to ITK in the near future. You can find
>> the source / details at
>>
>>   http://www.insight-journal.com/browse/publication/645
>> "Rotational Registration of Spherical Surfaces Represented as QuadEdge
>> Meshes", Ibanez L., Audette M., Yeo B.T., Golland P.
>>
>> The mesh here is specific for the case of spherical meshes (points on a 2D
>> manifold, and can be associated with the surface of a sphere) and the
>> transform is specific to a Rotation transform.
>>
>> On Thu, Jul 30, 2009 at 11:44 PM, somi <seesomi at gmail.com> wrote:
>>
>>> Hi,
>>> Is there a functionality in ITK for deformable surface registration
>>> (similar to 3D/2D volume/image registration) for registering 2 surfaces ?
>>> I want to register Mesh A to Mesh B, the number of vertices in Mesh A and
>>> B might be different.
>>> If there is a functionality, does it support multi-resolution registering
>>> ?
>>>
>>> I would really appreciate if someone could give me some pointers.
>>>
>>> Best Regards,
>>> Somi
>>>
>>>
>>> _____________________________________
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>>> http://www.kitware.com/opensource/opensource.html
>>>
>>> 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/20090804/284ca491/attachment.htm>


More information about the Insight-users mailing list