In earlier Slicer versions, slice views were initialized to be aligned with anatomical axes (as defined when the patient was scanned). In recent Slicer Preview Releases we switched to aligning slice views with voxel arrays because this seems to be what most users expect.
choose an anatomical plane using the “Slice orientation” selector to align with anatomical axes
click “Rotate to volume plane” button to snap the slice plane to volume axes
In recent Slicer Preview Releases, clicking on the eye icon in Data module automatically rotates to volume plane, unless the features is turned off (by right-clicking on the eye icon and unchecking “Reset view orientation on show”).
Thank you for the helpful explanation! I have a related follow-up question:
When I reformat images as axial, coronal, and sagittal, I see that I can scroll through and view orthogonal slices. But the volume is not really resliced orthogonally - does Slicer have functionality to do this?
Yes, when you scroll the slices they are all resliced along the chosen axis. This can be an arbitrary direction. You can change the direction by showing slice intersections and then Ctrl+Alt+Left-click-and-drag in a slice view.
I see, but I meant that the volume is not resliced orthogonally or my preferred orientation when I export it as a dicom. So it’s not really altering the ras2ijk matrices, but only visually.
Sorry for being unclear in my first question. What I’m trying to achieve is to convert an obliquely acquired volume with a direction cosine matrix not equal to the true Sagittal/axial/coronal orientations to be orthogonally resliced.
Yes, sure, you can resample the volume with arbitrary axis directions and create a new volume from that. Probably the simplest is to use Crop volume module and using an ROI box with with axes aligned with RAS axes.
You can also use the ACPC transform module to accurately orient the head into standard orientation (the head orientation on the CT table is just approximately aligned with anatomical axes) and use the computed transform as input in an image resampling module.
This is great! Thank you so much for your help. I noticed that the ROI which is added by default is already aligned with the RAS axes. So I have a two step procedure: 1) Crop the volume 2) ACPC transform to make the alignment perfect.
And it works mostly as I expect it to. But I have one question: The ijk2ras direction matrices are set to identity for all my volumes after cropping. So if I start with a volume like this:
Also, I know this is minor - but I am so grateful to the people of Slicer development for having added a human orientation marker which adjusts itself according to the oblique acquisition matrices. It really helps beginners like me.
There are 24 ways of choosing origin and axis directions (IJKtoRAS matrix) and reorder voxels in memory that results in having the same voxels at the same physical location. They are all equivalent.
The simplest IJKtoRAS mapping is identity matrix (diag(1,1,1,1)). However, IJKtoLPS mapping is used the most commonly in files, therefore a trivial IJKtoLPS mapping ends up as diag(-1,-1,1,1) when imported into Slicer.
If you need a specific geometry then you can use the image resampling modules (you can specify geometry using a reference volume, transform, or axes directions&origin&extents).
I have a follow-up question here. My workflow currently crops the volumes with ROIs aligned to the RAS axes, computes the ACPC transform, and then resamples the cropped volumes. I noticed that an offset (arrow in the image below) is introduced between the coronal and sagittal volumes after the transformation. Could you please help explain this? I have already tried specifying the AC as rotation point in the rigid/affine parameters section of the resample scalar/vector/dwi volume - the offset is still visible.
The ACPC transform is just a linear transform so it will not decrease the image quality, so if you find that hardening it improves the results then it should be fine to do it.
There are huge public brain MRI databases, so if you want us to investigate this difference in the border then you may try to reproduce it with a data set taken from those.