nipy / mindboggle

Automated anatomical brain label/shape analysis software (+ website)
http://mindboggle.info
Other
143 stars 54 forks source link

Interpretation of Laplace-Beltrami spectrum results #138

Closed fuzhenrong closed 6 years ago

fuzhenrong commented 6 years ago

dear all ; the mindboggle results about the Laplace-Beltrami spectrum has 9 values for each structure. i really do not know the meaning of it. i assume is it 9 eigenvalues of the spectrum ? thank you! good luck! fuzhenrong beihang university

binarybottle commented 6 years ago

The spectral coefficients are a function of the eigenvalues. See Martin Reuter's "Shape DNA" paper: https://pdfs.semanticscholar.org/1931/674a9a694bc460e986bfd0c005e51262a08b.pdf

fuzhenrong commented 6 years ago

hi--- i am still not clear! my question is what is the Laplace-Beltrami spectrum results in the mindboggle mean, the part of table in the result, is has 9 results for each ROI, from lapiace-beltrami 2 to lapiace-beltrami 10. what these results mean? the distance?

binarybottle commented 6 years ago

These are the Laplace-Beltrami spectral coefficients, skipping the first one.

satra commented 6 years ago

the following section i posted is incorrect. see @m-reuter reply below.

see this for info: https://upload.wikimedia.org/wikipedia/commons/1/12/Rotating_spherical_harmonics.gif

so technically the coefficients of the harmonics from rows 2- 4.

@binarybottle - why are we computing spherical harmonics for regions? shouldn't the zernicke moments be better for the regions since they are topologically discs rather than spheres?

m-reuter commented 6 years ago

These are not the spherical harmonics, they are the eigenvalues of the given shapes. For shapes with boundary a boundary condition is needed, and I think here we use the Neumann condition. For closed shapes, and for Neumann, the first eigenvalues is zero, that's why it is missing. It may make sense to normalize the eigenvalues with respect to size of the structure to only look at shape differences - depends on the application. I think for 2d structures you would multiply by area, but check the publications.

satra commented 6 years ago

@m-reuter - thanks for the clarification and the info on normalization.

fuzhenrong commented 6 years ago

@binarybottle i am clear! thank you!

binarybottle commented 6 years ago

Thanks, @m-reuter !

Currently, Mindboggle defaults to normalizing by both area and index:

def area_normalize(points, faces, spectrum): """ Normalize a spectrum using areas as suggested in Reuter et al. (2006)

def index_normalize(spectrum): """ Normalize a spectrum by division of index to account for linear increase of Eigenvalue magnitude (Weyl's law in 2D) as suggested in Reuter et al. (2006) and used in BrainPrint (Wachinger et al. 2015)

From laplace_beltrami.py: def fem_laplacian(points, faces, spectrum_size=10, normalization="areaindex", verbose=False): """ Compute linear finite-element method Laplace-Beltrami spectrum after Martin Reuter's MATLAB code.

Parameters
----------
points : list of lists of 3 floats
    x,y,z coordinates for each vertex of the structure
faces : list of lists of 3 integers
    3 indices to vertices that form a triangle on the mesh
spectrum_size : integer
    number of eigenvalues to be computed (the length of the spectrum)
normalization : string
    the method used to normalize eigenvalues
    if None, no normalization is used
    if "area", use area of the 2D structure as in Reuter et al. 2006
    if "index", divide eigenvalue by index to account for linear trend
    if "areaindex", do both (default)
verbose : bool
    print statements?
Returns
-------
spectrum : list
    first spectrum_size eigenvalues for Laplace-Beltrami spectrum