Visualisierung Übung
WS 2001
Alois Dornhofer
Kontakt:e9626201@fbma.tuwien.ac.at



Fourier Volume Rendering (FVR)


Das Prinzip des FVR ist folgendes: Die 3D-Volumsdaten, die zum Beispiel von einer Computertomografie eines Patienten stammen, werden mithilfe der diskreten 3D-Fourier-Transformation vom Ortsraum in den Frequenzraum transformiert. Als nächstes wird eine beliebige Schnittebene durch den Ursprung des transformierten Datenwürfels gelegt und mit der inversen diskreten 2D-Fourier-Transformation wieder zurück in den Ortsraum transformiert. Die rücktransformierte Ebene enthält nun die Projektion des ursprünglichen Datenwürfels in Blickrichtung.

Abb. 1: Prinzip des FVR. In der Skizze links oben sieht man die Daten im Ortsraum. Diese werden in den Frequenzraum transformiert (oben). Die Daten im Frequenzraum entsprechen der Zerlegung eines Signals im Ortsraum in seine Frequenzanteile. Dann wird auf eine beliebig rotierte Ebene orthogonal zur Blickrichtung durch den Ursprung gelegt (rechts oben) und diese Ebene (rechts unten) wird wieder zurück in den Ortsraum transformiert (unten). Dieser Vorgang entspricht genau der Projektion der Daten im Ortsraum auf die Ebene orthogonal zur Blickrichtung.

Detailliertere Beschreibung der FVR hinsichtlich der Implementierung:

Die von einem File eingelesenen 3D-Daten füllen i. a. einen NxNxN Datenwürfel nicht aus; N muss eine 2er-Potenz aufgrund der Verwendung der FFT (Fast Fourier Transform) sein. Die FFT benötigt Eingabearrays der Länge einer 2er-Potenz. Um hinsichtlich der Qualität der Ergebnisbilder Aliasing-Artefakte zu verringern, werden die Daten so eingelesen, dass ein symmetrisches Zero-Padding rund um die Eingabedaten im Datenwürfel vollzogen wird.

Im nächsten Schritt ist es nun unbedingt notwendig, einen zyklischen 3D-Shift zu machen, damit der Ursprung des Datenwürfels genau in den Mittelpunkt verschoben wird (sonst wäre er ja an der Stelle [0][0][0]). Nun erfolgt die eigentliche 3D-Fourier-Transformation. Der vorangehende 3D-Shift muss nun wieder rückgängig gemacht werden (also ein zweites Mal angewendet werden). Somit nun ist der Preprocessing-Schritt, der nur ein einziges Mal nach dem Laden der Daten durchgeführt werden muss, abgeschlossen.

Nun ist es möglich, die Blickrichtung zu verändern, was sich auf die Ausrichtung der rotierten Ebene durch den Ursprung des Datenwürfels im Frequenzraum auswirkt. Wurde eine Blickrichtung festgelegt, werden die dazuführenden Rotationen und die entsprechenden Punkte im Volumen berechnet. Diese berechneten Koordinaten stimmen natürlich im allgemeinen nicht mit denen im Volumen überein, da die Volumskoordinaten ja diskrete Werte sind, die berechneten aber reelle. Daher wird im nächsten Schritt eine Interpolation durchgeführt, die als zyklische Faltung mit einem Filter realisiert wurde. Sind nun die Datenpunke der Ebene interpoliert, ist nun ein zyklischer 2D-Shift zu machen. Danach wird die Ebene mit der inversen 2D-Fourier-Transformation wieder in den Ortsraum transformiert und dort wird wiederum ein 2D-Shift vollzogen. Die nun vorliegenden Daten können am Bildschirm dargestellt werden.

Hinweise zur Installation:

Aufgrund der Verwendung von Routinen von FFTW, das von www.fftw.org erhältlich ist, ist es notwendig, das File FFTW2dll.dll in den Systemordner des Windows-Verzeichnisses zu kopieren. Weiters muss das Eingabefile Headerinformationen beinhalten, und zwar die Ausdehnung in jede der 3 Koordinatenrichtungen. Danach müssen genausoviele Binärinformationen im File stehen, wie in der Headerinformation angegeben wurde.

Hinweise zur Programmbedienung:

Beim Start des Programms wird zuerst ein leerer Bildschirm angezeigt. Nun kann man mit dem Menüpunkt bzw. dem Icon "Öffnen" einen 3D-Datensatz öffnen und dann wird der Preprocessing-Schritt vollzogen. Solange das Programm rechnet, wird das durch einen "Hourglass"-Mauszeiger suggeriert. Die Berechnungen können mitunter schon mal 1 Minute dauern, bevor eine Ausgabe am Bildschirm zu sehen ist. Ist dieser Schritt nun vollzogen, ist in der Mitte ein Bild von Blickrichtung oben standardmässig zu sehen. Um die Blickrichtung zu verändern, braucht man einfach die rechte Maustaste gedrückt halten und die Maus bewegen. Es wird laufend eine Schnittebene durch den Ursprung der Daten im Frequenzraum aufgrund der Blickrichtung berechnet und dargestellt.

Hinweis zur Performance: (Grundlage AMD TBird800, skewed_head.dat Eingabedatensatz)

Speicherbedarf: ca. 132 MB

Laufzeit:
Vorgang Dauer
Initialisieren des Datenwürfels 0,981 s
Einlesen der 3D-Daten 4,927 s
3D-Shift 7,691 s
FFT3D 27,518 s
3D-Shift 7,691 s
Summe Preprocessing 48,808 s
Berechnung der Ebene 0,634 s

Beispielbilder


Klassendokumentation


Download:

FFTW2dll.dll
FourierVolumeRenderer.exe
sources.tar.gz (kontaktiere die Übungsleitung)




Links:

Tom Malzbender, Fourier Volume Rendering
http://portal.acm.org/citation.cfm?id=169705&coll=portal&dl=ACM&CFID=454653&CFTOKEN=62515563
Homepage:
http://www.hpl.hp.com/personal/Tom_Malzbender/research/research.htm

Marc Levoy,Volume Rendering using the Fourier Projection-Slice Theorem
http://graphics.stanford.edu/papers/fourier/

Ergebnis der FVR-Methode (rechts) im Vergleich zum konventionellen Rendering (links)
http://graphics.stanford.edu/papers/fourier/angieyedemo.mpg

last updated: 2001-12-17, 10:30