Wie werden NIfTI-Dateien mit Original-DICOM-Dateien abgeglichen? [geschlossen]Python

Python-Programme
Guest
 Wie werden NIfTI-Dateien mit Original-DICOM-Dateien abgeglichen? [geschlossen]

Post by Guest »

Beim Versuch, NIfTI-Dateien (Segmentierungsergebnisse von TotalSegmentator) mit den ursprünglichen DICOM-Dateien in Jupyter Notebook abzugleichen, ist ein Problem aufgetreten. Trotz meiner Bemühungen, eine geeignete affine Matrix für die DICOM-Daten zu erstellen, stimmen die Achsen nicht wie erwartet überein.
Hier ist der Arbeitsablauf, dem ich gefolgt bin:
Ich habe die DICOM-Dateien nach Instanznummer sortiert:

Code: Select all

dicom_files = sorted(
[os.path.join(dcm_folder, f) for f in os.listdir(dcm_folder) if f.endswith('.dcm')],
key=lambda x: pydicom.dcmread(x).InstanceNumber
)
Mithilfe der DICOM-Metadaten habe ich eine affine Matrix erstellt:

Code: Select all

ds1 = pydicom.dcmread(dicom_files[0])
ds2 = pydicom.dcmread(dicom_files[1])

a = np.array(ds1.ImageOrientationPatient[:3])
b = np.array(ds1.ImageOrientationPatient[3:])
slice_diff = (np.array(ds1.ImagePositionPatient) - np.array(ds2.ImagePositionPatient)) / (
ds1.InstanceNumber - ds2.InstanceNumber
)
c = slice_diff / np.sum(slice_diff**2) ** 0.5

matrix = np.zeros((4, 4))
matrix[3, 3] = 1
matrix[:3, 0] = b
matrix[:3, 1] = a
matrix[:3, 2] = c
affine_matrix = matrix
Ich habe die Transformation zwischen den NIfTI- und DICOM-Ausrichtungen mit nib.orientations.ornt_transform
berechnet

Code: Select all

transform_ornt = nib.orientations.ornt_transform(start_ornt, end_ornt)
Ich habe die berechnete Transformation auf die NIfTI-Daten angewendet:

Code: Select all

reoriented_nifti = nib.orientations.apply_orientation(nii_data, transform_ornt)
Trotz dieser Schritte ist die Ausrichtung der NIfTI- und DICOM-Dateien immer noch falsch. Anscheinend sind die Achsen nicht richtig ausgerichtet.
Was ich versucht habe:
  • Ich habe mehrere Fälle mit unterschiedlichen Ausrichtungen getestet und festgestellt, dass Achsen unter bestimmten Bedingungen in alle drei Richtungen kippen können.
  • Beim Betrachten der Dateien in 3D Slicer oder ITK-Snap sieht die Ausrichtung jedoch fast korrekt aus hat leichte Offsets.
  • Ich habe mir die NIfTI-Transformationsmatrix angesehen in ITK-Snap (über Image Layer Inspector -> Info -> Reorient -> Voxel to World Matrix) und festgestellt, dass die NIfTI-Affinmatrix korrekt erscheint.
  • Allerdings in In den DICOM-Dateien scheinen bestimmte Achsen manchmal vertauscht zu sein.
Meine Fragen:
  • Gibt es ein Problem damit, wie ich die affine Matrix erstellt habe? die DICOM-Dateien? Wie kann unter Berücksichtigung der häufigen Achsenumkehrungen in den DICOM-Dateien am besten sichergestellt werden, dass die NIfTI- und DICOM-Dateien perfekt aufeinander abgestimmt sind?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post