Skip to content

Commit

Permalink
BUG: Fix generated partial volumes misaligned with input volume node
Browse files Browse the repository at this point in the history
This commit fixes how the generated PV tiffs are loaded, to ensure that
the partial volume nodes preserve the original RAS/LPS orientation of
the input volume node.

Previously, the generated tiff files were always loaded in LPS-like
orientation (e.g., the IJK-to-RAS Direction Matrix would have -1 in the
first two diagonal entries). This would work correctly on most data we
have tested against, when the data is also originally in LPS
orientation. However, for data this is inherently in RAS directions
(e.g., the IJK-to-RAS Direction Matrix would have 1 in the first two
diagonal entries), or for cropped volume nodes (cropping is observed to
flip the volume from RAS to LPS directions or vice-versa), the loaded
PVs would appear misaligned.
  • Loading branch information
sbelsk committed Nov 16, 2024
1 parent 34fa24c commit 0dc40eb
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions AutoscoperM/AutoscoperM.py
Original file line number Diff line number Diff line change
Expand Up @@ -768,9 +768,17 @@ def onLoadPV(self):
)
return

# get the IJK to RAS direction matrix from original input volume
parentVolume = self.ui.volumeSelector.currentNode()
parentIJKToRAS = vtk.vtkMatrix4x4()
parentVolume.GetIJKToRASDirectionMatrix(parentIJKToRAS)

for i in range(len(vols)):
nodeName = os.path.splitext(os.path.basename(vols[i]))[0]
volumeNode = slicer.util.loadVolume(vols[i])
# ensure we maintain the original RAS/LPS directions from the parent volume
volumeNode.SetIJKToRASDirectionMatrix(parentIJKToRAS)

translationTransformFileName = os.path.join(mainOutputDir, transformSubDir, f"{nodeName}_t.tfm")
scaleTranformFileName = os.path.join(mainOutputDir, transformSubDir, f"{nodeName}_scale.tfm")
if not os.path.exists(translationTransformFileName):
Expand Down

0 comments on commit 0dc40eb

Please sign in to comment.