Dear FreeSurfers,
Please can you explain how mri_surf2surf's --cortex option for smoothing is implemented?
I assumed it would be along the following lines: - mask the data to zero-out the medial wall - smooth this masked data - smooth the mask itself - divide the smoothed data by the smoothed mask - (perhaps) re-mask the data
But I've tried doing that long-hand (i.e. calling mri_surf2surf without the --cortex flag for each smoothing, and using l load_mgh and save_mgh in MATLAB for the rest), and it doesn't seem to quite match the results of the --cortex flag.
Now I'm guessing that it instead might do something like the following. For each connected-neighbour iteration of the smoothing, only include the neighbour in the average if it is inside the cortex (not medial wall). However, I can't easily/lazily reimplement this to check, so could someone reveal the truth? ;-)
Many thanks, Ged
Your 2nd description is correct. Note that the value of vertices outside of the mask are NOT changed (ie, they are not set to 0).
doug
DRC SPM wrote:
Dear FreeSurfers,
Please can you explain how mri_surf2surf's --cortex option for smoothing is implemented?
I assumed it would be along the following lines:
- mask the data to zero-out the medial wall
- smooth this masked data
- smooth the mask itself
- divide the smoothed data by the smoothed mask
- (perhaps) re-mask the data
But I've tried doing that long-hand (i.e. calling mri_surf2surf without the --cortex flag for each smoothing, and using l load_mgh and save_mgh in MATLAB for the rest), and it doesn't seem to quite match the results of the --cortex flag.
Now I'm guessing that it instead might do something like the following. For each connected-neighbour iteration of the smoothing, only include the neighbour in the average if it is inside the cortex (not medial wall). However, I can't easily/lazily reimplement this to check, so could someone reveal the truth? ;-)
Many thanks, Ged _______________________________________________ Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
Hi Doug,
Thanks for your speedy answers to both my smoothing questions. Can I trouble you one more?!
Are the connected-neighbour smoothing iterations unweighted averages, or weighted in some way? I'd guess that the approximation to Gaussian smoothing would be better if there was something like the exp(-distance^2) weighting in there (with the distance just being the length of the edge between the neighbours) but maybe this complicates things? I think this is more or less what is done in MK Chung's heat-kernel smoothing, but I haven't looked into the details... http://www.stat.wisc.edu/~mchung/softwares/hk/hk_smooth.m
Many thanks, Ged
2009/8/11 Douglas N Greve greve@nmr.mgh.harvard.edu:
Your 2nd description is correct. Note that the value of vertices outside of the mask are NOT changed (ie, they are not set to 0).
doug
DRC SPM wrote:
Dear FreeSurfers,
Please can you explain how mri_surf2surf's --cortex option for smoothing is implemented?
I assumed it would be along the following lines: - mask the data to zero-out the medial wall - smooth this masked data - smooth the mask itself - divide the smoothed data by the smoothed mask - (perhaps) re-mask the data
But I've tried doing that long-hand (i.e. calling mri_surf2surf without the --cortex flag for each smoothing, and using l load_mgh and save_mgh in MATLAB for the rest), and it doesn't seem to quite match the results of the --cortex flag.
Now I'm guessing that it instead might do something like the following. For each connected-neighbour iteration of the smoothing, only include the neighbour in the average if it is inside the cortex (not medial wall). However, I can't easily/lazily reimplement this to check, so could someone reveal the truth? ;-)
Many thanks, Ged _______________________________________________ Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
-- Douglas N. Greve, Ph.D. MGH-NMR Center greve@nmr.mgh.harvard.edu Phone Number: 617-724-2358 Fax: 617-726-7422
In order to help us help you, please follow the steps in: surfer.nmr.mgh.harvard.edu/fswiki/BugReporting
They are unweighted. In theory, you can get a better gaussian approximation if you weight, but I don't know of a weighting scheme that works all that well. I've implemented Moo's heat kernel smoothing and was not happy with the results (also see a NI paper by Don Hagler dealing with the HK shortcomings).
doug
DRC SPM wrote:
Hi Doug,
Thanks for your speedy answers to both my smoothing questions. Can I trouble you one more?!
Are the connected-neighbour smoothing iterations unweighted averages, or weighted in some way? I'd guess that the approximation to Gaussian smoothing would be better if there was something like the exp(-distance^2) weighting in there (with the distance just being the length of the edge between the neighbours) but maybe this complicates things? I think this is more or less what is done in MK Chung's heat-kernel smoothing, but I haven't looked into the details... http://www.stat.wisc.edu/~mchung/softwares/hk/hk_smooth.m
Many thanks, Ged
2009/8/11 Douglas N Greve greve@nmr.mgh.harvard.edu:
Your 2nd description is correct. Note that the value of vertices outside of the mask are NOT changed (ie, they are not set to 0).
doug
DRC SPM wrote:
Dear FreeSurfers,
Please can you explain how mri_surf2surf's --cortex option for smoothing is implemented?
I assumed it would be along the following lines:
- mask the data to zero-out the medial wall
- smooth this masked data
- smooth the mask itself
- divide the smoothed data by the smoothed mask
- (perhaps) re-mask the data
But I've tried doing that long-hand (i.e. calling mri_surf2surf without the --cortex flag for each smoothing, and using l load_mgh and save_mgh in MATLAB for the rest), and it doesn't seem to quite match the results of the --cortex flag.
Now I'm guessing that it instead might do something like the following. For each connected-neighbour iteration of the smoothing, only include the neighbour in the average if it is inside the cortex (not medial wall). However, I can't easily/lazily reimplement this to check, so could someone reveal the truth? ;-)
Many thanks, Ged _______________________________________________ Freesurfer mailing list Freesurfer@nmr.mgh.harvard.edu https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer
-- Douglas N. Greve, Ph.D. MGH-NMR Center greve@nmr.mgh.harvard.edu Phone Number: 617-724-2358 Fax: 617-726-7422
In order to help us help you, please follow the steps in: surfer.nmr.mgh.harvard.edu/fswiki/BugReporting
freesurfer@nmr.mgh.harvard.edu