-
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Berechnung eines Bildes im Rahmen einer Volumendarstellung durch Ray Casting mittels einer Mehrzahl von Rechen-Knoten.
-
Die Erfindung liegt auf dem Gebiet des Volume Rendering, d. h. der Darstellung bzw. Visualisierung von dreidimensionalen Körpern bzw. Objekten. Die Modellierung, Rekonstruktion oder Visualisierung von dreidimensionalen Objekten hat einen weiten Anwendungsbereich in den Feldern Medizin (z. B. CT, PET), Physik (z. B. Elektronenstruktur großer Moleküle) oder Geophysik (Beschaffenheit und Lage von Erdschichten). Typischerweise wird das zu untersuchende Objekt bestrahlt (z. B. mittels elektromagnetischer Wellen oder Schallwellen), um seine Beschaffenheit zu untersuchen. Die gestreute Strahlung wird detektiert und aus den detektierten Werten werden Eigenschaften des Körpers ermittelt. Üblicherweise besteht das Ergebnis in einer physikalischen Größe (z. B. Dichte, Gewebetyp, Elastizität, Geschwindigkeit), deren Wert für den Körper ermittelt wird. Dabei verwendet man in der Regel ein virtuelles Gitter, an dessen Gitterpunkten der Wert der Größe ermittelt wird. Diese Gitterpunkte werden üblicherweise als Voxel bezeichnet. Der Begriff „Voxel” ist ein aus den Begriffen „Volume” und „Pixel” gebildetes Synthesewort. Ein Voxel entspricht der Raumkoordinate eines Gitterpunktes, der der Wert einer Größe an diesem Ort zugeordnet ist. Dabei handelt es sich meist um eine physikalische Größe, die als skalares oder vektorielles Feld dargestellt werden kann, d. h. der Raumkoordinate ist der entsprechende Feldwert zugeordnet. Durch Interpolation der Voxel kann man den Wert der Größe bzw. des Feldes an beliebigen Objektpunkten (d. h. an beliebigen Ortspunkten des untersuchten Objektes) erhalten.
-
Mittels Volume Rendering wird aus den Voxeln eine dreidimensionale Darstellung des untersuchten Objekts bzw. Körpers auf einer zweidimensionalen Darstellungsfläche (z. B. Bildschirm) erzeugt. Dabei werden durch das Volume Rendering aus den Voxeln sog. Pixel erzeugt (häufig mit der Zwischenstufe von aus den Voxeln durch Interpolation gewonnenen Objektpunkten), aus welchen das Bild der zweidimensionalen Bildanzeige zusammengesetzt ist. Um auf einer zweidimensionalen Anzeige drei Dimensionen zu visualisieren, wird in der Regel ein sog. Alpha-Compositing bzw. eine Alpha-Zerlegung vorgenommen. Bei dieser Standardmethode werden Voxeln bzw. aus Voxeln gebildeten Volumenpunkten sowohl Farbwerte als auch Durchlässigkeitswerte (üblicherweise bezeichnet mit dem englischen Begriff Opacity, der die Durchlässigkeit bzw. die Deckkraft verschiedener Schichten des Körpers ausdrückt) zugeordnet. Konkreter werden einem Objektpunkt üblicherweise ein Farbwert in Form eines Drei-Tupels, der die Anteile der Farben rot, grün und blau kodiert (sog. RGB-Wert), und ein sog. Alpha-Wert, der die Durchlässigkeit parametrisiert, zugeordnet.
-
Für die Zuordnung eines passenden Farbwertes wird meist mit einem Beleuchtungsmodell gearbeitet. Dieses Beleuchtungsmodell berücksichtigt Lichteffekte (in der Regel Reflexionen des Lichtes an Oberflächen des Objektes; dabei kann es sich um die äußere Oberfläche oder um Oberflächen innere Schichten des untersuchten Objektes handeln) bei einer zum Zwecke der Visualisierung modellierten bzw. simulierten Bestrahlung des Objektes.
-
Es gibt in der Literatur eine Reihe von Beleuchtungsmodellen, die angewandt werden, beispielsweise das Phong-, Gouraud- oder Schlick-Modell. Gemeinsam ist praktisch allen verwendeten Modellen, dass für die Anwendung des Modells der Winkel zwischen dem einfallenden Licht und der Oberflächennormalen der reflektierenden Oberfläche benötigt wird. Zu diesem Zweck müssen für alle diese Modelle für die verwendeten Voxel bzw. Objektpunkte der Gradient und daraus der Normalenvektor bestimmt werden.
-
Das vielleicht meistbenutzte Verfahren zum Volume Rendering ist das sog. Ray-Casting bzw. die Simulation einer Lichteinstrahlung zur Darstellung bzw. Visualisierung des Körpers. Im Folgenden werden zentrale Elemente einer Ray-Casting-Visualisierung beschrieben. Beim sog. Ray-Casting oder Ray-Tracing, wie es für Volumenvisualisierung auch genannt wird, werden imaginäre Strahlen, die vom Auge des Betrachters ausgehen, durch den untersuchten Körper bzw. das untersuchte Objekt gesendet. Entlang der Strahlen werden Objektpunkte aus den Voxeln berechnet und zu einem zweidimensionalen Bild mittels Compositing vereinigt. Dabei werden folgende zwei wichtige Prozeduren durchgeführt, die auch getrennt voneinander ausgeführt werden können.
-
Klassifizierung:
-
Den Werten entlang der Strahlen werden Durchlässigkeitswerte bzw. Alpha-Werte zugeordnet.
-
Shading:
-
Es werden mit Hilfe eines Beleuchtungsmodells den einzelnen Punkten Farbwerte zugeordnet.
-
Es werden also für einen Strahl in (üblicherweise) äquidistanten Schritten Objektpunkte auf dem Strahl bestimmt. Für jeden Objektpunkt werden Klassifizierung und Shading durchgeführt. Das Ergebnis für Farbwert und Durchlässigkeitswert für den berechneten Objektpunkt wird iterativ mit den bereits berechneten Werten zusammengesetzt. D. h. es liegen Farbwert und Durchlässigkeitswert für den bereits durchlaufenen bzw. berechneten Strahlabschnitt vor, mit denen der Farbewert und Durchlässigkeitswert für den aktuell berechneten Objektpunkt im Sinne einer Volumensvisualisierung kombiniert werden (In der Literatur verwendet man häufig dafür den Ausdruck Compositing). Das Ergebnis für den Farbwert nach Durchlaufen des Strahls liefert dann ein Pixel. Die Gesamtheit der Pixel, die mittels der Generierung von Strahlen erzeugt wurden, setzt sich zu einer zweidimensionales Bildfläche zusammen, auf der eine dreidimensionale Darstellung des untersuchten Körpers zu sehen ist.
-
Auf Grund der hohen Anzahl von Voxeln, die für eine scharfe Darstellung des untersuchten Objektes bzw. Körpers erforderlich ist, ist der Rechenaufwand erheblich. Es besteht die Anforderung, die Rechnungen möglichst schnell durchzuführen, um dem Betrachter die Möglichkeit des (mit einer Neuberechnung des Bildes verbundenen) Perspektivenwechsels beim Betrachten des visualisierten Objektes zu eröffnen. Zum Zweck einer schnellen Berechnung ist es tunlich, die Rechenlast auf eine Mehrzahl von Recheneinheiten (Rechenknoten, Prozessoren) zu verteilen.
-
In der Veröffentlichung ”A Data Distributed, Parallel Algorithm for Ray-Traced Volume Rendering”, veröffentlicht in Parallel Rendering Symposium, San Jose, 25–26 Oct 1993, ISBN: 0-8186-4920-8, Seiten 15–22, 105, ist ein Algorithmus zur strahlbasierten Volumendarstellung offenbart. Der Volumendatenansatz wird in Subvolumina aufgeteilt, welche in lokalen Speichern verschiedener Knoten gespeichert und getrennt lokal gerendert werden.
-
Die
JP 06274647 A beschreibt ein Verfahren zur Berechnung eines Bildes im Rahmen einer Volumendarstellung durch Ray Casting, wobei mehrere Rechenknoten mit zugehörigen Speicher verwendet werden.
-
In der
US 6559 843 B1 ist ein Verfahren zur Volumendarstellung beschrieben, wobei ein Volumendatensatz in Teilvolumina aufgeteilt wird. Jedes Teilvolumen wird dabei in einem einem Rechenelement zugeordneten Speicher gespeichert.
-
Es ist Aufgabe der Erfindung, die verteilte Berechnung von Bildern im Zuge eines Ray Castings zu verbessern.
-
Die Aufgabe wird durch die Gegenstände der unabhängigen Ansprüche gelöst.
-
Bei der Erfindung werden die für die im Zuge des Ray-Castings erforderlichen Berechnungen mittels einer Mehrzahl von Knoten, denen jeweils Speicher zugeordnet ist, durchgeführt. Bei diesen Knoten handelt es sich beispielsweise um Prozessoren. Diese Knoten können aber auch jede andere von Recheneinheiten darstellen, solange diese für die Übernahme von Teilaufgaben bei Berechnungen im Zuge eines Ray Castings geeignet sind.
-
Der Speicher kann beispielsweise durch Cache-Speicher gegeben sein. Generell ist jede Form von Speicher möglich, sofern die einzelnen Knoten einen zugeordneten Speicherbereich haben, auf den schneller zugegriffen werden kann als auf nicht zugeordneten Speicher. Eine derartige Situation ist z. B. in sogenannten Non-Uniform-Memory-Architecturee (NUMA) gegeben, welche dem Engpass der Speicherzugriffszeiten durch effizienteren Speicherzugriff eines Prozessors auf seinen eigenen, lokal zugewiesenen Speicher begegnen. Im Folgenden wird im Zusammenhang von dem einen Knoten zugeordneten Speicher als einem (für den Knoten) lokalen Speicher gesprochen. Nicht zugeordneter Speicher wird als nicht-lokaler Speicher bezeichnet. Dabei kann ein Speicherbereich auch für mehr als einen Knoten als lokaler Speicher fungieren.
-
Ziel des Ray-Castings ist es, ein Objekt bzw. Volumen zu visualisieren. Dazu werden das Volumen beschreibende Informationen (Voxel) bearbeitet und dann der Form eines zweidimensionalen Bildes dargestellt. Bei diesen Informationen handelt es sich beispielsweise um im Zuge einer CT-Aufnahme gegebene Grauwerte, die Volumenpunkten zugeordnet sind. Die das zu untersuchende Volumen charakterisierenden Informationen bzw. Daten werden in den den Knoten zugeordneten Speichern abgelegt. Zu diesem Zweck wird das Volumen in Subvolumina bzw. Teilvolumina unterteilt. Jedem Teilvolumen werden ein Knoten und dessen lokaler Speicher zugeordnet, wo die zum Teilvolumen gehörigen Daten (z. B. im Teilvolumen liegende Voxel) abgespeichert werden.
-
Eine zentrale Idee der Erfindung ist es nun, die Berechnung des Bildes durch die Mehrzahl von Knoten im Hinblick auf die durch das Ray-Casting vorgegebene Rechnungsweise bzw. den Berechnungsablauf durchzuführen. Beim Ray-Casting werden Strahlen simuliert, die das untersuchte Volumen durchdringen. Entlang dieser Strahlen werden Schritt für Schritt Berechnungen durchgeführt, so dass am Ende für jeden Strahl ein Bildpunkt resultiert. Erfindungsgemäß wird nun die Berechnung eines Bildpunktes mittels Generierung eines durch das zu untersuchende Volumen gesendeten Strahl Schritt für Schritt durchgeführt, wobei die einzelnen Schritte durch einen für den Berechnungsschritt geeigneten Knoten durchgeführt wird. Die Eignung eines Knotens für einen Berechnungsschritt bestimmt sich dabei aus den für diesen Schritt benötigten Daten. Die Zuordnung der Aufgabe, den Berechnungsschritt durchzuführen, zu einem Knoten kann z. B. davon abhängig gemacht werden, dass sämtliche Daten oder ein möglichst großer Teil der Daten, die für diesen Berechnungsschritt erforderlichen sind, lokal bei dem Knoten gespeichert sind. Für eventuell bei dem Berechnungsschritt erforderliche nicht lokal vorliegende Daten greift dann der Knoten auf bei anderen Knoten gespeicherte Daten zurück. In der Regel wird nur ein Strahlabschnitt in dem zugeordneten, Teilvolumen liegen, d. h. nach Abarbeitung des Teilabschnittes ist ein einem angrenzenden Teilvolumen zugeordneter Knoten für die weiteren strahlbezogenen Rechnungen geeigneter. Dann wird gegebenenfalls in Abhängigkeit eines Kriteriums ein anderer Knoten die für den Strahl erforderlichen Rechnungen übernehmen. Das Kriterium kann dabei auch auf die Geeignetheit eines Knotens für die simultane Berechnung eines Bündels oder einer Vielzahl von Strahlen abzielen. Als weiteres Kriterium für die Aufteilung der Berechnung können zusätzlich Aspekte der Lastverteilung berücksichtigt werden, vor allem im Zuge einer Überlastvermeidung.
-
Die Erfindung hat den Vorteil, dass die Berechnung eines Punktes über einen Strahl kontinuierlich durch schrittweises Abarbeiten des Strahles durchgeführt wird. Ein nachträgliches Anpassen von Strahlabschnitten zugehörigen Teilergebnissen ist somit nicht erforderlich. Weiter ist günstig, dass durch dieses strahlbezogene Berechnen die aktuell berechneten Werte für eine Optimierung der Rechnung verwendet werden können; so ist es vor allem möglich, die Berechnung des Punktes über einem Strahl zu beenden, wenn der Reststrahl keinen Beitrag mehr zum Bildpunkt liefert (Dies ist dann gegeben, wenn der Strahl im Volumen soweit vorgedrungen ist, dass das Volumen für den Strahl intransparent geworden ist).
-
Bei der Berechnung eines Punktes mittels eines Strahles ist es sinnvoll, wenn beim Wechsel des zuständigen Knotens strahlbezogene Daten von dem die Zuständigkeit verlierenden Knoten zu dem neu zuständigen Knoten übermittelt werden, so dass die Berechnung nahtlos weitergeführt werden kann.
-
Gemäß der Erfindung wird die Berechnung einer Mehrzahl von benachbarten Bildpunkten (Teilbereich oder Teilfläche des zu berechnenden Bildes) gemeinsam behandelt, d. h. es folgt eine gemeinsame Abarbeitung bzw. Zuordnung zu einem abarbeitenden Knoten. Für diese Teilfläche ist auch der englische Begriff Patch üblich. Den zunächst für den Patch zuständigen Knoten kann man festlegen, indem man den Patch auf das darzustellende Volumen projiziert und das Teilvolumen bzw. Subvolumen bestimmt, mit dem der Patch die größte Schnittfläche hat. Der dem Untervolumen zugeordnete Knoten wird dann mit der Abarbeitung des durch den Patch gegebenen Strahlenbündels betraut. Durch die schrittweise Abarbeitung des Patches wandert dieser Patch sozusagen durch das Volumen. Eine Zuordnung zu einem anderen Knoten und Berechnung durch diesen Knoten kann nun von der Lage des Patches innerhalb des Volumens abhängig gemacht werden. Mögliche Kriterien für einen Knotenwechsel sind dann, dass bei einem neuen Schritt ein anderer Knoten mehr Strahlen des Patches umfasst als der zuvor zuständige Knoten, oder dass der Patch vollständig das Volumen, das den bearbeitenden Knoten zugeordnet ist, verlassen hat.
-
Die Erfindung umfasst auch ein Rechensystem mit einer Mehrzahl von Knoten, die für die Durchführung eines erfindungsgemäßen Verfahrens ausgestaltet sind. Eine entsprechende Softwareprogrammierung ist möglich. Die für das Ray Casting erforderlichen Rechenschritte werden im Hinblick auf einen Geschwindigkeitsgewinn derzeit auch mittels Hardware-Lösungen, die auf FPGAs (field programmable gate arrays) aufsetzten, realisiert. Die Knoten des Rechensystems bilden z. B. eine NUMA-Architektur.
-
Im Folgenden wird der Erfindungsgegenstand im Rahmen eines Ausführungsbeispiels näher erläutert. Es zeigen:
-
1: eine Beispielskonfiguration eines mit Knoten gebildeten Rechensystems.
-
2: eine Illustration der Propagation eines Strahles durch zwei Teilvolumina.
-
3: Unterteilung der Bildfläche in Patches und Projektion eines Patchs auf das darzustellende Volumen.
-
4: Unterteiltes Volumen, auf welches exemplarisch zwei Patches projiziert sind.
-
5: Illustration des Vorgehens bei Behandlung eines Patches, der nicht vollständig lokal behandelbar ist.
-
6: Propagation eines Patches durch das Volumen.
-
7: Tabelle mit zwischen Knoten zwecks Weiterführung der Berechnung übermittelten Werten
-
In 1 ist ein mit Knoten gebildetes System dargestellt. Zu sehen sind acht Knoten 0 bis 7, die zwei Gruppen von jeweils vier Knoten (0 bis 3 und 4 bis 7) bilden, welche über ein breitbandiges Netz 10 verbunden sind. Die Knoten bilden eine NUMA Architektur (Non-Uniform-Memory-Architecture) mit lokalem sowie nicht-lokalem Speicher für die einzelnen Knoten. D. h. man hat ein Multiprozessorsystem mit einem Speicherdesign, wo die Speicherzugriffszeit von der Position des Speichers relativ zum Prozessor bzw. zum Knoten abhängt. Bei einer NUMA-Archictectur kann ein Prozessor auf seinen eigenen lokalen Speicher schneller zugreifen als auf einen nicht lokalen Speicher, d. h. lokaler und nicht-lokaler Speicher stehen für alle Prozessoren bzw. Knoten zur Verfügung mit dem Unterschied, dass ein Zugriff auf einen lokalen Speicher deutliche Geschwindigkeitsvorteile mit sich bringt.
-
Es wird nun das darzustellende Volumen in Teilvolumina unterteilt, wobei die einzelnen Teilvolumina eine Vielzahl von Gitterpunkten umfassen, zu denen Grauwerte des Volumens vorliegen. Zwei derartige Teilvolumina 15, 13 sind in 2 gezeigt. Beide Teilvolumina sind mit einem Gitter durchsetzt, wobei die Schnittpunkte des Gitters von dem jeweiligen Teilvolumen umfassten Voxeln entsprechen, d. h. zu diesen Koordinaten liegen Grauwerte von. Im Zuge des Ray Castings wird ein Strahl durch das Volumen gesendet; dies ist in 2 mittels eines Pfeiles 31 angedeutet. Entlang dieses Pfeiles 31 werden die Grauwerte durch Interpolation in äquidistanten Schritten bestimmt und für eine Zusammensetzung zu einem Bildpunkt bearbeitet, d. h. eine Klassifizierung und ein Shading wird durchgeführt. Den Subvolumina ist jeweils ein bearbeitender Knoten zugeteilt, der in seinem lokalen Speicher die entsprechenden Grauwerte des Subvolumens speichert. Für die beiden Subvolumina aus 2 handelt es sich beispielsweise um die Knoten 5 und 3 (wie in 2 dargestellt).
-
Günstig ist es, nicht jeden Strahl einzeln zu behandeln, sondern eine Gruppe von Strahlen, bzw. entsprechenden Bildpunkten zusammenzufassen. Dies ist in 3 verdeutlicht. Es ist eine Bildfläche 11 zu sehen, die in Teilflächen bzw. Patches unterteilt ist. Ein Patch umfasst z. B. 16 × 16 Bildpunkte bzw. Strahlen. Weiter ist die Projektion eines dieser Patches auf ein darzustellendes Volumen gezeigt. Dieses Volumen ist unterteilt in Subvolumina, die jeweils einem Knoten bzw. dem lokalen Speicher eines Knotens zugeordnet sind. Durch die Ziffern auf diesen Teilvolumina wird diese Zuordnung zum Ausdruck gebracht. Das vordere Teilvolumen rechts oben ist noch mal vergrößert dargestellt; es ist dem Knoten 3 zugeordnet. Die Projektion des Patches auf das Volumen erfolgt senkrecht zu der Hauptkomponente der Blickrichtung bzw. Ausbreitungsrichtung der Strahlen. Unterhalb des Volumens sind die Projektionen des Patches auf das Volumen konstituierende Subvolumina für die verschiedenen Schichten des Volumens gezeigt. In diesem Fall liegen die Projektionen auf Grenzen von Subvolumina. Es ist daher erforderlich, nach einem Kriterium ein zugehöriges Subvolumen bzw. einen zugehörigen Knoten festzulegen bzw. zu bestimmen. Wie dies geschehen kann, ist in 4 gezeigt.
-
In 4 sieht man die Projektion von zwei Patches, wobei die erste vollständig auf einem Subvolumen, welches dem Knoten 5 zugeordnet ist, zu liegen kommt. Die Bearbeitung dieses Patches wird daher – zumindest solang der Patch innerhalb der ersten Schicht sich bewegt – dem Knoten 5 zugeteilt. Dagegen liegt der Patch 2 auf der Grenzfläche von vier Subvolumina, die den Knoten 1, 2, 5 und 6 zugeordnet sind. Ein Kriterium für die Festlegung des zuständigen Knotens ist beispielsweise die Größe der Fläche der Projektion auf dem entsprechenden Subvolumen. Hier liegt der größte Teil des Patches auf dem Subvolumen, welches dem Knoten 2 zugeordnet ist, d. h. Knoten 2 wird für die Berechnung bestimmt, wobei im Zuge der Berechnung nicht nur auf lokalen Speicher, sondern auch auf den Knoten 1, 5 bzw. 6 zugeordneten Speicher zugegriffen wird. Dies ist noch einmal anhand von 5 verdeutlicht. Die Daten des dem Knoten 2 zugeordneten Subvolumens sind lokal, d. h. der Speicherzugriff ist entsprechend schnell, während Zugriff auf die Daten, die den anderen drei Subvolumen (mit Zuordnung zu den Knoten 1, 5 und 6) zugeordnet sind, mittels eines NUMA-Auftrags bzw. Requests erfolgt.
-
In 6 ist dargestellt, wie der projizierte Patch im Zuge der Abarbeitung der einzelnen Schritte bei der Berechnung der Bildpunkte entlang der Strahlen durch das Volumen wandert bzw. propagiert wird. Es ist ersichtlich, dass die Projektion den Bereich von Teilvolumina verlässt und zu anderen Teilvolumina weiter fortschreitet. So wechseln die Teilvolumina vollständig an den Grenzen der durch die Teilvolumina gebildeten Schichten, die parallel zu dem Patch verlaufen (hier vier Schichten). Es wird daher ein Kriterium vorgegeben, nach welchem einem Neuzuordnung des Patches bei einem neuen Berechnungsschritt vorzunehmen ist. Dieses Kriterium ist beispielsweise, dass der Patch vollständig den Bereich des Teilvolumens des zuständigen Knotens verlassen hat, was beispielsweise an den Grenzen der Schichten passiert. Ein alternatives Kriterium ist dadurch gegeben, dass jeweils das Teilvolumen (bzw. der dem Teilvolumen zugehörige Knoten) zugeordnet wird, das die meisten Strahlen des Patches umfasst. Dies berücksichtigt dann auch Änderungen innerhalb einer Schicht.
-
Wie aus dem Vorherigen ersichtlich ist, wechselt die Zuständigkeit der Knoten für die Berechnung des Patches bzw. der entsprechenden Bildpunkte. Um eine nahtlose Berechnung entlang der durch den Patch umfassten Strahlen durchzuführen, wird eine Kommunikation zwischen Knoten bei der Übergabe der Zuständigkeit vorgesehen, so dass die Berechnung nahtlos weitergeführt werden kann. Dabei wird die Menge der übermittelten Informationen nach Möglichkeit beschränkt, um die dadurch entstehende zusätzliche Ressourcen-Beanspruchung zu minimieren. Typische strahlbezogene Informationen sind in 7 gezeigt, welche gleichzeitig das Format der übermittelten Datenpakete beschreibt. Dabei werden folgende Informationen übergeben: der Startpunkt eines Strahls (RayStart) sowie dessen Richtung (RayDirection), die aktuellen Farbwerte des Strahles beim letzten Bearbeitungsschritt (RayColor) sowie der aktuelle Transparenzwert (RayOpacity), der letzte Grauwert (RayPrevVoxelColor) und eine den Strahl betreffende Zustandsinformation (RayState). Eine weitere wichtige Information ist die Schrittweite, mit der die Farbwertberechnung entlang des Strahles vorgenommen wird. Diese Information ist in der Länge des Richtungsvektors (RayDirection) enthalten.
-
Das Ausführungsbeispiel zeigt nur eine Ausgestaltung des Erfindungsgegenstandes. Weitere sind dem Fachmann ohne weiteres aus der Beschreibung der Erfindung ableitbar.