VTK ImageData 与ITK、SimpleITK

Inhaltsverzeichnis

VTK, ITK, SimpleITK

 ITK

VTK-Bilddatenstruktur

Bildheader-Informationen

Bilddaten

vtkImageData


VTK, ITK, SimpleITK

Für die medizinische Bildverarbeitung wird empfohlen, ITK+VTK zu verwenden, ITK wird als zugrunde liegender Bildverarbeitungsalgorithmus verwendet, VTK wird zur visuellen Anzeige verwendet und itkImageToVTKImageFilter wird zwischen ITK und VTK verwendet

vtk_image = itk.vtk_image_from_image(Bild)

image = itk.image_from_vtk_image(vtk_image)

VTK wurde auf Basis der dreidimensionalen Funktionsbibliothek OpenGL mit einer objektorientierten Entwurfsmethode entwickelt, schirmt die Details ab, denen wir häufig im Entwicklungsprozess von Visualisierungen begegnen, und kapselt einige häufig verwendete Algorithmen.

 ITK

In der Schnittstelle des Python-Wörterbuchs zu Bildmetadaten werden die Schlüssel für die räumlichen Metadaten,  'origin''spacing' und  'direction' , in umgekehrter Reihenfolge von image.GetOrigin(), image.GetSpacing(), image.GetDirection( ), um mit der NumPy-Array-Indexreihenfolge konsistent zu sein,   die sich aus Pixelpuffer-Array-Ansichten auf dem Bild ergibt.

VTK-Bilddatenstruktur

Der Inhalt digitaler Bilddateien besteht aus zwei Teilen:

Bild-Header-Informationen und -Daten.

Bildheader-Informationen

Die Bildkopfinformationen definieren die grundlegenden Informationen des Bildes,

Es umfasst hauptsächlich die Startposition (Origin), den Pixelabstand (Space) und die Dimension (Dimension).

Durch diese drei Parameter können die räumliche Position und der Maßstab des Bildes bestimmt werden.

Ein Bild kann als regelmäßiges Gitter im Raum betrachtet werden, und jede kleinste Einheit im Gitter wird als Pixel (zweidimensional) oder Voxel (dreidimensional) bezeichnet.

Auf diese Weise ist die Anzahl der Pixel oder Voxel des Gitters in jeder Richtung die Abmessung des Bildes in dieser Richtung .

Der Pixelindex gibt die Position jedes Pixels im Bildraster an, bei dem es sich um die Rasterkoordinate innerhalb des Bildes handelt .

Bei medizinischen Bildern hat jedes Bild zusätzlich zu den internen Koordinaten auch eine Weltkoordinate .

  • Die Ursprungsposition (Origin), die die Position von [0,0,0] (erster Pixelindex) im 3D-Raum ist
  • Pixelintervall (Abstand), (die Größe der Voxel in jeder Richtung x, y, z)
  • Bilddimension (Dimension), wie viele Voxeleinheiten gibt es in jeder Richtung (wie in der kleinen Kugel gezeigt)

Auf diese Weise kann die Weltkoordinatenposition jedes Pixels durch die Startpunktposition, das Pixelintervall und den Pixelindex berechnet werden .

Weltkoordinatenberechnung :

RAS-Konvertierung in Pixelkoordinaten

Bei einem zweidimensionalen Bild als Beispiel ist die dritte Dimension 1, der Punkt ist 0 und das Pixelintervall ist 1

GetOutput()->GetOrigin(origin) ( CenterImage() trifft auf SetOutputOrigin() )

Berechnen Sie die Breite und Höhe des neuen Bildes gemäß der Dimension und dem Pixelabstand des Bildes zu (512-1)*5, der Ursprung des ursprünglichen Bildes liegt bei (0, 0, 0), jetzt in der Mitte des Bild in den Ursprung übersetzt wird, beträgt die Übersetzungsmenge (-(512-1)*5/2,(512-1)*5/2, 0) = (-1277,5, -1275,5,0).

Mit Ursprung und Abstand kann die entsprechende Position jedes (Bildkoordinaten-) Voxels in anatomischen Koordinaten berechnet werden .

Der Unterschied zwischen Ausdehnung (Bereich) und Dimension (Dimension)

extent=[0,511,0,511,0,49]
dimensions=[512,512,50]

Diese Figur stellt ein 4x2x3-Bild dar, was die Dimension des Bildes ist, und jede kleine Kugel stellt ein Pixel dar; und

Der Ursprung des Bildes ist (5.1,10.0,6.5),

Das Intervall zwischen zwei Pixeln stellt das Pixelintervall dar, und das Pixelintervall in jeder Richtung beträgt 1,5, 1,5 und 1,8.

Bilddaten

Bilddaten sind der Pixelwert eines Bildpixels, der im Allgemeinen in einem eindimensionalen Array ausgedrückt und gespeichert wird. Wenn der Pixelindex und die Bilddimension bekannt sind, kann der jedem Pixel entsprechende Pixelwert berechnet werden. Normalerweise ist der Pixelwert eines Bildes ein Skalar, wie etwa ein allgemeines Graustufenbild.

Die meisten Bilder in der medizinischen Bildverarbeitung sind Graustufenbilder.

Hierbei ist auf den Datentyp des Grauwerts des Graubilds zu achten, der bei der allgemeinen Graubildverarbeitung nicht berücksichtigt werden muss, da sein Wertebereich standardmäßig 0-255 beträgt und durch ein unsigned dargestellt werden kann Klasse vom Typ char.

In der medizinischen Bildverarbeitung reichen 256 Graustufen jedoch bei weitem nicht aus, sodass der Graustufenbereich oft größer als 256 Stufen ist.

Der Pixeldatentyp gängiger medizinischer Bilder ist unsigned short und der Graustufenbereich liegt zwischen 0 und 65536.

Außerdem werden manchmal int-, float- oder sogar double-Typen aus Gründen der Genauigkeit verwendet, sodass besondere Aufmerksamkeit erforderlich ist.

vtkImageData

vtkImageData kann verwendet werden, um Reader zu lesen und Writer von Bildern in verschiedenen Formaten zu speichern

Die Daten des vtk 3D-Modells umfassen hauptsächlich: Punkt, Linie, Kante, Oberfläche, Attribut Skalar von Punkt, Linie, Oberfläche, Farbtabellen-Nachschlagetabelle,

 xyz012,zxy201

PUNKTE 989 Float//Insgesamt 989 Punkte und die Koordinaten der Punkte werden im Float-Typ gespeichert.
-0.300020 -0.500000 0.000000//Dreidimensionale x-, y-, z-Koordinaten des 0. Punktes

Referenzlink:

05-Anwendung von VTK in der Bildverarbeitung (1)-Kartenkern

Kurzanleitung – ITKPythonPackage-Dokumentation

VTK: Hinweise zur Beziehung zwischen Geometrie, Topologie, Zelle, Kellerstrahl und Polydaten

Supongo que te gusta

Origin blog.csdn.net/qq_28838891/article/details/127518394
Recomendado
Clasificación