I’m working on understanding the details of how FreeSurfer measures cortical thickness. While I understand the basic formula:
Thickness = (d_pial + d_white) / 2
where:
d_pial is the shortest distance from a pial vertex to the white matter surface (not necessarily at a vertex)
d_white is the shortest distance from a white matter vertex to the pial surface (not necessarily at a vertex)
I have several specific questions about the implementation:
1. Vertex Correspondence:
Are there actually paired vertices between white matter and pial surfaces? The above definition doesn’t state how the pial and white matter vertices are chosen
If yes, how exactly are these pairs created during the surface generation process?
What happens if surfaces have different numbers of vertices?
2. Measurement Method:
Why do we measure to the closest point on the opposite surface rather than directly between corresponding vertices (if they exist)?
Why use two distances (d_pial and d_white) and average them instead of a single measurement?
I initially thought the vertex pairs might be created during the deformation process when generating the pial surface from the white matter surface, but I’m not certain about this.
Any insights into these technical details would be greatly appreciated. References to relevant documentation or papers would also be very helpful.
Thank you for the references and detailed response. After reading through them, I’d like to clarify my understanding and ask some follow-up questions.
From your response, I understand that FreeSurfer computes thickness between the smoothwm and pial surfaces by:
Finding the shortest distance from each node to the opposite surface (not necessarily to another node)
Doing this in both directions (smoothwm→pial and pial→smoothwm)
Averaging these distances to get the thickness value
Constraining results to 0-5mm range
I understand this approach of measuring to the closest point on the opposite surface, rather than directly between corresponding nodes, better reflects the biological structure of the cortex, particularly in highly folded regions.
However, I still have some questions about the implementation details:
Surface Node Relationships:
Are nodes on the smoothwm and pial surfaces explicitly paired/associated in some way? Because thickness values seems to be reported per-pair of nodes
If the surfaces have different mesh resolutions (different number of nodes), how does FreeSurfer handle this during thickness computation?
ROI Statistics:
When FreeSurfer reports thickness for an ROI, what statistical approach is used to aggregate individual thickness values? Is it just an average of all thickness values within the region?
If you could point me to any documentation or papers that detail these aspects, I would greatly appreciate it.
I don’t think this ever happens, or if FreeSurfer has a way of handling mismatched resolutions. Both surfaces are made from the same underlying model of brain geometry with explicitly the same resolution. And I believe they are indeed explicitly paired.
I believe it is simply the average with no specific weighting, and other descriptive stats (such as standard deviation) are also reported.
Outside confirmation from anyone else would be good though.
Thanks @Steven
Your responses are incredibly helpful. I’m currently working on methods for cortical thickness estimation, and I have a couple of questions left:
Which file(s) store the vertices generated by the pipeline, and the pairing information between these vertices?
What are the potential drawbacks of using this particular definition for measuring cortical thickness? While I understand that averaging bidirectional measurements could obscure local variations, are there any other limitations or downsides that I should consider?
Those should be the [hemi].white/pial files in the surf folder. They should be the same resolution, and I believe the files can be matched up index-to-index.
I am not sure I can think of other limitations or downsides.