[Insight-users] Deformable Surface Registration

Arnaud GELAS arnaud_gelas at hms.harvard.edu
Tue Aug 4 11:16:03 EDT 2009


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 <mailto: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
>>     <mailto: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 <http://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/ceb3703c/attachment-0001.htm>


More information about the Insight-users mailing list