Concatenating "parts" of spinal cord with unequal orientation

Hi!

I have acquired some simple T2 images that are easily concatenated as the xyz-axis for all images is the same so I have cervical, thoracic and lumbosacral parts that I can join into 1 spinal cord T2 image. Now I also have some high detail images that only contain the spinal canal and little surrounding tissue with very high contrast within spinal canal but these are also in 3 parts but oriented along the spinal cord. So these 3 images do not have the same orientation which causes them to not be “stitchable”. I already tried getting them to a similar template/orientation but nothing seems to really work. The sct_image either returns only part of the images or just removes parts. While when you visualize them after registering them to the T2 they lie perfectly over eachother, so it is just an orientation problem.

Do you have any ideas on how to get them concatenated? Maybe straighten them separately, then register them to the straightened total T2 and then stitch?

Hi @b.kalkhoven,

Have you tried registering each of your axial images to the t2 native space (not to the straight space) using -identity 1 flag (ie: no registration, just resampling to the t2 space), and then run stitching?

So our normal T2 is 0.8 isotropic and the other sequence is especially made with 0.26 isotropic. When you do this with identity 1 it will also get the 0.8 isotropic throwing away a lot of valuable information.
One way would be upsampling the full T2 to 0.26 isotropic but I tried this and this gives the following problems:

  • File gets really large (thats not weird because youre essentially doing the voxel volume /30)
  • Visualization shows an empty image or gives a gpu error (limitation of my laptop I guess? Details: Cannot create an OpenGL texture for [194, 985, 2655] - it exceeds the hardware limits on this platform (2D: 16384, 3D: 2048))
  • But it is also not only a visualization problem because if I run sct_deepseg spinalcord on the image it also returns empty

Hi,

Is the other sequence a “true” 0.26mm isotropic? If acquired at 3T, I suspect there is interpolation involved in the reconstruction (eg zero-padding, which is not uncommon). If that’s the case, then downsampling does not throw away information (because no effective information was created by upsampling in the first place).

That aside, given that most sct_deepseg models resample to a fixed resolution (eg 1mm for spinalcord), there is no gain in running the algo at 0.26mm iso. I recommend running it in the native resolution (0.8mm) and then upsampling your segmentation output (although, as said before, I don’t think upsampling to 0.26mm is the right strategy if high res images were upsampled in the first place)

Do you know how exactly I would be able to know if it is a true 0.26 isotropic?

The main reason I want to do this is not to run the sct_deepseg model per se. I want to concatenate the high resolution images - straighten them and then run one of our own algorithms on it to extract some other parameters. So I would really like to retain our 0.26 isotropic resolution IF it is ofcourse a true 0.26 isotropic but would you know how I could find out?

Do you know how exactly I would be able to know if it is a true 0.26 isotropic?

By looking at the DICOM metadata, you could check what was the acquired matrix size and FOV.

Matrix:960x960x146x1
“SliceThickness”: 0.5, “SpacingBetweenSlices”: 0.275,

  • FrequencyEncodingSteps = 500
  • PhaseEncodingSteps = 500
  • PercentPhaseFOV = 100
  • PercentSampling = 78.5398 (i.e., partial Fourier in the frequency direction)
    • ReconMatrixPE = 960

So essentially this means the real acquisition is 0.5 isotropic then right?

So essentially this means the real acquisition is 0.5 isotropic then right?

yup, keeping in mind that there is a through slice gap of 0.28mm