nipy / mindboggle

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

Laplace-Beltrami spectra of fragments? #16

Closed binarybottle closed 11 years ago

binarybottle commented 11 years ago

Arno Klein, Forrest Bao, and Martin Reuter

Arno (5/31/2013): can you run the lbo code on disconnected patched? if not, let's simply choose the largest patch.

Forrest (5/31/2013): Yes, I run LBO code on disconnected patches (if it is not connected), as long as all vertices of them share the same label. If there are n disconnected patches, the LBS will have n near-zero eigenvalues. I was wondering whether it is still meaningful to run LBO on disconnected patches, especially when matching folds from different subjects. For example, my fold X has 2 components while the other guys fold X is a whole piece.

Arno (5/31/2013): it sounds like they would not be comparable, if the number of patches affects the number of near-zero eigenvalues. you might want to run this by martin to be sure, to see if there is a reasonable way of combining the patches or eigenvalues of the patches, and if not, we'll compute on just the largest patch.

Forrest to Martin (6/7/2013): I am thinking about applying LBO onto 3D structures, where each structure may have disconnected components. In our study, the cortical region bearing the same label may break into several disconnected components on some subjects. The attachment is one example where the 5 discrete components bear the same label. Is there any relationship between the LB spetra of discrete components (i.e., applying LBO on each component individually) and the LB spectrum of components altogether (i.e., feeding them as a whole to LBO)? At least I know that the latter will have 5 zeros in the example case.

nki-trt-20-16_lh_fold_5

Martin (6/7/2013): yes, it is simply the union of the spectra (sorted). But shape comparison of a bunch of connected components together is not meaningful (a single small component will add lots of values to the spectra and make comparison difficult). Better work on individual components at a time.

binarybottle commented 11 years ago

Forrest Bao (6/8/2013): I have just one concern over using the largest patch for each labeled region. Let me try to explain using an example. We have two subjects A and B, and we need to compare their X region, which are two disconnected components on either of the two subjects' brains. For A, the largest patch is on the left while for B it is on the right. (Not left or right hemisphere, just the general direction) Assume that region X is not symmetric. Then A's X's largest patch is not similar to B's X's largest patch. Would comparing their LBS be meaningful still?

binarybottle commented 11 years ago

Martin Reuter (6/8/2013): Lbo spectra are meaningful for well defined shapes (eg comparing a human to a house etc), independent of posture. It does not work when comparing parts to whole. I fear that for cortical rois the variability of the segmentation affects the boundary a lot and will give quite different spectra. If you even have cases where the domain is split in two parts of approx the same size, I think lbo will not work at all.

binarybottle commented 11 years ago

do you think we should provide spectra only for unfragmented patches?

concerning sensitivity to label/segmentation boundary, is there any way to weight the influence of vertices, for example to reduce the impact that a given surface patch's boundary vertices have on the resulting spectrum?

binarybottle commented 11 years ago

i am hoping that the surface patch for each labeled region is distinct enough in its shape from other label patches in the same brain that its spectrum will be distinct from other spectra as well. for this to be useful, the impact of the patch shape has to override the impact of the boundary shape on the spectra. is there a good way to de-weight particular (i.e., boundary) vertices? would it help at all to smooth the boundary so that it is less jagged?

Martin Reuter (6/10/2013): Boundary noise is not affecting the spectra as much as the general shape of the boundary. The high frequency noise will not show up in the low frequency eigenvalues, so I don't think smoothing is necessary. But in case things don't work out nicely it is worth a try.

why would you down-weigh particular boundary vertices? If it is the smoothing, then I don't think it would help much, if you are trying to change the general shape then it is unclear how that should be done consistently.

When I said there may be too much shape variability I mean the general shape, not only small noise at the boundary. Also partial matching would not work (e.g. when you have a large ROI in one subject, and in another that ROI is split into two regions.

Arno (6/10/2013): the effect on high frequency noise makes sense -- i'll forgo boundary smoothing. let me explain the reason for asking about down-weighting vertices. i thought it would be helpful to have interior vertices impact spectra more than peripheral vertices. rather than erode a patch, which might have no effect on shape, i thought it would be interesting to assign a low weight to boundary vertices, higher weight to their inner neighbors, inner neighbors to these even higher, and so on until a weight of 1 is applied to all deep interior vertices. wouldn't this deemphasize boundary shape so that it has minimal impact on spectra?

Martin Reuter (6/10/2013): yes, I understand what you mean. The problem I have with this is, that it is unclear to me how the 'shape' would change and what you are actually measuring.

there are options to do that, for example one can adjust the virtual thickness of the membrane and make it thinner the closer one gets to the boundary or the other way (mass density laplace). Or one could modify the material properties so that they are less flexible at the interior and more on the boundary. All this will change the spectra, but I am not sure it will help. I don't think this has been done before. I have seen people playing around with the matrix of the graph laplace, but they never relate it back to the physics to see what parameters (e.g. thickness of the membrane etc) they are actually modifying.

I currently have no feeling for what shape differences you are getting. If a shape looks like an L in one subject and like an I in another nothing will work. If it is more a some small protrusions that you'd like to remove, you may want to play around with these things (probably smoothing would also work or switching to Dirichlet). Dirichlet may have less of an affect on the exterior boundary (because the solution will be zero there and small protrusions should not affect the functions in the interior much), neumann could have a larger effect. However if you plug a small hole in the interior of the shape, then Dirichlet will affect the spectra a lot, while neumann will do less.

binarybottle commented 11 years ago

Forrest Bao, Martin Reuter, Arno Klein (6/12/2013):

Forrest: Can I simply generate the matrices A and B for all vertices and then remove columns and rows corresponding to boundary vertices?

Martin: Yes.

Arno:

  1. select largest patch by default
  2. loop through scipy's eigensolvers (leave empty if none work)
  3. then try the dirichlet for comparison.

Forrest: For 1, I will add the part that finds the largest patch per labeled region. For 2, I can use my current code (which sends matrixes to MATLAB if SciPy fails). For 3, I will do using the method Martin ok'ed - I just need to write a function to identify boundary vertices.

Arno: for 2), make sure to first try the different scipy solvers.