Goal
We want to develope a tensor-based surface morphometry to analyze surface
shape variations associated with the brain. To do so,
we need a surface registration algorithm that minimizes sulcal shape
variations. Given two different surface meshes, the registration algorithm
will find a smooth 3D displacement vector field that minimize the
shape difference between two surfaces. We will approach this problem in
small steps.
Triangular Surface Mesh Data Structure
It is based on so called 'pyramid data structure'. The ASCII file sphere_81920.obj
contains the coordinates and connectivity information about a triangular
mesh which forms an ellipsoid. To understand triangular mesh data structure,
see file
format. Also take a look at the matlab
codes that read data into matlab and computes curvatures. read_surface.m
will read triangular meshes into matlab. I put diffusion_smooth which does
diffusion filtering on surface. To understand the triangular surface mesh
structure fully and how it can be manipulated using differential geometry,
please consult my PhD thesis and an article by MacDonald
et al. in NeuroImage 12:340-356 (2000).
Problem 1: Sulcal Pattern
Matching
Sulcal pattern matching on a sphere. The following picture shows the
mean curvature of the inner cortical surface projected on an ellipsoid.
The mean curvature was computed via a quadratic polynomial fitting at each
vertex. Because the triangular mesh is not smooth enough, the mean curvature
has some unwanted noise. To increase the signal to noise ratio (SNR), diffusion
smoothing has been applied via the finite element method (FEM) on the triangular
mesh. See Chung
et al (2000), which has been submitted to IEEE transactions on medical
imaging. Afterwards, the mean curvatures should be thresholded at a
certain value to generate binary data (1 = sulci, 0=gyri). In the picture
below, red or blue regions are sulci and white regions are gyri. The problem
is to find displacement vector field at each vertex on the ellipsoid to
match the 14
year old sulcal pattern (red) to the 19
year old sulcal pattern (blue). *.mean files store the mean curvatures
of the cortical surfaces in ASCII file format. The curvatures are stored
in a sequencial order exactly matching the vertex ordering. For example,
each file may contain the following sequence of real numbers
0.7376012e-02 -3.7562415e-02 ....,
where e-02 indicates 10^(-2). The mean curvature is a very sensitive measure. Thresholding between 0 and 0.01 will be sufficient to show a sulcal strip pattern as displayed below.
Problem 2: Surface
Registration
Using solutions to Problem 1, we now try to register
between surfaces based on matching the continuous mean curvature values
between 0 and 0.01. Compared to Problem 1, a slightly different approach
might be needed. No one has approached surface registration in this way.
If we accomplish this, we will be the first. :)
Problem 3: Area-Preserving
Surface Flattening
MacDonald et
al (NeuroImage 12:340-356, 2000) gives automatic flattening algorithm from
the cortex to a sphere. Now we want to map from the sphere to plane such
that areas of triangles are propotionally preserved. I think we can approach
this problem in terms of the least-squares estimation. The reason for surface
flattening is that it is a good way to visualize. Also because most classical
statistical procedures are based in a Euclidean space, by transforming
the curved surface where data reside to a flat plane, traditional statistical
analysis can be performed.
Problem 4: Extracting
Sulci
Extracting sulci is a nontrivial problem and
quite important in quantifying sulcal variations in a population. One way
to do is to use mean curvature as I have explained above. Alternately,
geodesic distance can be used to extract sulci. For further information,
please talk to me.
FAQ
Question: How to get the mean curvature?
Answer: The mean curvature at each vertex can be computed using
the Matlab code get_curvature.m. Run command line get_curvature(cortex),
where cortex is the name of *.obj file you want to get the curvature.
Question: How to smooth signal on the cortical surface?
Answer: Run command line diffusion_smooth(cortex, get_curvature(cortex),
5, 1). It will give you smoothed mean curvature of cortex with
5mm FWHM filter size based on parametric version of diffusion smoothing.
Image Gallery
1) This picture shows what the inner surface looks like. The mean curvature has been computed. Without surface-based smoothing, it is almost impossible to get consistent less noise consistent sulcal pattern. One way to get very smooth sulcal pattern is to do mesh smoothing via Laplace smoothing; however, it more or less distorts the geometry.
2) This picture compares the mean curvature thresholded between [0, 0.01] of the outer and inner surface. The inner sulcal pattern is clearly superior than the outer sulcal pattern in a sense that the blue strips have more connected parts.
3) This picture shows superimposition of the above sulcal pattern. It clearly shows misalignment (Note: The right part of the surface is not superimposed).