ilwoolyu / LocalGyrificationIndex

LGI: Cortical Shape-Adaptive Local Gyrification Index

Home Page:https://doi.org/10.1016/j.media.2018.06.009

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Local Gyrification Index

Description

The amount of cortical folding, or gyrification, is typically measured within local cortical regions covered by an equidistant geodesic or nearest neighborhood-ring kernel. However, without careful design, such a kernel can easily cover multiple sulcal and gyral regions that may not be functionally related. Furthermore, this can result in smoothing out details of cortical folding, which consequently blurs local gyrification measurements. In this paper, we propose a novel kernel shape to locally quantify cortical gyrification within sulcal and gyral regions. We adapt wavefront propagation to generate a spatially varying kernel shape that encodes cortical folding patterns: neighboring gyral crowns, sulcal fundi, and sulcal banks. For this purpose, we perform anisotropic wavefront propagation that runs fast along gyral crowns and sulcal fundi by solving a static Hamilton–Jacobi partial differential equation. The resulting kernel adaptively elongates along gyral crowns and sulcal fundi, while keeping a uniform shape over flat regions like sulcal banks. We then measure local gyrification within the proposed spatially varying kernel.

image

Installation

You can download and compile the source code using CMake. Or you can pull docker image:

$ docker pull ilwoolyu/cmorph

Usage

Input

  • surface file (.vtk): triangular 3D mesh

Intermediate input and output

Output

  • lgi file (.txt): local gyrification index per vertex

Commands

After build and install the required packages, type:

$ script/lgi -i input.vtk

If you have both pial and white surfaces, the results will be more accurate. Type:

$ script/lgi -i pial.vtk --white white.vtk

To change kernel size

$ script/lgi --kernel <area mm^2>

If you have a known reference population area, the kernel size will be automatically adjusted by the ratio between the surface area and the reference area.

$ script/lgi --ref <area mm^2>

For example, if kernel size=300 mm^2, reference area=150000 mm^2, input surface area=100000 mm^2, the kernel size is adjusted to 200 mm^2. In our work [1,2], we used reference area of 166000 mm^2 (pial surface) and 77100 mm^2 (cerebral hull) with kernel size of 316 mm^2. To disable the kernel size adjustment, set --ref 0 or ignore this argument (default: 0).

Note 1: Please use --ref 166000 (pial surface area) --ref 77100 (cerebral hull area) with --kernel 316 for consistent quantification independent of individual surfce areas unless you know a specific kernel size for each individual or plan to use an absolute kernel size.

Note 2: The reference area refers to cerebral hull rather than pial surface.

To generate indices per intermediate kernel size

$ script/lgi --intv <area mm^2>

This can support a breath analysis of data across different kernel sizes at no extra cost. See also -t in Gyrification.

In Docker, you need a sudo acces. To run local gyrification, type:

$ docker run \
         -v <LOCAL_INPUT_PATH>:/INPUT/ \
         --rm ilwoolyu/cmorph:1.6 \
         lgi -i /INPUT/input.vtk

Implementation Details

Sulcal/gyral curve extraction

The following command line will generate output.scurve, output.gcurve, and .bary:

$ CurveExtraction -i input.vtk -o output --sulcus --gyrus --bary --noVtk

Or if both pial and white surfaces are available, the following commands give better extraction results:

$ CurveExtraction -i pial.vtk -o output --sulcus --bary --noVtk
$ CurveExtraction -i white.vtk -o output --gyrus --bary --noVtk

See CurveExtraction (sulcal/gyral curves) for more options.

Outer hull creation

An initial outer hull surface needs to be generated for outer hull creation. The cortical surface is voxelized and the morphological operation is applied on it.

To create a binary volume image of the input surface using Mesh voxelisation. From the volume, the outer hull can be obtained using isosurface. Both are implemented in MATLAB.

$ matlab OuterHull('input.vtk', 'outer_hull.vtk');

To use script/lgi, the source codes in matlab need to be compiled. In MATLAB (2015b or above), run script/compile.m to generate an executable file. MATLAB Runtime should be installed.

Outer hull correspondence

To find a Laplacian shape correspondence, the following command will give Laplacian trajectories using klaplace (outer hull correspondence):

$ klaplace -dims 128 input.vtk outer_hull.vtk -surfaceCorrespondence outer_hull

The trjectories will be generated in outer_hull_warpedMesh.vtp. Let's trace the final destinations of the trajectories to obtain the outer hull:

$ klaplace -conv outer_hull_warpedMesh.vtp outer_hull_corr.vtk

Note 1: It would be useful if do some smoothing on outer_hull_corr.vtk since it's very rough mesh since isosurface does not provide smooth mesh.

Note 2: Since the outputs of klaplace consume a huge disk space, it is recommended to delete all but "outer_hull_corr.vtk". This issue has been fixed.

Local gyrification index

The following command line gives local gyrification index per vertex in output.lgi.map.316.txt:

$ Gyrification \
               -i input.vtk \
               -o output \
               --outer outer_hull_corr.vtk \
               -s output.scurve.bary \
               -g output.gcurve.bary \
               -m 316 \
               --speed 0.2

Barycentric curves can provide dense points along sulcal/gyral regions.

To enable multi-thread support (OpenMP):

$ Gyrification --nThreads <# of threads>

More technical details (theory, parameter choice, etc.) can be found in [1,2].

Note 1: If a population area is known, --refHullArea [area] will adjust the area size of -m with respect to the input surface area. The use of --refHullArea is recommended particularly for neurodevelopmental studies.

Note 2: -t [area] will create different lgi measurements in a given interval of area; e.g., -t 100 -m 300 will give lgi at area of 100, 200, and 300 mm^2.

Dependency

Required Components

References

  1. Lyu, I., Kim, S., Girault, J., Gilmore, J., Styner, M., A Cortical Shape-Adaptive Approach to Local Gyrification Index, Medical Image Analysis, 48, 244-258, 2018
  2. Lyu, I., Kim, S., Bullins, J., Gilmore, J., Styner, M., Novel Local Shape-Adaptive Gyrification Index with Application to Brain Development, Medical Image Computing and Computer Assisted Intervention (MICCAI) 2017, LNCS10433, 31-39, 2017
  3. Lyu, I., Kim, S., Woodward, N., Styner, M., Landman, B., TRACE: A Topological Graph Representation for Automatic Sulcal Curve Extraction, IEEE Transactions on Medical Imaging, 37(7), 1653-1663, 2018
  4. Lee, J., Kim, S., Oguz, I., Styner, M., Enhanced Cortical Thickness Measurements for Rodent Brains via Lagrangian-based RK4 Streamline Computation, SPIE Medical Imaging 2016, SPIE9784, 97840B-1-97840B-10, 2016

About

LGI: Cortical Shape-Adaptive Local Gyrification Index

https://doi.org/10.1016/j.media.2018.06.009

License:MIT License


Languages

Language:MATLAB 66.7%Language:C++ 24.5%Language:Shell 7.3%Language:CMake 1.4%