-
Die
Erfindung betrifft ein Verfahren zur Beschleunigung der nicht-starren
Bildregistrierung unter Verwendung von Parallelprozessoren. Bildregistrierung
ist eine Aufgabenstellung, die vor allem in der medizinischen Bildverarbeitung
von Bedeutung ist. Aufgrund der Vielzahl der Untersuchungsmöglichkeiten
können
die medizinischen Bilder zu unterschiedlichen Zeitpunkten oder mit
unterschiedlichen Geräten
aufgenommen werden. Die Zusammendarstellung dieser Bilder kann dem
Arzt bei der Diagnose wesentlich helfen. Dafür ist die geometrische Eins-zu-Eins
Korrespondenz der zu bewertenden Objekte erforderlich. Die Aufgabe
der Bildregistrierung besteht darin, diese Korrespondenz zu bestimmen.
-
Anwendungsbereich
der Bildregistrierung ist beispielsweise die Digitale Subtraktions-Angiographie
(DSA). DSA ist ein gängiges
Verfahren zur Gefäßdarstellung.
Es wird zunächst
ein "Maskenbild" – ein digitales Röntgenbild
vor Kontrastmittelgabe – aufgenommen.
Dann erfolgen die Injektion des Röntgenkontrastmittels und die
Aufnahme von "Kontrastbildern" – eine Serie zeitlich aufeinander
folgender Bilder, in denen die Gefäße mit Kontrastmittel gefüllt sind.
Im nächsten
Schritt wird das Maskenbild mit jedem der Kontrastbilder subtrahiert,
so dass nur noch die Zielstrukturen – also die kontrastmittelgefüllten Gefäße – dargestellt
sind. Die resultierenden Differenzbilder sind aber nur diagnostisch
aussagefähig, wenn
die Strukturen in den beiden Eingabebildern gegeneinander ausgerichtet
sind.
-
Da
die Bilder zu unterschiedlichen Zeitpunkten aufgenommen sind, besteht
häufig
eine räumliche
Veränderung
der Strukturen, meistens durch Patientenbewegung. Obwohl eine Vielzahl
von Ansätzen
existiert, die Patientenbewegung vor und während der Aufnahme zu vermeiden,
lassen sich aber nicht alle Arten von Bewegungen verhindern, beispielsweise
die Herzschläge oder
der Drang nach Husten oder Schlucken. Die rückwirkende Registrierung der
zwei zu subtrahierenden Bilder ist daher erforderlich. Dafür wird eine
Transformation bestimmt, die die Bewegung mathematisch beschreibt.
Die auftretende geometrische Transformation besteht im Wesentlichen
aus Translationen, aber auch geringe Rotationen, Skalierungen und
sogar Deformationen sind vorhanden. Infolgedessen reicht die starre
Registrierung üblicherweise
nicht aus. Die nicht-starren Verfahren liefern zwar deutlich bessere
Ergebnisse, sind aber auch mit hohem Rechenaufwand verbunden.
-
Ein
bekannter Vertreter der nicht-starren Verfahren zur Bewegungskorrektur
ist beispielsweise das Block-Matching. Der Verschiebungsvektor eines Pixels
wird näherungsweise
bestimmt, indem man die Ähnlichkeit
zwischen den beiden Blöcken
optimiert, die das Pixel im jeweiligen Bild umfassen (2).
Um präzise
Registrierungsergebnisse zu erlangen, sind robuste Ähnlichkeitsmaße gefragt.
Wegen des Zuflusses von Kontrastmittel besteht in den beiden Frames
eine Veränderung
des durchschnittlichen Intensitätsspiegels;
somit sind die Ähnlichkeitsmaße, die
die Intensitätsdifferenz
direkt analysieren, für
DSA nicht geeignet. Dagegen bestimmen die Histogramm-basierten Ähnlichkeitsmaße die Korrespondenz
nicht mit den eigentlichen Intensitätsdisparitäten, sondern mit der relativen
Häufigkeit
der Disparitäten.
Es wurde in "Image
Enhancement in Digital X-Ray Angiography" von E. Meijering, PhD thesis, Image
Sciences Institute, Utrecht University, 2000, gezeigt,
dass solche Ähnlichkeitsmaße sachgemäß robust
gegen den Kontrastmittelzufluss sind.
-
Die
Berechnung von Histogrammen ist bekanntermaßen rechenintensiv. Folglich
ist der gesamte Algorithmus beim heutigen Stand der Technik nicht
effizient genug, um dem Arzt sofort nach den Aufnahmen die registrierten
Bilder zur Verfügung
zu stellen.
-
Die
Aufgabe wird erfindungsgemäß durch ein
Verfahren zur nicht-starren Bildregistrierung mittels Parallelprozessoren
mit folgenden Schritten gelöst:
- – Anwendung
eines Block-Matching-Algorithmus,
- – Erstellung
eines Histogramms,
- – Ermittlung
Histogramm-basierter Ähnlichkeitsmaße und
- – Ermittlung
der Verschiebungsvektoren.
-
Durch
die Verwendung von Parallelprozessoren wird der Registrierungsablauf
beschleunigt. Ein wesentliches Mitglied in der Familie der Parallelprozessoren
ist die Grafikkarte. Grafikkarten dienen als Schnittstelle zur visuellen
Ausgabe von Daten auf dem Bildschirm. In den letzten Jahren ist
das Leistungsvermögen
von Grafikkarten enorm gewachsen. Die Entwicklung der Grafikkarten
ist schneller als Moore's
Law und übertrifft
die CPU-Entwicklung.
-
Über die
OpenGL- oder DirectX-API kann man möglichst direkt auf die Hardware
zugreifen. Diese Eigenschaft ermöglicht
die Abbildung von allgemein gültigen
(nichtgrafischen) Aufgaben auf die Grafik-Hardware.
-
In
vorteilhafter Weise kann das Verfahren folgende Schritte aufweisen:
- – Eine
zweidimensionale nicht-starre Bildregistrierung erfolgt für Röntgenbilder
der Digitalen Subtraktions-Angiographie,
und
- – der
Block-Matching-Algorithmus wird auf einer Grafikkarte mit Parallelprozessoren
durchgeführt, der
mittels Histogramm-basierten Ähnlichkeitsmaßen die
Verschiebungsvektoren berechnet.
-
Erfindungsgemäß lässt sich
eine Datenübertragung
zwischen CPU und GPU vermeiden, wenn die Verschiebungsvektoren auf
der Grafikkarte gespeichert werden.
-
Es
hat sich als vorteilhaft erwiesen, wenn die Parallelprozessoren
den Block-Matching-Algorithmus für
alle Blöcke
parallel und zugleich individuell ausführen.
-
In
vorteilhafter Weise können
die Parallelprozessoren das Histogramm für ein Bild bzw. einen Bildausschnitt
mit Hilfe von Framebuffer-Alpha-Blending erstellen und die Ähnlichkeitsfunktion
mittels Sum-Reduction berechnen.
-
Erfindungsgemäß können die
Parallelprozessoren das Suchen automatisch terminieren, wenn für alle Blöcke die
optimale Verschiebung gefunden wurde, wobei die Ähnlichkeitswerte zurück zur CPU gelesen
und dort bewertet werden können.
-
Es
hat sich als vorteilhaft erwiesen, wenn die Parallelprozessoren
die inkonsistenten Verschiebungen automatisch ermitteln und ggf.
korrigieren.
-
In
vorteilhafter Weise können
die Verschiebungsvektoren auf die jeweiligen Blockmitten abgebildet
und das vollständige
Vektorfeld durch lineare Interpolation berechnet werden.
-
Es
hat sich als vorteilhaft erwiesen, wenn der Block-Matching-Algorithmus
für zweidimensionale oder
dreidimensionale Bildregistrierung komplett auf Parallelprozessoren
implementiert ist.
-
Die
Robustheit der Ähnlichkeitsfunktion
wird garantiert und das Bild kann der Einfachheit halber in eine
ganzzahlige Anzahl von Blöcken
geteilt werden, wenn erfindungsgemäß die Blockgröße 64×64 Pixel beträgt.
-
In
vorteilhafter Weise können
zuerst eine Pixel-Registrierung und anschließend eine Subpixel-Registrierung
durchgeführt
werden.
-
Das
erfindungsgemäße Verfahren
zur Beschleunigung der zweidimensionalen nicht-starren Bildregistrierung
für Digitale
Sub traktions-Angiographie (DSA) betrifft ein auf einer Grafikkarte
abgebildeten Block-Matching Algorithmus, der mittels Histogramm-basierten Ähnlichkeitsmaßen die
Verschiebungsvektoren ermittelt und folgende Schritte aufweist:
- a) Lade das Maskenbild und das erste Kontrastbild
als Texturen auf die Grafikkarte,
- b) initialisiere zwei Texturen zur Speicherung der Verschiebungsvektoren
und der Ähnlichkeitswerte
für alle
Blöcke,
- c) verschiebe die Blöcke
im Maskenbild mit den Vektoren in einer der Texturen gemäß Schritt
b), berechne die Differenz beider Bilder und speichere das Resultat
in einer anderen Textur,
- d) erstelle die Disparitätshistogramme
gleichzeitig für
alle Blöcke,
- e) berechne die Ähnlichkeitsfunktion
mittels "Sum-Reduction",
- f) vergleiche den aktuellen Ähnlichkeitswert
mit dem der vorherigen Suchposition und bestimme die nächste Suchposition,
- g) lese die Ähnlichkeitswerte
zurück
zu CPU und bestimme, ob für
alle Blöcke
die optimale Verschiebung gefunden wurde. Falls nein, gehe zurück zu Schritt
b); falls ja, gehe weiter zu Schritt h),
- h) ermittle und korrigiere die inkonsistenten Verschiebungen,
- i) bilde die Vektoren auf entsprechende Blockmitten ab und berechne
das vollständige
Vektorfeld mittels bilinearer Interpolation und
- j) lade das nächste
Kontrastbild und gehe zu Schritt b). Das Programm ist terminiert,
wenn alle Kontrastbilder bearbeitet sind.
-
Erfindungsgemäß kann ein
kompletter Algorithmus für
dreidimensionale nicht-starre Bildregistrierung auf Parallelprozessoren
implementiert sein.
-
Die
Erfindung ist nachfolgend anhand von in der Zeichnung dargestellten
Ausführungsbeispielen näher erläutert. Es
zeigen:
-
1 Ein
das erfindungsgemäße Verfahren beschreibende
Flussdiagramm,
-
2 eine
Skizze zur Erklärung
des Block-Matching,
-
3 eine
Darstellung der Gegebenheiten bei der erschöpfende Suche,
-
4 eine
Darstellung zur Erläuterung
der erfindungsgemäßen konjugierten
Richtungssuche,
-
5 eine
Darstellung zur Erläuterung
der erfindungsgemäßen Sum-Reduction
nach der Ping-Pong-Methode,
-
6 ein
Maskenbild der Schulter; die Gefäße sind
frei von Kontrastmittel,
-
7 ein
Maskenbild der Schulter; Blutgefäße mit Kontrastmittel,
-
8 ein
Subtraktionsbild vor der Registrierung, bei dem starke Artefakte
vorhanden sind,
-
9 ein
Subtraktionsbild mit GPU-Registrierung mit Ganzpixel-Genauigkeit
mit erheblich weniger Artefakten,
-
10 ein
Subtraktionsbild mit GPU-Registrierung mit Subpixel-Genauigkeit,
bei dem die Artefakte fast verschwunden sind,
-
11 ein
Subtraktionsbild mit CPU-Registrierung zum Vergleich,
-
12 ein
Maskenbild des Kopfes; die Gefäße sind
frei von Kontrastmittel,
-
13 ein
Maskenbild des Kopfes; Blutgefäße mit Kontrastmittel,
-
14 ein
Subtraktionsbild vor der Registrierung, bei dem geringe Artefakte
vorhanden sind,
-
15 ein
Subtraktionsbild mit GPU-Registrierung mit Ganzpixel-Genauigkeit,
bei dem keine Reduktion der Artefakte zu beobachten ist,
-
16 ein
Subtraktionsbild mit GPU-Registrierung mit Subpixel-Genauigkeit,
bei dem Artefakte reduziert werden, und
-
17 ein
Subtraktionsbild mit CPU-Registrierung zum Vergleich, bei dem Artefakte
nur zum Teil entfernt wurden.
-
In
der 2 ist schematisch der Grundgedanke des Block-Matching-Algorithmus
dargestellt, bei dem nach einer Verschiebung eines Punktes 1 von
Interesse (POI) mit (xi,yi)
die Verschiebung ermittelt werden soll, wobei ihn ein umgebendes
Fenster 2 kennzeichnet. Gesucht wird das Fenster 3,
das dem Fenster 2 am ähnlichsten
ist und einen Verschiebungsvektor 4 aufweist, wobei der
POI mit (xi + Δx, yi + Δy) sich in
der Mitte dieses Fensters befindet.
-
Anhand
der 3 werden nun die Bedingungen der bekannten vollen
Suche erläutert.
Das Suchfenster 5 weist eine Höhe von p und eine Breite von q
auf. Die Kanten des Suchfensters 5 haben zu den Außenkanten
des Bildes einen Abstand w, so dass Außenkanten des Bildes eine Abmessung
von p + 2w bzw. q + 2w aufweisen. Bei der vollen Suche wird nun das
Suchfenster 5 über
die gesamte Fläche
des Bildes bewegt, so dass sich ein Aufwand von (2w + 1)2 ergibt.
-
Bei
der erfindungsgemäßen Richtungssuche startet
die Suche entlang der x-Achse, wobei der Startpunkt (0) mit seinen
beiden Nachbarpunkten (1) verglichen wird. Dann wird in der Richtung
mit dem besten Ergebnis weitergesucht. Als Nächstes werden der Punkt (2)
und dann der Punkt (3) gefunden, wobei der Punkt (3) eine Verschlechterung
ergab. Nunmehr wurde von Punkt (2) entlang der y-Achse in beiden
Richtungen weitergesucht, wobei der obere der Punkte (4) das beste
Ergebnis erbrachte, so dass in dieser Richtung erst der Punkt (5)
und dann der Punkt (6) verglichen wird. Da der Punkt (6) wieder eine
Verschlechterung mit sich brachte, ist der Punkt (5) der gesuchte
Punkt mit einer Verschiebung 4.
-
Block Matching:
-
Grafikprozessoren
(Graphics Processor Units, GPU) besitzen die Eigenschaft, große Datenmengen
parallel verarbeiten zu können.
Infolgedessen soll die Implementierung des Block-Matching-Algorithmus entsprechend angepasst
werden. Wird Block-Matching auf die CPU abgebildet, dann werden üblicherweise
die Blöcke
der Reihe nach (innerhalb des Suchraums) verschoben und die Ähnlichkeiten
sequentiell untersucht. Um das Leistungsvermögen der GPU auszunutzen, ist
es effizienter, das ganze Bild mit jedem der zu untersuchenden Bewegungsvektoren
zu verschieben und dabei gleichzeitig die Ähnlichkeitsfunktion zu analysieren.
-
Andererseits
müssen,
um die optimierten Suchverfahren, wie z.B. die konjugierte Richtungssuche,
zu benutzen, die Bewegungsvektoren für die Blöcke individuell berechnet werden
können.
-
In
dem Artikel "Fast
Image Interpolation for Motion Estimation using Graphics Hardware" von Kelly et al.,
Proceedings of the SPIE, Volume 5297, Seiten 184 bis 194, 2004,
sind einige Implementierungen von Block-Matching auf Grafikkarten
vorhanden, aber nur erschöpfende
Suchverfahren (exhaustive search) wurden dazu verwendet. Erfindungsgemäß wurde
beim Gegenstand vorliegender Patentanmeldung jedem Block ein Index
zugewiesen. Dies ermöglicht,
die Blöcke
individuell und gleichzeitig zu bearbeiten. Zudem werden die Verschiebungsvektoren
auf der Grafikkarte gespeichert, um die Datenübertragung zwischen CPU und
GPU zu vermeiden.
-
Es
gibt zwei Faktoren, die den Rechenaufwand entscheiden, nämlich die
Anzahl der Blöcke und
die Blockgröße. Offensichtlich
ist der Aufwand zu hoch, wenn für
jedes Pixel ein Block definiert würde. Deshalb benutzen wir das
bekannte kontrollpunktbasierte Registrierungsverfahren und definieren
die Kontrollpunkte mit Hilfe eines regulären Gitters. Die Größe eines
Blocks hängt
mit der Robustheit der Ähnlichkeitsfunktion
zusammen: Ein größerer Block beinhaltet
zwar mehr statistische Information und liefert somit zuverlässigere
Ergebnisse, ist aber rechenintensiver. Bei Meijering wird eine Größenordnung von
51×51
Pixel für
angemessen gehalten. In der vorliegenden Arbeit haben wir die Größe von 64×64 Pixel
genommen, so dass (a) die Robustheit der Ähnlichkeitsfunktion garantiert
wird, und (b) das Bild der Einfachheit halber in eine ganzzahlige
Anzahl von Blöcken
geteilt werden kann, denn die medizinischen Bilder liegen meistens
in einer Größenordnung
von Zweierpotenzen vor.
-
Histogrammerstellung:
-
Histogramm-basierte Ähnlichkeitsmaße haben
sich als robuste Gütemaße gegen
Veränderung des
Intensitätsspiegels
bei der DSA bewährt.
Die Bewertung solcher Gütemaße beansprucht
aber den größten Teil
der Rechenzeit. Ein Histogramm auf der CPU wird meistens als Feld
implementiert, das so lang ist, wie es mögliche Intensitätswerte
gibt. Als Indizes werden dabei die Intensitätswerte gewählt. Die Pixel mit gleichem
Intensitätswert
werden dabei in dem entsprechenden Feldelement (Histogrammeintrag)
zusammen gezählt.
Das Histogramm wird zunächst
mit Nullen initialisiert. Dann wird das zu verarbeitende Bild durchlaufen
und bei jedem Pixel der entsprechende Histogrammeintrag um Eins
erhöht.
-
Wie
oben beschrieben, benötigt
man für
die Histogrammerstellung zwei Operationen gleichzeitig: Gathering
(Intensitäten
der Pixel abrufen) und Scattering (bei jedem Pixel den entsprechenden
Histogrammeintrag um Eins erhöhen).
Dies war nicht möglich
auf einer Grafikkarte der älteren
Generation, denn im Vertex-Shader war nur Scattering und im Pixel-Shader
nur Gathering möglich.
In der vorliegenden Erfindung wurde die neue Besonderheit, Vertex-Texturing,
eingesetzt. Mit Hilfe von Vertex-Texturing ist nun im Vertex-Shader auch Gathering
realisierbar.
-
Ein
anderes Merkmal, das im Sinne der Erfindung benutzt wird, ist das
Framebuffer-Alpha-Blending. Alpha-Blending mischt die Farben der Pixel
im Framebuffer, die auf die gleiche Position im Bildschirm ausgegeben
werden. In dieser Arbeit werden die Pixel additiv gemischt. Im ersten
Durchlauf (rendering pass) werden zwei Bilder pixelweise subtrahiert
und das Resultat in eine Textur geschrieben. Im zweiten Durchlauf
wird diese Textur dem Vertex Shader als Input übergeben, wobei die Intensität als x-Koordinate
und der Blockindex jedes Texels als y-Koordinate ausgegeben. Somit werden
alle Texels t innerhalb eines Blockes, die denselben Intensitätswert aufweisen,
auf dieselbe Position des Bildschirms ausgegeben. Die Intensität des ausgegebenen
Pixels p repräsentiert
die Häufigkeit
der Texels t; die Position des Pixels p weist auf die Intensität und die
Blockzuordnung der Texels t hin. Vorteilhaft ist dabei, dass die
Histogramme mittels dieser Vorgehensweise für alle Blöcke parallel auf der GPU erstellt werden
können.
-
Berechnung der Ähnlichkeitsmaße:
-
Im
Falle der optimalen Ausrichtung weist nur eine geringe Anzahl von
Differenzwerten eine relativ hohe Häufigkeit auf, während die
Mehrheit der Differenzwerte eine relativ niedrige Häufigkeit
besitzen. Mit Histogramm-basierten Ähnlichkeitsmaßen wird diese
Tatsache ausgenutzt, indem eine gewichtete Summation über die
Histogrammeinträge
durchgeführt
wird. Geeignete Beispiele dafür
sind z.B. die Energie des Dispari tätshistogramms und die Entropie des
Disparitätshistogramms,
wie es in Meijering beschrieben ist.
-
Während die
Grafikkarten die Daten parallel verarbeiten, gibt es keinen globalen
Akkumulator. Infolgedessen muss die Summation über mehrere Durchläufe erfolgen,
beispielsweise durch fortschreitendes Downsampling. Dazu wird in
jedem Durchlauf die lokale Summe von n×n Pixel einem Pixel der Zieltextur
zugewiesen, wie dies anhand der 5 erläutert wird.
Ein Bild wird in jedem Durchlauf um den Faktor n entlang jeder Achse
reduziert; für
ein Bild der Größe N×N werden
logn N Durchläufe
benötigt. Dieses
Verfahren ist auch als "Sum-Reduction" bekannt. Die 5 zeigt
auch, dass für
diese Operation nur zwei Texturen verwendet werden, um die Gefahr von
Speicherdefragmentierung zu vermeiden. Dabei werden von je 2×2 Pixeln
im Target A die Summen gebildet und in je einem Pixel im Target
B abgespeichert. Danach werden wieder je 2×2 Pixel im Target B zusammengefasst
und in einem Pixel im Target A abgespeichert, so dass dort die Summe
von 4×4
Pixeln enthalten ist.
-
Suchverfahren:
-
Ein
wesentlicher Aspekt für
das Block-Matching ist die Wahl eines geeigneten Suchverfahrens. Die
erschöpfende
Suche ist naheliegend, aber zugleich auch sehr rechenintensiv. Dabei
werden alle (2w + 1)2 möglichen Positionen im Suchraum
untersucht, wobei w die Anzahl der Pixel in alle Richtungen ist
(2). Ein solches Verfahren ist damit nur bei kleinerer
Datenmenge akzeptabel und wird hier nicht verwendet.
-
Verschiedene
Optimierungsverfahren wurden untersucht. Ein häufig verwendetes Verfahren
ist die konjugierte Richtungssuche (conjugate direction search),
wie dies in dem Artikel "Predictive
Coding Based an Efficient Motion Estimation" von Srinivasan et al., IEEE Transactions
an Communications, Volume 33, Issue 8, Aug 1985, Seiten 888 bis
896, wobei die Suche zuerst entlang einer Richtung (z.B.
horizontal) stattfindet, bis das Optimum erreicht wird. Danach erfolgt
von diesem Punkt aus die Suche entlang der anderen Richtung (z.B.
vertikal) (3). Die Komplexität bei der
konjugierten Richtungssuche lässt
sich einfach ableiten: Bei einer ganzzahligen Genauigkeit durchsucht
man fünf
Positionen im besten Fall und (2w + 3) im schlechtesten Fall.
-
Im
Sinne der Erfindung wurde das Suchverfahren vollständig auf
der Grafikkarte implementiert. Dafür werden zwei Texturen verwendet,
deren Elemente vier-dimensionale Vektoren sind: In den Rot- und
Grünkanälen stehen
jeweils die x- und y-Komponente des Verschiebungsvektors; im Alpha-Kanal wird
der aktuelle Ähnlichkeitswert
gespeichert und der Blau-Kanal wird verwendet, um den Zustand des Suchvorgangs
zu speichern. Es werden zwei Texturen benötigt, denn bei Verwendung von
nur einer Textur können
die Schreib- und Leseoperation nicht in einem Durchlauf erfolgen.
-
Wird
für alle
Blöcke
der jeweils optimale Verschiebungsvektor gefunden, soll der Algorithmus
sofort terminiert werden. Dazu werden die Texel in der zuletzt aktualisierten
Textur mittels Sum-Reduction akkumuliert und zurück in die CPU gelesen. Der
Wert im Blau-Kanal weist darauf hin, ob die optimale Verschiebung
schon gefunden wurde.
-
Subpixel-Genauigkeit:
-
Auch
Verzerrungen von einem Bruchteil eines Pixels können zu signifikanten Artefakten
in dem subtrahierten Bild führen.
Deshalb soll die Berechnung der Verschiebungsvektoren mit Subpixel-Genauigkeit
ausgeführt
werden. Ein verwendetes Verfahren bewertet die Ähnlichkeitsfunktion, wenn eines der
Bilder um den Bruchteil eines Pixels verschoben wird. Dazu muss
das verschobene Bild durch Resampling wieder erzeugt werden. Auf
der Grafikkarte kann diese Operation mittels bilinearer Interpolation
sehr schnell durchgeführt
werden. In der vorliegenden Erfindung erfolgt das Suchen hierarchisch, d.h.,
zuerst wird die optimale Verschiebung mit der ganzzahligen Genauigkeit
gefunden, dann wird mit einer Subpixel-Genauigkeit von 0,1 Pixel
weitergesucht. Zudem haben wir erfindungs gemäß den Suchraum für Subpixel-Genauigkeit
auf [–0.5,
0.5]×[-0.5, 0.5]
beschränkt,
unter der Annahme, dass die gesuchte Verschiebung näher an der
gefundenen ganzzahligen Verschiebung liegt.
-
Erkennung und Korrektur der Inkonsistenz:
-
Die
Blockgröße und das Ähnlichkeitsmaß sollen
so gewählt
werden, dass der Algorithmus zuverlässige Ergebnisse liefert. Dennoch
kann gelegentlich auftretende Inkonsistenz nicht vollständig verhindert
werden. Das Programm soll in der Lage sein, solche Inkonsistenzen
automatisch zu erkennen und ggf. zu korrigieren. In der vorliegenden
Arbeit erfolgt die Inkonsistenzprüfung, indem man einen Vektor
mit seinen Nachbarn in der 8-Nachbarschaft vergleicht. Als Kriterien
werden das Verhältnis der
Länge und
der Winkel zwischen den Vektoren genommen. Sind bei mehr als der
Hälfte
der Nachbarvektoren diese Kriterien erfüllt, wird der Vektor als inkonsistent
bezeichnet. Ein inkonsistenter Vektor wird ersetzt durch den Durchschnittsvektor
seiner konsistenten Nachbarn.
-
Interpolation der Verschiebungsvektoren:
-
Der
Verschiebungsvektor für
einen Block wurde gesucht, indem alle Pixel innerhalb dieses Blockes
mit demselben Vektor verschoben wurden. Wenn aber der gefundene
Vektor anschließend
auf dieselbe Weise auf die Pixel abgebildet würde, entstehen Artefakte an
den Rändern
der Blöcke.
Deshalb sollen sich die Vektoren nur auf die entsprechenden Blockmitten
beziehen; das komplette Vektorfeld erhält man mittels bilinearer Interpolation.
Während das
ganze Bild in Blöcke
zerlegt ist, befinden sich die Blockmitten alle innerhalb des Bildes.
Das daraus resultierende Vektorfeld kann somit das Bild nicht vollständig abdecken.
Dieses Problem haben wir gelöst, indem
wir zusätzliche
Punkte außerhalb
des Bildes hinzufügen
und den Null-Vektor an diesen Punkten zuweisen.
-
Algorithmus:
-
Die
vorliegende Erfindung betrifft ein Verfahren zur Beschleunigung
der zweidimensionalen nicht-starren Bildregist rierung für Digitale
Subtraktions-Angiographie unter Verwendung von modernen Grafikkarten.
Dazu wird ein Block-Matching-Algorithmus
auf der Grafikkarte abgebildet, der mittels Histogramm-basierten Ähnlichkeitsmaßen die
Verschiebungsvektoren mit folgenden Schritten berechnet:
- S1 Lade das Maskenbild und das erste Kontrastbild
als Texturen auf die Grafikkarte.
- S2 Initialisiere zwei Texturen zur Speicherung der Verschiebungsvektoren
und der Ähnlichkeitswerten
für alle
Blöcke.
- S3 Verschiebe die Blöcke
im Maskenbild mit den Vektoren in einer der Texturen von Schritt
S2, berechne die Differenz der beiden Bilder und speichere das Resultat
in einer Textur.
- S4 Erstelle die Disparitätshistogramme
gleichzeitig für
alle Blöcke.
- S5 Berechne die Ähnlichkeitsfunktion
mittels "Sum-Reduction".
- S6 Vergleiche den aktuellen Ähnlichkeitswert
mit dem der vorherigen Suchposition und bestimme die nächste Suchposition.
- S7 Lese die Ähnlichkeitswerte
zurück
zu CPU und bestimme, ob für
alle Blöcke
die optimale Verschiebung gefunden wurde.
- S8 Falls nein, gehe zurück
zu Schritt S2; falls ja, gehe weiter zu Schritt S9.
- S9 Ermittle und korrigiere die inkonsistenten Verschiebungen.
- S10 Bilde die Vektoren auf entsprechende Blockmitten ab und
berechne das vollständige
Vektorfeld mittels bilinearer Interpolation.
- S11 Lade das nächste
Kontrastbild.
- S12 Sind alle Kontrastbilder bearbeitet? Falls nein, gehe zu
Schritt S2; falls ja, Programm terminiert.
-
Im
Folgenden werden noch zwei Berechnungsbeispiele angegeben, die aus
dem Bereich einer menschlichen Schulter (6 bis 11)
und aus dem Bereich eines menschlichen Kopfes (12 bis 17)
stammen. Gezeigt werden jeweils die Input Bil der ohne (6 und 11)
und mit Kontrastmittel (7 und 12), das
Subtraktionsbild vor der Registrierung, das Subtraktionsbild nach
der Registrierung mit Ganzpixel-Genauigkeit und mit Subpixel-Genauigkeit.
Zum Vergleich dient außerdem
ein in einer CPU registriertes Subtraktionsbild (11 und 17).
-
In
dem Subtraktionsbild der Schulter sind in 8 starke
Artefakte zu sehen, die bereits durch die Ganzpixel-Registrierung
in 9 erheblich reduziert werden. Die Subpixel-Registrierung der 10 bringt
nochmals eine Verbesserung.
-
In
dem Subtraktionsbild des Kopfes sind in 14 nur
geringe Artefakte zu sehen, die durch die Ganzpixel-Registrierung
in 15 nicht reduziert werden. Erst die Subpixel-Registrierung in 16 beseitigt
die Artefakte.
-
In
beiden Fällen
ist die Rechenzeitersparnis gegenüber der CPU-Registrierung enorm.