## Available object types

The following object types are available:

### Landmark

A landmark object is a set of labelled points in space: $\mathcal O = \{x_1,\ldots,x_P\}$. Distance between landmark objects assume that both objects have the same number of points and that they are in correspondence.

• Object Type: the corresponding object-type in paramObject.xml files is Landmark
• Metric: the distance between two landmark objects $\mathcal O = \{x_1,\ldots,x_P\}$ and $\mathcal O' = \{x'_1,\ldots,x'_P\}$ is given by:
$D(\mathcal O,\mathcal O')^2 = \sum_{p=1}^P \| x_p - x'_p\|^2$
• Parameter settings: none
• Deformation: the deformation of the landmark object $\mathcal O = \{x_1,\ldots,x_P\}$ is given by the point trajectories $\phi_t\star\mathcal O = \{\phi_t(x_1),\ldots,\phi_t(x_P)\}$
• File format: Each Landmark object needs to be encoded as a PolyData in a Legacy VTK file format. Only the field POINTS is read.

### Point clouds (aka 0-current)

A point cloud is an unstructured set of points in space: $\mathcal O = \{x_1,\ldots,x_P\}$. Distance between point clouds does not assume the same number of points in objects. Point clouds are seen as a distribution of points in space (each point is a Dirac mass) and the distance between point clouds is a distance between probability distributions. Weights $w_p$ may be associated to each point, by default all weights are assumed to be equal to 1.

• Object Type: the corresponding object-type in paramObject.xml files is PointCloud
• Metric: the distance between two point clouds $\mathcal O = \{x_1,\ldots,x_P\}$ and $\mathcal O' = \{x'_1,\ldots,x'_Q\}$ is given by $D(\mathcal O,\mathcal O')^2 = <\mathcal O,\mathcal O> + <\mathcal O',\mathcal O'> - 2<\mathcal O,\mathcal O'>$ where the inner-product is given by:
$<\mathcal O,\mathcal O'>^2 = \sum_{p=1}^P \sum_{q=1}^Q w_p w'_q K(x_p,x'_q)$
• Parameter settings: width $\sigma_W$ of the kernel function $K(x,y) = exp(-|x-y|^2/\sigma_W^2)$.
• Deformation: the deformation of the point cloud $\mathcal O = \{x_1,\ldots,x_P\}$ is given by the point trajectories $\phi_t\star\mathcal O = \{\phi_t(x_1),\ldots,\phi_t(x_P)\}$
• File format: Each point could object needs to be encoded as a PolyData in a Legacy VTK file format. The field POINTS is read for the coordinates of points. The field POINT_DATA of type scalars is read, if provided. If not, all point weights are set to 1 and a warning is displayed.

### Oriented Polygonal Lines (aka 1-current)

A set of oriented polygonal lines is a 1D mesh in 2D or 3D. It is made of a set of vertices $\{x_1,\ldots,x_P\}$ and a connectivity matrix linking pairs of vertices. No assumption about the topology of the mesh is made. From the vertices and connectivity matrix, one builds the centers of the segments $c_k$ and the oriented vector $\tau_k$ connecting the pairs of vertices. The orientation is determined by the ordering of the vertex indices in the connectivity matrix. Distance between oriented polygonal lines does not assume the same number of vertices or the same number of segments in objects. 1-currents are seen as a distribution of vectors in space and the distance between 1-currents is a distance between such distributions.

• Object Type: the corresponding object-type in paramObject.xml files is OrientedPolyLine
• Metric: the distance between two oriented polygonal lines whose centers and oriented segments are $O = \{\{c_1,\ldots,c_P\},\{\tau_1,\ldots,\tau_P\}\}$ and $O' = \{\{c'_1,\ldots,c'_Q\},\{\tau'_1,\ldots,\tau'_Q\}\}$ is given by $D(\mathcal O,\mathcal O')^2 = <\mathcal O,\mathcal O> + <\mathcal O',\mathcal O'> - 2<\mathcal O,\mathcal O'>$ where the inner-product is given by::
$<\mathcal O,\mathcal O'> = \sum_{p=1}^P \sum_{q=1}^Q K(c_p,c'_q)\tau_p^T\tau'_q$
• Parameter settings: width $\sigma_W$ of the kernel function $K(x,y) = exp(-|x-y|^2/\sigma_W^2)$.
• Deformation: the deformation of oriented polygonal lines is defined by the trajectories of the vertices $\phi_t\star\mathcal O = \{\phi_t(x_1),\ldots,\phi_t(x_P)\}$. The deformed centers and segments are computed from the vertex trajectories. This procedure amounts to approximate the deformation $\phi$ by a linear transform at the scale of each segment.
• File format: Each set of oriented polygonal lines needs to be encoded as a PolyData in a Legacy VTK file format. The field POINTS is read for the coordinates of points and the field POLYGONS for the connectivity matrix. An error occurs if POLYGONS does not define segments. Please, not that the field LINES is not supported.

### Non-oriented Polygonal Lines (aka 1-varifold)

A set of non-oriented polygonal lines is a 1D mesh in 2D or 3D, like a set of oriented polygonal lines. The only difference with OrientedPolyLine is that the distance between non-oriented polygonal lines is invariant if orientation of the segments is changed. In other word, the ordering of the vertices in the connectivity matrix does not play a role anymore.

• Object Type: the corresponding object-type in paramObject.xml files is NonOrientedPolyLine
• Metric: the distance between two non-oriented polygonal lines whose centers and segments are $O = \{\{c_1,\ldots,c_P\},\{\tau_1,\ldots,\tau_P\}\}$ and $O' = \{\{c'_1,\ldots,c'_Q\},\{\tau'_1,\ldots,\tau'_Q\}\}$ is given by $D(\mathcal O,\mathcal O')^2 = <\mathcal O,\mathcal O> + <\mathcal O',\mathcal O'> - 2<\mathcal O,\mathcal O'>$ where the inner-product is given by::
$<\mathcal O,\mathcal O'> = \sum_{p=1}^P \sum_{q=1}^Q K(c_p,c'_q)\frac{(\tau_p^T\tau'_q)^2}{|\tau_p||\tau'_q|}$
• Parameter settings: width $\sigma_W$ of the kernel function $K(x,y) = exp(-|x-y|^2/\sigma_W^2)$.
• Deformation: the deformation of oriented polygonal lines is defined by the trajectories of the vertices $\phi_t\star\mathcal O = \{\phi_t(x_1),\ldots,\phi_t(x_P)\}$. The deformed centers and segments are computed from the vertex trajectories. This procedure amounts to approximate the deformation $\phi$ by a linear transform at the scale of each segment.
• File format: Each set of oriented polygonal lines needs to be encoded as a PolyData in a Legacy VTK file format. The field POINTS is read for the coordinates of points and the field POLYGONS for the connectivity matrix. An error occurs if POLYGONS does not define segments. Please, not that the field LINES is not supported.

### Oriented Surface Mesh (aka 2-current)

An oriented surface mesh is a 2D triangular mesh in 3D. It is made of a set of vertices $\{x_1,\ldots,x_P\}$ and a connectivity matrix linking triplets of vertices. No assumption about the topology of the mesh is made. From the vertices and connectivity matrix, one builds the centers of the mesh cells (that are triangles) $c_k$ and the oriented normals whose magnitude equals the area of the mesh cell $n_k$. The orientation is determined by the ordering of the vertex indices in the connectivity matrix. Distance between oriented surface meshes does not assume the same number of vertices or the same number of faces in objects. 2-currents are seen as a distribution of bi-vectors in space and the distance between 2-currents is a distance between such distributions.

• Object Type: the corresponding object-type in paramObject.xml files is OrientedSurfaceMesh
• Metric: the distance between two oriented surface meshes whose centers and oriented normals are $O = \{\{c_1,\ldots,c_P\},\{n_1,\ldots,n_P\}\}$ and $O' = \{\{c'_1,\ldots,c'_Q\},\{n'_1,\ldots,n'_Q\}\}$ is given by $D(\mathcal O,\mathcal O')^2 = <\mathcal O,\mathcal O> + <\mathcal O',\mathcal O'> - 2<\mathcal O,\mathcal O'>$ where the inner-product is given by::
$<\mathcal O,\mathcal O'> = \sum_{p=1}^P \sum_{q=1}^Q K(c_p,c'_q)n_p^Tn'_q$
• Parameter settings: width $\sigma_W$ of the kernel function $K(x,y) = exp(-|x-y|^2/\sigma_W^2)$.
• Deformation: the deformation of oriented surface meshes is defined by the trajectories of the vertices $\phi_t\star\mathcal O = \{\phi_t(x_1),\ldots,\phi_t(x_P)\}$. The deformed centers and normals are computed from the vertex trajectories. This procedure amounts to approximate the deformation $\phi$ by a linear transform at the scale of each mesh cell.
• File format: Each set of oriented surface mesh needs to be encoded as a PolyData in a Legacy VTK file format. The field POINTS is read for the coordinates of points and the field POLYGONS for the connectivity matrix. An error occurs if POLYGONS does not define triangles. Deformetrica does not read the field NORMALS, but compute normals from the field POLYGONS. Ordering in POLYGONS is important!

### Non-oriented Surface Mesh (aka 2-varifold)

A non-oriented surface mesh is a 2D triangular mesh in 3D, like an oriented surface mesh. The only difference with OrientedSurfaceMesh is that the distance between non-oriented surface meshes is invariant if orientation of the mesh cells is changed. In other word, the ordering of the vertices in the connectivity matrix does not play a role anymore.

• Object Type: the corresponding object-type in paramObject.xml files is NonOrientedSurfaceMesh
• Metric: the distance between two non-oriented surface meshes whose centers and normals are $O = \{\{c_1,\ldots,c_P\},\{n_1,\ldots,n_P\}\}$ and $O' = \{\{c'_1,\ldots,c'_Q\},\{n'_1,\ldots,n'_Q\}\}$ is given by $D(\mathcal O,\mathcal O')^2 = <\mathcal O,\mathcal O> + <\mathcal O',\mathcal O'> - 2<\mathcal O,\mathcal O'>$ where the inner-product is given by::
$<\mathcal O,\mathcal O'> = \sum_{p=1}^P \sum_{q=1}^Q K(c_p,c'_q)\frac{(n_p^Tn'_q)^2}{|n_p||n'_q|}$
• Parameter settings: width $\sigma_W$ of the kernel function $K(x,y) = exp(-|x-y|^2/\sigma_W^2)$.
• Deformation: the deformation of non-oriented surface meshes is defined by the trajectories of the vertices $\phi_t\star\mathcal O = \{\phi_t(x_1),\ldots,\phi_t(x_P)\}$. The deformed centers and normals are computed from the vertex trajectories. This procedure amounts to approximate the deformation $\phi$ by a linear transform at the scale of each mesh cell.
• File format: Each set of oriented surface mesh needs to be encoded as a PolyData in a Legacy VTK file format. The field POINTS is read for the coordinates of points and the field POLYGONS for the connectivity matrix. An error occurs if POLYGONS does not define triangles.

References:

J. Glaunès, A. Trouvé, L. Younes, Diffeomorphic Matching of Distributions: A New Approach for Unlabelled Points-Sets and Sub-Manifold Matching, In Proc. of Computer Vision and Pattern Recognition (CVPR), 2, 712-718, 2004

M. Vaillant and J. Glaunès, Surface Matching via Currents, Proc. Inf Process Med Imaging, G. E. Christensen and M. Sonka editors, Lecture Notes in Computer Science Vol. 3565, 381-392, Springer, 2005

J. Glaunès, A. Qiu, M.I. Miller, L. Younes, Large Deformation Diffeomorphic Metric Curve Mapping, International Journal of Computer Vision, 80(3), 317-336, Springer, 2008

S. Durrleman, Statistical models of currents for measuring the variability of anatomical curves, surfaces and their evolution, PhD thesis, University of Nice Sophia-Antipolis, 2010

N. Charon and A. Trouvé, The varifold representation of non-oriented shapes for diffeomorphic registration, SIAM Journal of Imaging Science, 6(4), 2547-2580, 2013