Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rootlet-informed regsitration to PAM50 template #78

Open
4 tasks
sandrinebedard opened this issue Sep 11, 2024 · 7 comments
Open
4 tasks

Rootlet-informed regsitration to PAM50 template #78

sandrinebedard opened this issue Sep 11, 2024 · 7 comments
Assignees
Labels

Comments

@sandrinebedard
Copy link
Member

sandrinebedard commented Sep 11, 2024

Description

This issue is a follow-up on #13. More precisly, the aim is to use the spinal nerve rootlets for registration to the template. The aim is to provide more accurate alinement of spinal levels, for example for group-level analysis in spinal cord fMRI.

Validation

  • Run on spine-generic & create average image to see if we can see the rootlets better compared with discs-based reg
  • Compute CSA along the spinal cord to see if there is a better alignement spinal cord morphometry, if we can see better the cervical enlargement for example (see PAM50 paper )
  • Bring rootlets segmentation in template space and compute distance from pontomedullary junction as in PAM50 apapear
  • Compare between neck position with PMJ_BIDS dataset
@sandrinebedard
Copy link
Member Author

Some points to consider:

  • It takes ~ 15 min for the z b-spline reg of the rootlets with the PAM50 rootlets (on abbey)

    • Try to play with shrink factor of 4, then 2, 1 (with fewer steps for each)
  • Maybe project in coronal plane to get a 2D image and estimate transfo on a 2D plane, and then ‘repmap’ the transformation into 3D by copying the values slicewise– cons: loss of precision (because of projection on single plane)

  • We only dorsal rootlets --> could help adding to the PAM50 (but we don't really see them)

  • Testing all discs vs C2,C7 vs C3,C5 for first registraton to the template → effect on last seg

@sandrinebedard
Copy link
Member Author

sandrinebedard commented Sep 24, 2024

Here are some premilinary results of sub-007_ses-headNormal and sub-007_ses-headDown (same subject, 2 head positions)of resgistration to the template using the nerve rootlets. here are the steps:
Code version

  1. Resgistration to the template using 2 mid-vertebrae labels
  2. Bringing nerve rootlets to the template space
  3. Z-regsitration of the rootlets with PAM50rootlets
  4. Bringing spinal levels (PAM50) to native space using concatenated transforms of template reg + z-reg of rootlets
  5. Getting midpoints of the spinal levels in the native space (form the registered PAM50 spinal levels)
  6. Registration to the template using flag -lspinal using midpoints

Results

Traditional registration 2 template using 2 mid vertebrae labels (C2 and C7) (in PAM50 space):

reg2template_2vertlabels.mov

Regsitration to template using spinal nerve rootlets (in PAM50 space):

reg2template_spinal.mov

I think this looks very promissing!
Next steps:

  • explore the impact of the first registration using 2 vs all discs
  • try improve registration of nerve rootlets to reduce time of the resgistration

@sandrinebedard
Copy link
Member Author

I notice that there is not enough adjustment done at the lower levels:
(trasnparent is registered rootlets to the template using bsplinesyn on image with CC, overlaid on PAM50 rootlets)
image

Maybe we should consider starting with the centerofmass of the rootlets as a first step and then use the image bspline syn as a fine tuning?

@sandrinebedard
Copy link
Member Author

Results look very promising using the center-of-mass of the rootlets as a first step (inside the straightening, midpoints will be matched between the template and the subject), in a second step, the images masked with rootlets dilated will be registered together.

To generate the mid-point:

sct_label_utils -i ${file_t2_rootlets}.nii.gz -cubic-to-point -o ${file_t2_rootlets}_mid.nii.gz
sct_label_utils -i ${file_t2}_seg.nii.gz -project-centerline ${file_t2_rootlets}_mid.nii.gz  -o ${file_t2_rootlets}_mid_center.nii.gz

Rootlets overlaid on PAM50 rootlets after registration to the template on sub-002-ses-headNormal:
image

much better alignement!!!

Here is the alignement of the rootlets using all discs for the registration to the template overlaid on PAM50 rootlets:
rootlets2template_002_normal_discs

@sandrinebedard
Copy link
Member Author

Here are some GIFs, I feel this is way more robust and get the largest deformations by using the midpoints:

Rootlets-informed registration sub-002_ses-headNormal vs. PAM50 t2.

sub-002_ses-headNormal_rootlets_mid_point_vs_PAM50

Discs-based registration sub-002_ses-headNormal vs. PAM50 t2.

sub-002_headNormal_discs_vs_PAM50

Discs-based vs rootlets based sub-002_ses-headNormal vs PAM50

sub-002_ses-headNormal_discs_vs_rootlets_vs_PAM50

@jcohenadad
Copy link
Member

very convincing!

@sandrinebedard
Copy link
Member Author

Moving everything to this new repository: https://github.com/sct-pipeline/rootlets-informed-reg2template to centralize all validation and code since this repo is about the rootlets model

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants