From CoGr@Ohm

Exercise #02

Visualisierung Übungsblatt #02


Medical 3D Data: Implicit and Explicit Data



1. Präliminarien:

2. OpenGL:
Übersetzen Sie das Framework und starten Sie das Hauptprogramm mit ./myqtapp -lgl. Dies zeichnet zwei rotierende Dreiecke analog zur CG-Übung #03.

Wireframe

Modifizieren Sie das Modul qlglwindow.cpp, so dass die Kanten eines Einheitswürfels als Wireframe gezeichnet werden (LGL_LINES). Der Urspung des lokalen Koordinatensystems des Würfels soll in dessen Zentrum liegen (Wertebereich: −0.5 bis 0.5).

Dieser Würfel ist für die folgenden Visualisierungsaufgaben die Einheits-Arbeitsbühne.

3. Implizite Daten:

Gnuplot
$f(x,y)=x^2e^{-x^2}y^2e^{-y^2}$
set isosample 30
splot [-3:3][-3:3] x*x*exp(-x*x)*y*y*exp(-y*y)
$\vec{f}(\lambda) = (cos\pi\lambda,sin\pi\lambda,\frac13)^T\frac1{1+\lambda}, \lambda\in[1,10]$
  • Implementieren Sie eine Funktion vec3 f(double lambda), die einen 3D Punkt der Parameterkurve berechnet und zurückgibt.
  • Samplen Sie die Kurve in regelmäßigen Abständen im oben angegeben Definitionsbereich.
  • Benutzen Sie Liniensegmente von aufeinanderfolgenden Sample-Punkten, um die Kurve darzustellen (LGL_LINE_STRIP).
  • Optional: Färben Sie die Parameterkurve von Rot nach Blau (lin. Interpolation der Farbe mit normalisiertem $\lambda$ als Interpolationsfaktor).
  • Optional: Lassen Sie die Kurve um die Z-Achse rotieren → hypnotisch!
lglColor(r,g,b);
lglBegin(LGL_LINE_STRIP);
   for (double l=anfang; l<ende; l+=step)
      lglVertex(f(l));
lglEnd();

4. Explizite Daten:
Laden Sie einen 3D Datensatz, d.h. entweder eine DICOM-Serie oder ein PVM-Volumen aus den MedVis-Beispieldaten:

long long width, height, depth;
unsigned int components;
unsigned char *data =  readXYZvolume("path",
                                     &width, &height, &depth,
                                     &components);
  • Diese Funktion gibt einen Zeiger auf den geladenen Datenblock zurück.
    • Konnte der Datenblock nicht geladen werden, wird der NULL-Zeiger zurückgegeben.
  • Eine zu ladende DICOM-Serie wird als Pfad mit Wildcard * angeben. Als Endungen sind “.dcm” und “.IMA” gebräuchlich.
    • Ein Beispielpfad ist “Angio/*.IMA”
  • Ein zu ladendes PVM-Volumen wird als Dateipfad mit der Endung “.pvm” angeben.
    • Ein Beispielpfad ist “MR-Kiwi.pvm”
  • Der Pfad muss entweder absolut oder relativ zum Verzeichnis sein, in dem Sie Ihr Programm starten. Ansonsten wirden die Daten nicht gefunden und entsprechend ein NULL Zeiger zurückgegeben.

5. Quantisierung:
Um mit den Daten einfacher arbeiten zu können, normalisieren wir deren Wertebereich auf 8-bit. Dazu verwenden wir die Funktion normalizeVolume wie folgt:

data = normalizeVolume(data, width, height, depth, components);

6. Histogramm:

VIS-Histogram


Hausaufgaben:

  1. Funktionsplot:
    Gegeben sei die Funktion $f(x,y)=cos(4\sqrt{x^2+y^2}+atan2(x,y))\frac{1}{0.5+\sqrt{x^2+y^2}}$
    1. Können Sie Sich die Funktion vorstellen? Was für eine Form hat die implizite Parameterfläche vermutlich?
    2. Visualisieren Sie die Funktion mit gnuplot und überprüfen Sie Ihre Vermutung!
  2. Histogrammplot:
    1. Visualisieren Sie das Histogramm Ihres Datensatzes mit OpenGL als Funktionsplot!
    2. Das Histogram soll in einer Seitenfläche des Einheitswürfels zentriert dargestellt werden.

Links

  1. schorsch.efi.fh-nuernberg.de/roettger/index.php/MedicalVisualization/QtFramework
  2. schorsch.efi.fh-nuernberg.de/roettger/index.php/MedicalVisualization/Histogram

Retrieved from http://schorsch.efi.fh-nuernberg.de/cogr/index.php/VisExercises/Exercise02

Page last modified on December 02, 2020, at 02:19 PM