-
GEBIET DER ERFINDUNG
-
Diese
Erfindung betrifft im Allgemeinen Computergraphik und spezieller
die Darstellung der inneren Strukturen von Objekten oder Mustern.
-
HINTERGRUND DER ERFINDUNG
-
Das
Gebiet der Darstellung dreidimensionaler (3D) Objekte oder synthetischer
Muster kann in zwei Hauptbereiche aufgeteilt werden: Polygondarstellung
und Volumendarstellung. Die Polygondarstellung betrifft nur die
Oberflächen-Topologie,
während
sich die Volumendarstellung auch mit der inneren Struktur von Objekten
oder Mustern befasst.
-
Polygondarstellung
-
In
Prozessoren und Verfahren, die für
eine Polygondarstellung ausgelegt sind, werden die Oberflächen des
Objektes oder Musters als Polygone, z.B. Dreiecke und Linien, beschrieben.
Diese elementaren geometrischen Komponenten werden verwendet, um
einen Teil bildende „Fragmente", die die äußere Oberfläche darstellen,
zu erzeugen. Ein Fragment ist so definiert, dass es ausschließlich aus
Informations (daten) besteht, die benötigt werden, um ein einzelnes
Bildpixel, das sich auf der Oberfläche befindet, zum Beispiel
die x- und y-Koordinaten des Pixels, die Farbwerte Rot, Grün und Blau
des Pixels, einen die Undurchsichtigkeit, Tiefenwerte, Strukturkoordinaten und
dergleichen abbildender Alpha-Wert, darzustellen („zu zeichnen"). Fragmente können in
einen Farbpuffer (oder Bildpuffer) gemischt werden, bevor sie als
Pixel dargestellt werden.
-
Volumendarstellung
-
In
Prozessoren und Verfahren, die für
eine Volumendarstellung ausgelegt sind, ist das Basismodul ein dreidimensionales
Voxelelement. In Abhängigkeit
von einer Betrachtungs- oder Projizierungsrichtung (Beobachtungswinkelbereich)
können
Voxel interpoliert werden, um Volumenabtastungen zu liefern. Die
interpolierten Volumenabtastungen können als den oben definierten
Fragmenten gleichwertig betrachtet werden. Die Volumendarstellung
erzeugt eine Messbasis oder eine zweidimensionale Anordnung von
Farbwerten, die als der Bildebene gleichwertig betrachtet werden
können.
Diese Übereinstimmung
erleichtert es, eine Polygondarstellung mit einer Volumendarstellung
und eine Anwendung von programmierenden Schnittstellen der im Allgemeinen verwendeten
Darstellungssysteme zu integrieren.
-
Ein
natürliches
Problem bei der dreidimensionalen Darstellung als Polygon oder Volumen
setzt sich damit auseinander, wie man die dritte Dimension zum Zwecke
des Vergleichs der Positionen von Objekten, der Bestimmung von Einschluss,
Schnitt, einer Ausschnittsvergrößerung usw.
am besten darstellt.
-
Tiefe bei Polygondarstellung
-
Zum
Beispiel speichert OpenGL (Open Graphics Library), eine gewöhnlich verwendete
Zusatzsoftware für
graphische Darstellung, einen einzigen Tiefenwert (z) für jedes
Pixel, das sich in einer ebenen (x, y) Position in dem Bildpuffer
befindet. Dort wird jedes Fragment in Abhängigkeit von einem wählbaren
Vergleich mit der entsprechenden Tiefe des Fragments und dem Tiefenwert,
der dem entsprechenden Pixel zugeordnet ist, entweder in den Bildpuffer
gemischt oder verworfen. Normalerweise ist der Operator für Tiefenvergleich
Wenigerals, wobei ein Tiefenpuffer mit einer vorgegebenen Hintergrundfarbe
und Tiefenwerten initialisiert wird. Wenn die Tiefe des Fragments
geringer ist als die entsprechende Tiefe, dann wird die Abtastung
gemischt, andererseits wird sie verworfen.
-
Um
komplexere Anwendungen unterzubringen, erlaubt OpenGL die Auswahl
eines beliebigen von acht Bezugsvergleichen. Für undurchsichtige Fragmente
bewirkt die Vergleichsoperation, dass das Ergebnis das gleiche ist,
als wenn die Fragmente sortiert wären, bevor sie dargestellt
werden. Zum Beispiel wählt
ein „Weniger-als-Vergleich" Fragmente mit kleineren
Tiefenwerten aus und verwirft diejenigen mit größeren Tiefenwerten. Dies entspricht
dem Sortieren der Fragmente von hinten (größere Tiefe) nach vorn (kleinere
Tiefe) in Bezug auf den Ansichtspunkt.
-
Mit
OpenGL gibt es keine gute Möglichkeit, durchsichtige,
mit Tiefenpuffer versehene Dreiecke darzustellen. Undurchsichtige
Dreiecke können
in beliebiger Reihenfolge dargestellt werden, wobei das Mischen
unter Kontrolle der Tiefeninformation ein bekanntes Verfahren zur
Verfügung
stellt, um verborgene Linien und Flächen von dem Aufnahmegegenstand
zu entfernen. Für
durchsichtige Dreiecke hängt der
sich ergebende Wert eines Pixels im Bildpuffer jedoch von der Reihenfolge
ab, in der die Dreiecke dargestellt werden. Deshalb besteht im OpenGL
ein normales Verfahren zur Darstellung von Geometrien (Polygonen),
die nicht undurchsichtig sind, darin, zuerst undurchsichtige Dreiecke
darzustellen, anschließend
durchsichtige Dreiecke zu sortieren und zuletzt die Dreiecke in
einer Reihenfolge von vorn nach hinten darzustellen. Wenn sich zwei
durchsichtige Dreiecke derart schneiden, dass jedes das andere teilweise
abdeckt, dann müssen
die Dreiecke vor einer Darstellung zuerst in kleinere, nicht abdeckende Dreiecke
geteilt werden.
-
Tatsächlich definiert
der Tiefenpuffer von OpenGL eine dynamische Schnittfläche. Der
Tiefenpuffer trennt Fragmente, die sich näher an der Bildebene befinden,
von denen, die sich entfernter davon befinden, was es ermöglicht,
auf dieser Basis Fragmente selektiv zu verwerfen. Darüber hinaus
wird der Tiefenpuffer während
einer Darstellung dynamisch aktualisiert, wobei auf diese Weise
die Schnittfläche „bewegt" wird, so dass spätere Fragmente
anders als frühere
Fragmente verarbeitet werden.
-
Ein
weiteres bekanntes Verfahren zur Darstellung von durchsichtigen
Polygonen erfordert kein Sortieren und Unterteilen der Dreiecke.
Stattdessen nutzt dieses Verfahren mehrere Darstellungsdurchläufe mit
zwei Tiefenpuffern. Die beiden Tiefenpuffer werden verwendet, um
die durchsichtigen Fragmente zu sortieren. Dieses Verfahren kann
jedoch nicht mit OpenGL verwendet werden, weil OpenGL nur einen einzelnen
Tiefenpuffer unterstützt.
Andere Verfahren sortieren Dreiecke von vorn nach hinten, anstatt
von hinten nach vorn. Eine Reihenfolge von vorn nach hinten ist
effektiver, weil diese Reihenfolge das Äquivalent einer frühen Strahlbeendigung
erlaubt, die einschließt,
Objekte zu ignorieren, die durch näher gelegene Objekte abgedeckt
werden. Alle diese Verfahren versuchen im Grunde genommen, eine
Gruppe von (am Anfang) ungeordneten Dreiecken darzustellen, als
wären alle
ihre Fragmente an jedem Pixelort von hinten nach vorn oder von vorn
nach hinten dargestellt.
-
Tiefe bei Volumendarstellung
-
Wenn
ein Volumen dargestellt wird, kann es besser sein, von vorn nach
hinten anstatt von hinten nach vorn darzustellen. Eine Darstellung
von vorn nach hinten erlaubt es einem, einen frühen Strahlabschluss durchzuführen. Jedoch
ist die Differenz zwischen den beiden Reihenfolgen einfach eine
Sache der Effizienz: Die Reihenfolge von vorn nach hinten mit Unter-Mischen sollte das
gleiche Ergebnis bewirken wie die Reihenfolge von hinten nach vorn
mit Über-Mischen.
In vielen Fällen
kann die Reihenfolge der Darstellung auf der Basis einer persönlichen
Bevorzugung ausgewählt
werden.
-
Um
mit OpenGL verträglich
zu sein, sollte ein während
der Volumendarstellung verwendeter Tiefenpuffer Volumenabtastungen
in der gleichen Weise bewirken, wie der Tiefenpuffer von OpenGL
die Fragmente bewirkt. Die Tiefe jeder Volumenabtastung sollte gegen
den entsprechenden Wert in dem Tiefenpuffer verglichen werden, wobei
die Farbe der Abtastung anschließend in Abhängigkeit vom Ergebnis des Vergleiches
entweder gemischt oder verworfen werden muss. Die Anfangswerte des
Farbpuffers definieren eine Hintergrundfarbe oder ein Bild von einem
etwas anderen Objekt. Die Anfangswerte müssen hinter die Abtastungen,
die nicht verworfen sind, gemischt werden.
-
Komplexe Volumendarstellung
-
Es
gibt viele Anwendungen, bei denen einige Objekte als Volumen dargestellt
und andere Objekte als Polygone nachgebildet werden. Es ist erwünscht, alle
Objekte in dem gleichen endgültigen
Bild darzustellen. Darüber
hinaus können
diese Objekte einander durchdringen. Zum Beispiel kann es notwendig sein,
Markierer, Zusatz-Software und andere Objekte, die als Polygone
nachgebildet werden, in ein Objekt einzubetten, das als ein Volumen
dargestellt wird und in korrekter Juxtaposition in Bezug auf das
Volumen für
jede Blickrichtung dargestellt werden muss. In einer beispielhaften
medizinischen Anwendung muss ein Volumenobjekt, das ein menschliches
Herz darstellt, und ein weiteres Volumenobjekt, das die menschlichen
Lungen und Bronchien darstellt, auf dem gleichen Bild dargestellt
werden, so dass sich das Herz in korrekter Juxtaposition bezüglich der Lungen
befindet.
-
Es
wird der Fall betrachtet, wo eine undurchsichtige Geometrie während einer
Volumendarstellung gemischt werden soll. Unter dem Aspekt von Hinten-nach-vorn
kann dies durchgeführt
werden, indem zuerst die undurchsichtige Geometrie dargestellt und
dann das sich ergebende Tiefenbild auf einen Tiefenpuffer und eine
Messbasis kopiert wird. Als Nächstes
den Tiefenvergleich auf Weniger-als einstellen und das Volumen von
Hinten-nachvorn darstellen. Diese Reihenfolge von Operationen verwirft Volumenabtastungen,
die sich hinter der undurchsichtigen Geometrie befinden, mit anderen
Worten, Volumenabtastungen, die Tiefenwerte von größer als der
oder gleich dem Tiefenpuffer aufweisen. Die Over-Operation wird
genutzt, um Abtastungen zu mischen, die sich vorn befinden, d.h.
Abtastungen, die Tiefenwerte aufweisen, die kleiner als der Tiefenpuffer
sind.
-
Die
gleiche Wirkung kann mit einer Volumendarstellung von vorn nach
hinten erreicht werden. ZG sei ein Tiefenpuffer
und CG ein von der Messbasis getrennter
Farbpuffer. Man geht wie folgt vor: Darstellung der undurchsichtigen
Geometrie zum Beispiel mittels OpenGL und Kopieren der sich ergebenden Bild-
und Tiefenwerte auf CG bzw. ZG.
Als Nächstes die
Messbasis auf RGB α =
0 initialisieren. Diesem Schritt durch Darstellung des Volumens
folgen. Für jede
Abtastung die z-Koordinate der Position der Abtastung mit dem entsprechenden
Wert in ZG vergleichen und die Abtastung
verwerfen, es sei denn, die Abtastung besteht die Weniger-als-Prüfung und
liegt genau vor dem Tiefenpuffer ZG. Mischen
der nicht verworfenen Abtastungen in die Messbasis mittels der Under-Operation.
Als letzten Schritt die Inhalte von CG unter
der Messbasis ebenfalls mittels der Under-Operation mischen. Dies
erzeugt die gleiche Wirkung wie eine Darstellung von hinten nach
vorn mit Over und mit der auf die Farbe der undurchsichtigen Geometrie
initialisierten Messbasis.
-
Diese
Verfahren sind nicht auf eine undurchsichtige Geometrie beschränkt, sie
können
auch eine einzelne Schicht einer durchsichtigen Geometrie wie folgt
unterstützen.
Darstellen der Geometrie in OpenGL. Kopieren der sich ergebenden
RGB α- und z-Werte auf
CG bzw. ZG. Die
Messbasis auf RGB α = 0
zurück
stellen. Das Volumen wie mit undurchsichtiger Geometrie darstellen,
alle Abtastwerte, die die Weniger-als-Prüfung gegen ZG nicht
bestehen, verwerfen. Fortsetzen, bis alle Strahlen enden, entweder
dadurch, dass die Tiefenprüfung
nicht bestanden ist oder es undurchsichtig wird oder dadurch, dass das
Ende des Volumens erreicht wird, ganz gleich was zuerst kommt.
-
Als
Nächstes
Mischen der Inhalte von CG mittels der Under-Operation und speichern
des Ergebnisses zurück
in die Messbasis. Anschließend
in einem zweiten Arbeitsgang, die Messbasis nicht zurückstellen.
Darstellen des Volumens mit der Tiefenprüfung Größer-oder-gleich, d.h. Abtastungen
verwerfen, die sich vor dem Tiefenpuffer befinden und diejenigen
akzeptieren, die größer als
dieser oder gleich diesem sind, während mit der Under-Operation
gemischt wird. Das Ergebnis ist eine „Scheibe" von durchsichtiger Geometrie durch
das Volumen. Abschließend
die Hintergrundfarbe hinter die sich ergebende Messbasis mischen.
Dies kann auch in einem einzigen Arbeitsgang vorgenommen werden. Einfach
eine weitere Prüfung
auf z-Wert hinzufügen, das
heißt „jetzt
Geometrie mischen" zusammen
mit einer zusätzlichen
Gruppe von Mischstufen, um die Mischoperation zwischen zwei Abtastungen
durchzuführen,
ohne irgendwelche Zyklen zu verlieren.
-
Diese
Verfahren besitzen jedoch ernsthafte Einschränkungen. Ein einzelner Tiefenpuffer
unterstützt
eingebettete, mehrschichtige, durchsichtige (transparente) Geometrien
nicht. Es ist wahrscheinlich, dass einige Anwendungen undurchsichtige
Geometrien aufweisen werden, z.B. Markierungsmittel oder Prothetik
in medizinischen Anwendungen. Andere Anwendungen, wie geologische
Aufnahmen, können
eingebettete Verwerfungsflächen
oder eine andere durchsichtige Geometrie oder Markierungsmittel
enthalten. Es ist wahrscheinlich, dass sich diese durchscheinenden
Objekte überlappen
werden, indem mehrfache Geometrieschichten zum Mischen in das Volumen
erzeugt werden. Darüber
hinaus gibt es viele mögliche
Mischungen undurchsichtiger und durchsichtiger Geometrien, die verarbeitet
werden müssen,
während
Volumenobjekte und Polygonobjekte in dem gleichen Aufnahmegegenstand
kombiniert werden.
-
Deshalb
ist es erwünscht,
ein Verfahren und ein System zur Verfügung zu stellen, um räumliche Objekte
und Muster darzustellen, die komplexe undurchsichtige und durchsichtige,
innere Strukturen enthalten.
-
ABRISS DER ERFINDUNG
-
Es
wird ein Verfahren und eine Vorrichtung zur Darstellung eines dreidimensionalen
Volumens auf einer zweidimensionalen Bildebene bereitgestellt, derart,
dass andere Objekte in das Volumen eingebettet werden können. In
dem erfindungsgemäßen Verfahren
werden zwei Tiefenpuffer angewendet, um eine nahe Schnittfläche und
eine entfernte Schnittfläche
zu definieren. Es werden außerdem mehrere
Farbpuffer verwendet, wobei einer jeder Schnittfläche entspricht.
-
Dann
wird der Teil des Volumens, der zwischen den beiden Schnittflächen liegt,
dargestellt, wobei Farbe und Opazität von jedem Strahl aus dem nahen
Farbpuffer initialisiert und die akkumulierte Farbe und Opazität mit dem
entfernten Farbpuffer gemischt werden.
-
Die
beiden Schnittflächen
und Farbpuffer werden anschließend
kombiniert, und aus dem kombinierten Ergebnis werden eine neue Schnittfläche und
ein neuer Farbpuffer erzeugt. Der Teil des Volumens, der zwischen
der kombinierten Schnittfläche und
der nächsten
Schnittfläche
liegt, wird in der Weise wie der vorherige Teil dargestellt. Diese
Schritte werden wiederholt, bis das gesamte Volumen dargestellt
ist, wobei Farbe und Opazität
jeweils in einem Teil akkumuliert werden und mit der Farbe und den Opazitäten der
zwischen den Teilen eingeführten
verschiedenen Farbpuffern kombiniert werden.
-
Jeder
Farb- und Tiefenpuffer stellt einen Teil einer Fläche oder
die gesamte Fläche
eines Objektes dar, das in das Volumen eingebettet ist. Durch Darstellung
des Volumens zwischen den Flächen
und durch Mischung von Farbe und Opazität jeder Fläche wird ein Aufnahmegegenstand
erzielt, der ein Volumen mit eingebetteten Objekten aufweist. Darüber hinaus
können
die Flächen
der eingebetteten Objekte durchscheinend sein, wodurch es Teilen
des Volumens und anderen abgedeckten Objekten ermöglicht ist,
durch diese Flächen
sichtbar zu werden. Durch diese Mittel können komplexe und durchsichtige Strukturen
abgebildet werden.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
Es
zeigen:
-
1 das
Blockdiagramm eines die vorliegende Erfindung nutzenden Darstellungssystems;
-
2 das
Ablaufdiagramm eines Verfahrens, das durch das System von 1 verwendet wird;
-
3 die
schematische Darstellung eines Volumens oder Musters zwischen zwei
Tiefenflächen;
-
4 das
Ablaufdiagramm eines Verfahrens, das einen Teil eines Volumens zwischen Schnittflächen darstellt;
-
5 die
schematische Darstellung einer doppelten Komparatorschaltung zum
Auswählen oder
Verwerfen von Volumenabtastungen während der Mischung; und
-
6 das
Ablaufdiagramm eines erfindungsgemäßen Verfahrens.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
Aufbau des Systems
-
In 1 zeigen
wir eine allgemeine Umgebung, in der unsere Erfindung verwendet
werden kann. Ein System 100 macht dreidimensionale (3D) Objekte
oder Muster auf einer zweidimensionalen (2D) Bildebene sichtbar.
Das System 100 umfasst einen Grafikprozessor 120,
der durch einen Speicherbus 130 mit dem Grafikspeicher 110 verbunden
ist. Der Grafikprozessor 120 ist durch einen Mehrzweckbus 150 mit
einem Computersystem (CPU) 140 verbunden. Die CPU 140 ist
mit den Eingabe- und Ausgabevorrichtungen 160 und 170 verbunden.
Eingabevorrichtungen können
Quellen grafischer Daten und Befehle zur Beeinflussung der Daten
sein. Ausgabevorrichtungen können
eine Anzeigevorrichtung umfassen.
-
Der
Grafikspeicher 110 kann angewiesen werden, verschiedene
Typen von grafischen Daten zu speichern. Zum Beispiel kann der Speicher 110 einen
Voxelspeicher 112 und Farbpuffer (C) 114 umfassen,
um jeweils Voxeldaten und Pixel(Farb-)daten zu speichern. Farbpuffer
sind auch als Bildpuffer oder Pixelspeicher bekannt. Es soll angemerkt
werden, dass Teile des Speichers 110 in Abhängigkeit
von der speziellen, verwendeten Darstellungsmethodik für andere
Zwecke zugeordnet werden können.
Zum Beispiel kann ein Sektionsspeicher verwendet werden, wenn ein
Volumen zu dem Zeitpunkt als Sektion dargestellt wird.
-
Die
CPU 140 ist herkömmlich.
Grafische Daten und Steuerbefehle werden über die Eingabevorrichtungen 160 eingegeben
und dargestellte Bilder an die Ausgabevorrichtungen 170 übergeben.
Die Eingabedaten können
reale Objekte oder Muster darstellen. Die Eingabedaten können durch
Mikroskope, Kameras, Teleskope, Scanner, Signalgeber und dergleichen
erlangt werden, oder die Eingabedaten können synthetisch erzeugt werden,
um zum Beispiel physikalische Systeme zu modellieren.
-
Die
Transformation von Eingabedaten (Voxelelemente) zu Ausgabedaten
(Pixel) wird von dem nachstehend ausführlicher beschriebenen Grafikprozessor 120 durchgeführt. Es
soll verständlich
werden, dass die Funktionalität
des Prozessors auch durch Software-Prozesse, obwohl normalerweise
mit einer erheblich langsameren Geschwindigkeit, erreicht werden
kann.
-
Mehrere Tiefenpuffer
-
Nach
unserer Erfindung ist ein Teil des Speichers 110 mehreren
Tiefenpuffern 116, zum Beispiel einem nahen (oder Anfangs-)
Tiefenpuffer (Zn) 118 und einem
entfernten (oder End-) Tiefenpuffer (Zf) 119 zugeordnet.
Verwendung und Vorteile von mehreren Tiefenpuffern 116 werden
nachstehend ausführlicher
beschrieben. Zum Darstellen eines dreidimensionalen, grafischen
Objekts verwenden wir mindestens zwei Tiefenpuffer. Tatsächlich definieren
die Tiefenpuffer „Schnittflächen", die genutzt werden,
um Teile des darzustellenden Objekts auszuwählen. Zur Vorn-nach-hinten
Darstellung definiert der nahe Tiefenpuffer eine Anfangsschnittfläche, und
der entfernte Tiefenpuffer definiert eine Endschnittfläche. Es
soll verständlich
werden, dass zusätzliche
Schnittflächen definiert
werden können,
indem mehrere Tiefenpuffer hinzugefügt werden.
-
Arbeitsweise des Systems
-
Wir
haben mit Bezug auf 2 die allgemeine Arbeitsweise
des grafischen Prozessors oder von Verfahren 120 beschrieben.
Wie oben angegeben, kann die Funktionalität des grafischen Prozessors 120 auch
durch einen Softwareprozess erzielt werden, obwohl wir eine Hardware-Ausführung bevorzugen,
um eine hohe Leistungsfähigkeit
zu erreichen. Tatsächlich
realisieren wir als ein Merkmal den grafischen Prozessor 120 auf
einem einzigen Halbleiterchip mittels paralleler Datenverarbeitungs-Pipelines.
-
Gemäß 2 verfährt ein
umgeleiteter Prozessor oder Prozess 200 wie folgt. Die
Voxel 201 werden zuerst geschnitten 205, um Teile
des Volumens zu entfernen, die außerhalb des Blickfeldes oder
Beobachtungswinkelbereichs liegen. Die verbleibenden Abtastwerte 206 werden
klassifiziert und interpoliert, und es werden Gradienten 210 bestimmt. Die
Reihenfolge, in der die Unterschritte der Klassifizierung, Interpolation
und Gradientenbestimmung durchgeführt werden, kann für unterschiedliche
Anwendungen variieren.
-
In
jedem Fall weist der Schritt 210 die Farb-(RGB) und Opazitäts- (α) Werte 211 den
Abtastwerten zusammen mit einer Bestimmung des Gradienten an jedem
Abtastpunkt zu. Diese resultierenden RGB α-Werte 211 werden anschließend beleuchtet 220,
um Hervorhebungen und Schatten einzuführen, wodurch ein realistischeres
Bild eines dreidimensionalen Objektes zur Verfügung gestellt wird. Der Beleuchtungsschritt 220 kann
von einer Reflexionskarte Gebrauch machen.
-
Zuletzt
werden im Schritt 230 die beleuchteten Abtastungen 221 zusammengesetzt.
Dieser Schritt kann auch einen wahlweise zusätzlichen Schneidschritt umfassen.
Das Zusammensetzen bezieht sich auf die Schritte des Sammelns und
Mischens von Farb- und Opazitätswerten
an Abtastpunkten entlang von Strahlen und des Zuordnens dieser Informationen
zu Pixeln 231 des zweidimensionalen Bildes.
-
Einführung in mehrere Tiefenpuffer
-
Gemäß 3 definiert
jeder Tiefenpuffer 118 und 119 von 1 eine
entsprechende „Schnittfläche" oder „Schnittform". Der nahe Tiefenpuffer 118 definiert
eine nahe oder Anfangsschnittfläche 318, und
der entfernte Tiefenpuffer 119 definiert eine entfernte
oder Endschnittfläche 319.
Das Objekt enthält als
Festkörper
dargestellte, undurchsichtige Teile 310 und lichtdurchlässige Teile 320,
die schattiert dargestellt sind. Die nahen und entfernten Schnittflächen bestimmen,
wie das Volumen 300 darzustellen ist.
-
Als
ein Vorteil ermöglicht
unsere Erfindung das Darstellen von Teilen des Objekts, das durchgreifend
unterschiedliche Eigenschaften und beliebige geometrische Anordnungen
aufweist, zum Beispiel Objekte, die sich durchdringen. Es können Teile
des Volumens ausgeschnitten werden, so dass sie von der Darstellung
ausgeschlossen sind. Außerdem
ermöglicht
es uns unsere Erfindung, Polygon- und Volumendarstellungsverfahren
zu integrieren.
-
Das allgemeine Verfahren
-
4 zeigt
die Schritte des allgemeinen Verfahrens zur Volumendarstellung gemäß unserer
Erfindung. Der Schritt 410 definiert eine Anfangsschnittfläche und
eine Endschnittfläche.
Ein Teil des Volumens mit einer vorgegebenen Beziehung zu der Anfangsschnittfläche und
der Endschnittfläche
wird im Schritt 420 bearbeitet. Der Schritt 430 erzeugt eine
nächste
Anfangsschnittfläche,
indem die Anfangs- und Endschnittflächen kombiniert werden. Der Schritt 430 erzeugt
außerdem
eine nächste
Endschnittfläche.
Der Schritt 440 wiederholt das Bearbeiten und Erzeugen
für die
nächsten
Anfangs- und Endschnittflächen,
bis ein Beendigungszustand erreicht ist.
-
Doppelter Vergleich
-
5 zeigt
die Mittel zur Bestimmung der Beziehung zwischen dem Teil des Volumens
und den zwei Schnittflächen
während
der Bearbeitung des Teils. Die Mittel umfassen zwei relationale
Vergleichseinrichtungen 510 und 520. Die Vergleichseinrichtungen
dienen dazu, die Tiefe jeder in dem Voxelspeicher 112 gespeicherten
Volumenabtastung gegenüber
den Tiefenwerten in den Tiefenpuffern 118 und 119 zu
vergleichen. Wenn beide Prüfungen
bestanden sind (AND 530), die Abtastung darstellen, andererseits
sie verwerfen. Wir können
außerdem
einen Modus (OR 540) bereitstellen, um die Abtastung darzustellen,
wenn eine von beiden Prüfungen
bestanden ist. Der Modus (AND/OR) kann durch den Multiplexer 550 ausgewählt werden.
Die vorgegebenen relationalen Operatoren können kleiner als, gleich, größer als
oder Kombinationen davon sein oder immer darstellen oder niemals
darstellen.
-
Mehrere
Tiefenpuffer zu haben, eröffnet
eine Anzahl von Möglichkeiten,
um Aufnahmegegenstände
mit Kombinationen von Polygon-Geometrie und Volumenobjekte darzustellen,
die weitaus komplexer sind als sie mit, sagen wir, herkömmlicher
Volumendarstellung auf Strukturbasis erzielt werden können. Darüber hinaus
machen wir eine Darstellung in Echtzeit möglich. Wir beschreiben das
Verfahren jetzt ausführlicher
für eine
spezielle Abtastanwendung. Nachstehend werden Änderungen für andere Anwendungen gegeben.
-
Verarbeitung von Tiefeninformationen
in mehreren Tiefenpuffern
-
Der
Schritt 610 initialisiert einen nahen Farbpuffer (Cn) zu einer transparenten Farbe, z.B. transparentes
Schwarz (RGB α =
0). Der Schritt 620 initialisiert den nahen (Anfangs-)
Tiefenpuffer (Zn) zu der nahen Schnittfläche, d.h.
das, was die vordere Ebene des Beobachtungswinkelbereichs sein wird.
-
Schnittflächen können in
einer Anzahl von Methoden definiert werden. Zum Beispiel kann die Anwendung,
mit Open Graphics Library (OpenGL), die Polygone in Schichten sortieren,
um eine Schnittfläche
zu definieren. Mit anderen Verfahren werden die Schnittflächen in
dem Volumen definiert. Opazitäts-
oder Gradienten-Schwellwerte können
verwendet werden, um Flächen
von eingebetteten Objekten zu finden.
-
Anschließend für jede Schnittfläche (630)
die Schritte 640 bis 643 durchführen. Der
entfernte Farbpuffer (Cf) wird zu der Schnittfläche initialisiert.
Den entfernten Tiefenpuffer (Zf) zu der
Tiefe der entfernten Schnittfläche
initialisieren. Darstellen des Teils des Volumens, indem nur diejenigen
Abtastungen mit Tiefenwerten größer als
oder gleich der nahen Schnittfläche
und kleiner als die entfernte Schnittfläche ausgewählt werden. Das Ergebnis (akkumulierte RGB α-Werte) in
den nahen Farbpuffer und den Tiefenpuffer kombinieren sowie für die nächste Schnittfläche wiederholen.
-
Wenn
ein Beendigungszustand erreicht ist, zum Beispiel wurde das gesamte
Volumen dargestellt, schreibt der Schritt 650 den nahen
Farbpuffer zu dem Bild aus. Es soll angemerkt werden, dass jede
Schnittfläche
nicht die gesamte Bildebene zu überdecken
braucht. Für
jedes Pixel, das nicht durch eine Schnittfläche überdeckt ist, sollten die entsprechenden
Tiefenwerte der entfernten Schnittfläche auf Werte eingestellt werden,
die kleiner als die der nahen Schnittfläche sind. Durch dieses Verfahren
werden Teile des Volumens, die nicht durch eine spezielle Schnittfläche überdeckt
sind, während
einer Darstellung nicht ausgewählt.
-
Es
wird jetzt eine Anzahl von Anwendungen unseres allgemeinen Verfahrens
beschrieben. Zum Beispiel ermöglicht
es unsere Erfindung mit zwei Tiefenpuffern, ein Volumen gegenüber einer
beliebigen dreidimensionalen Fläche
zu schneiden. Wir machen es außerdem
möglich,
eine beliebig komplexe, durchsichtige Geometrie mittels eines Vielfach-Algorithmus
in ein Volumen einzubetten. Durch die Einbeziehung der Fähigkeit,
in mehrere Tiefenpuffer zu schreiben, z.B. auf den Ausgang von einer
Fläche des
Volumens, wird es außerdem
möglich,
mehrere einander durchdringende Volumenobjekte in dem gleichen Aufnahmegegenstand
darzustellen. Dies ist zum Beispiel nützlich, wenn das Herz und die
Lungen als getrennte Objekte dargestellt werden, jedoch so, dass
sie in Bezug zueinander in einer genauen Juxtaposition erscheinen.
-
Schneiden auf willkürliche Flächen
-
Zn und Zf seien die
beiden Tiefenpuffer 118 bzw. 119. Wir können willkürlich wie
folgt auf einige dreidimensionale Flächen darstellen. Darstellen
der nach vorn weisenden Polygone auf Zn und
der nach hinten weisenden Polygone auf Zf.
Anschließend
den Tiefenmodus auswählen,
um Abtastungen darzustellen, die sowohl eine (logisches UND) Größer-als-Prüfung auf
Zn als auch eine Kleiner-als-Prüfung auf
Zf bestehen. Dies kann mit dem Schaltkreis
von 5 vorgenommen werden. Folglich werden Abtastpunkte
nur dann dargestellt, wenn sie zwischen Zn und
Zf liegen. Es ist anzumerken, dass jeder
Strahl enden kann, sobald seine z-Koordinate Zf erreicht.
-
Wir
können
auch eine beliebige dreidimensionale Fläche aus dem Inneren des Volumens 300 ausschneiden.
Wie zuvor, die nach vorn weisenden Polygone auf Zn und
die nach hinten weisenden Polygone auf Zf darstellen.
Anschließend
den Tiefenmodus auswählen,
um Abtastungen darzustellen, die entweder eine Weniger-als-Prüfung auf
Zn oder eine Größer-als-Prüfung (logisches ODER) auf Zf bestehen. Folglich werden Abtastpunkte
nur dargestellt, wenn sie außerhalb
von Zf und Zn liegen.
-
Es
ist anzumerken, dass die Prüfungen
zum Tiefenvergleich zu Beginn der Pipeline 200 und in der Compositing-Stufe 230 vorgenommen
werden können.
Dies erlaubt es uns Voxel, deren abhängigen Abtastungen durch die
Tiefenprüfung
später
in der Pipeline 200 ausgeschnitten werden, zu überspringen.
Das Überspringen
von Voxeln reduziert Speicherzugriffe.
-
Einbetten einer mehrschichtigen,
durchsichtigen Geometrie
-
Um
eine beliebige durchsichtige Geometrie in ein Volumen einzubetten,
ist es zuerst notwendig, die Geometrie in Schichten zu teilen, so
dass in jeder Schicht nur ein Tiefenwert pro Schicht und Pixel vorhanden
ist. Die Anzahl von Schichten, die benötigt werden, ist nicht mehr
als eine und die ungünstigste Tiefenkomplexität der durchsichtigen
Geometrie. Typischerweise ist diese Anzahl klein. Die hintere Schicht
umfasst den undurchsichtigen Hintergrund des Aufnahmegegenstandes.
Später
werden wir Verfahren zur Erzeugung der Schichten von einer beliebigen
Geometrie beschreiben.
-
Es
gibt eine Anordnung von Tiefenpuffern ZGn und
entsprechende Bild- oder Farbpuffer RGB αGn.
Zusammen werden diese Tiefenbilder genannt. Z1 und
Z2 seien die beiden Tiefenpuffer und C1 und C2 die beiden
Farbpuffer. Wie wir sehen werden, ist C1 die
Messbasis. Jetzt C1 auf RGB = 0 zurückstellen und
Z1 auf die vordere Schnittfläche, entweder
die vordere Schnittfläche
des Beobachtungswinkelbereichs oder auf eine allgemeinere Schnittfläche einstellen.
Jetzt Z2 ← ZG0 und
C2 ← RGBG0 einstellen. Darstellen des Volumens von
Vorn-nach-hinten auf C1 mittels Under und
Verwerfen von Abtastungen, die nicht zwischen Z1 und
Z2 liegen. Dies stellt die Abtastungen dar,
die innerhalb des Beobachtungswinkelbereichs und vor ZG0 liegen.
Wenn diese Darstellung vollständig
ist, C1 mit C2 mittels
Under mischen, wobei das Ergebnis in C2 übrig bleibt.
-
Z1 ← Z2 und C1 ← C2 einstellen. Dann Z2 ← ZG1 und C2 ← RGB αG1 einstellen
und das Volumen erneut darstellen. Dies stellt die zwischen ZG0 und ZG1 liegenden
Abtastungen dar, indem sie unter die vorherigen Abtastungen und
die erste Geometrieschicht gemischt werden. Für jede Geometrieschicht wiederholen.
Damit wird jede Geometrieschicht wiederum in ihre Stelle im Volumen
gemischt. Die letzte Geometrieschicht ist der Hintergrund, der undurchsichtig
sein muss.
-
Dieser
Vielfach-Prozess kann ausgeführt werden,
so dass er nahezu so schnell ist wie einfaches Darstellen der Geometrie
und Darstellen des Volumens. Wenn wir eine Vorn-nach-hinten Darstellung
mit Strahlbeendigung und Raumüberspringen nutzen,
dann verarbeiten wir eine Mindestanzahl von Abtastungen, die sich
vor dem nahen Tiefenpuffer befinden.
-
Es
ist anzumerken, dass dieses Verfahren wie der oben erwähnte Schneidprozess
voraussetzt, dass jede Abtastung ein einzelner Punkt ist, der entweder
vor oder hinter dem im Tiefenpuffer einzeln angegebenen Tiefenwert
liegt oder mit diesem zusammenfällt.
Es ist möglich,
jede Abtastung als einen Bereich, z.B. einen „Würfel aus Gallert" oder eine etwas andere
Form, zu betrachten und den Tiefenwert so zu behandeln, als wenn
er den Abtastbereich in zwei Teile teilt. Dies kann an den Schneidgrenzen
der Geometrie einen Grad von Randglättung bewirken.
-
Mehrere Volumenobjekte
im gleichen Aufnahmegegenstand
-
Durch
Ergänzung
der Fähigkeit,
auf mehrfache Tiefenpuffer zu schreiben, machen wir es möglich, mehrere
Volumenobjekte, die sich durchdringen, in dem gleichen Aufnahmegegenstand
darzustellen. Wir machen jedoch die Annahme, dass keine zwei Volumenobjekte
nicht-transparente Werte für
die gleiche Voxelposition aufweisen. Das heißt, Volumen können sich
nur in dem leeren Raum des anderen durchdringen, obwohl eine kleiner
Umfang von Überlappung
genau gehandhabt werden wird wie es nachstehend beschrieben ist.
-
Wir
machen dies mit einem Vielfach-Prozess, der kein Sortieren der Volumenobjekte
im Voraus erfordert.
-
Zuerst
Z1 zu der Frontschnittfläche, wie oben erwähnt, initialisieren
und C1 auf RGB α = 0 zurückstellen. Z2 zu
der Rückseite
aller Volumen und C2 zu der Hintergrundfarbe
initialisieren. Anschließend
jedes der Volumenobjekte in gewisser Reihenfolge wie folgt darstellen.
-
Nur
Abtastungen zwischen Z1 und Z2 akzeptieren,
Proben mittels Under entlang von Strahlen mischen, jedoch die Ergebnisse
in einem Compositing-Puffer erhalten. Mittels einer Gradienten- oder α-Schwellenprüfung die
hintere Fläche
jedes Volumens entlang jedes Strahls detektieren. Immer wenn eine
Fläche
an einem Abtastpunkt entlang eines Strahls detektiert ist, diesen
Strahl beenden. Die z-Koordinate dieser Abtastung gegenüber Z2 prüfen; wenn
sie kleiner ist als der entsprechende Tiefenwert in Z2,
dann den Tiefenwert in Z2 mit der z-Koordinate ersetzen
und den Farbwert in C2 mit der akkumulierten
Farbe für
den Strahl aus dem Compositing-Puffer ersetzen. Für das nächste Volumenobjekt
wiederholen, bis alle Volumenobjekte auf diese Weise dargestellt
worden sind. Schließlich
C1 mit C2 mischen,
wobei das Ergebnis in C2 übrig bleibt.
-
Dies
markiert das Ende des ersten Arbeitsgangs. Die sich ergebenden Z2 und C2 spiegeln
die von vorn nach ganz hinten weisenden Flächen des kombinierten Aufnahmegegenstandes
wider. Für
jeden Strahl heißt
das, sein Tiefenwert in Z2 ist der Austrittspunkt
dieses Strahls von der Rückseite
des Objektes, das sich am nächsten
zu dem Betrachter befindet, und C2 ist die
akkumulierte Farbe bis zu diesem Punkt. Durch Darstellung aller
Objekte werden die Teile von jeder hinteren Fläche, die sich am nächsten zu
dem Betrachter befindet, herausgezogen und in C2 und
Z2 aufgenommen.
-
Für den nächsten Arbeitsgang
Z1 ← Z2 und C1 ← C2 einstellen. Anschließend Z2 auf
die Rückseite von
allen Volumen und C2 auf die Hintergrundfarbe einstellen.
Die oben erwähnten
Schritte für
jedes Volumenobjekt wiederholen. Nur auf die Abtastungen hinter
Z1 schauen. Dieser Arbeitsgang zieht die nächste nach
hinten weisende Fläche
heraus und nimmt sie in Z2 und C2 auf. Er mischt dann das Ergebnis mit dem
zuvor akkumulierten C1.
-
Diese
Arbeitsgänge
wiederholen, bis nichts mehr in C2 und Z2 akkumuliert wird. Der kombinierte Aufnahmegegenstand
nimmt jetzt alle der Volumen in ihrer entsprechenden Juxtaposition
relativ zueinander auf, ohne Rücksicht
auf eine Reihenfolge der Darstellung und Durchsichtigkeit. Zum Beispiel
kann dieses Verfahren genutzt werden, um das Herz und die Lungen
als getrennte Objekte darzustellen und sie an der richtigen Stelle
im Aufnahmegegenstand, gleichgültig
wie der Blickwinkel ist, erscheinen zu lassen. Wenn die Darstellung
auch die Fähigkeit
einschließt,
die Abtastrate zu verändern,
dann müssen die
Volumenobjekte auch nicht miteinander registriert werden oder den
gleichen Voxelabstand aufweisen.
-
Das
oben erwähnte
Verfahren approximiert das korrekte Ergebnis, auch wenn es eine
gewisse Überlappung
zwischen nicht transparenten Teilen in den zwei Volumen gibt. Das
Verfahren setzt entlang eines Strahls jeden benachbarten, nicht
transparenten Bereich innerhalb eines Volumens zu einem einzelnen
RGB α-Wert
auf der hinteren Fläche
des nicht transparenten Bereiches zusammen, sortiert und setzt anschließend diese
Zwischenwerte zusammen. Wenn zwei Volumen eine leichte Überlappung
von nicht transparenten Bereichen aufweisen, werden die überlappenden
Voxel sich deshalb nicht genau abdecken, wobei jedoch beide in dem
endgültigen
Bild dargestellt werden.
-
Die
Gebiete, in denen die vorliegende Erfindung verwendet werden kann,
sind zahlreich und umfassen die medizinische Bilddarstellung, Ingenieurhochbau,
Geologie, Astrophysik, Wettermodellierung und viele andere. Wir
haben spezifische Begriffe und Beispiele verwendet. Es soll verständlich werden, dass
innerhalb des Umfangs der Erfindung verschiedene andere Anpassungen
und Modifizierungen vorgenommen werden können. Deshalb ist die Aufgabe der
angefügten
Patentansprüche,
alle diese Variationen und Modifikationen, wie sie innerhalb des
Umfangs der Erfindung vorkommen, einzuschließen.