DE69821848T2 - Echt-Zeit PC basiertes Volumendarstellungssystem - Google Patents

Echt-Zeit PC basiertes Volumendarstellungssystem Download PDF

Info

Publication number
DE69821848T2
DE69821848T2 DE69821848T DE69821848T DE69821848T2 DE 69821848 T2 DE69821848 T2 DE 69821848T2 DE 69821848 T DE69821848 T DE 69821848T DE 69821848 T DE69821848 T DE 69821848T DE 69821848 T2 DE69821848 T2 DE 69821848T2
Authority
DE
Germany
Prior art keywords
voxels
memory
block
blocks
volume
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69821848T
Other languages
English (en)
Other versions
DE69821848D1 (de
Inventor
C. Hugh Lauer
Randy B. Newton Osborne
Hanspeter Pfister
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TeraRecon Inc
Original Assignee
TeraRecon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TeraRecon Inc filed Critical TeraRecon Inc
Publication of DE69821848D1 publication Critical patent/DE69821848D1/de
Application granted granted Critical
Publication of DE69821848T2 publication Critical patent/DE69821848T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Image Input (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • Die Volumengrafik ist ein Untergebiet der Computergrafik, die mit der Visualisierung von Gegenständen oder Erscheinungen, die als abgetastete Daten in drei oder mehr Dimensionen dargestellt sind, handelt. Diese Abtastungen werden als Volumenelemente oder "Voxel" bezeichnet und enthalten digitale Informationen, die körperliche Eigenschaften der untersuchten Gegenstände oder Erscheinungen darstellen. Beispielsweise können Voxeldaten für einen besonderen Gegenstand die Dichte, den Materialtyp, die Temperatur, die Geschwindigkeit oder irgendeine andere Eigenschaft an diskreten Punkten im Raum im Inneren und in der Nähe des Objekts darstellen.
  • Auf Voxel basierende Darstellungen von Gegenständen treten in vielen Situationen und Anwendungen auf. Beispielsweise erzeugen tomographische Abtastungen und magnetische Thermoresonanzabtastungen eines menschlichen Körpers oder einer industriellen Anordnung dreidimensionale Anordnungen von Daten, die die Dichte und den Materialtyp des Körpers oder Gegenstands darstellen. In gleicher Weise werden von Erdbeben und kontrollierten Explosionen gesammelte seismische Daten in dreidimensionalen Datenanordnungen, die die Typen von Erde und Felsen unterhalb der Erdoberfläche darstellen, verarbeitet. Bei der pränatalen Gesundheitsvorsorge erzeugen Ultraschallabtastungen eines menschlichen Fötus in der Gebärmutter 3D-Abtastdaten für nichtinvasive Untersuchung und diagnostische Zweck. Noch ein anderes Beispiel ist die Modellierung des Luftstroms über einem Flugzeugflügel oder durch ein Düsentriebwerk, die ebenfalls diskrete Abtastungen von Daten an Punkten im dreidimensionalen Raum, die für den Entwurf und die Analyse des Flugzeugs oder des Triebswerks verwendet werden können, ergibt.
  • Es ist natürlich, Bilder von durch Voxel dargestellten Gegenständen sehen zu wollen. In der Vergangenheit waren zwei Verfahren für diesen Zweck verfügbar. Ein Verfahren ist die Konstruktion einer Reihe von parallelen zweidimensionalen Bildscheiben, die jeweils einen leicht unterschiedlichen Querschnitt des betrachteten Gegenstands darstellen. Dies ist das Verfahren, dass typischerweise von Radiologen verwendet wird, wenn sie Computertomographieabtastungen oder magnetische Kernresonanzabtastungen des menschlichen Körpers betrachten. Radiologen sind darin geübt, dreidimensionale mentale Bilder der inneren Organe des Körpers anhand dieser Reihen von zweidimensionalen Bildern zu erzeugen. Die Scheiben sind im Allgemeinen parallel zu einer der primären Dimensionen oder Achsen des Körpers. So dass sie "sagittale", "axiale" und "koronale" Ansicht darstellen, die den Ra diologen geläufig sind. Dieses Verfahren zum Visualisieren auf Voxeln basierender Daten ist schwierig, erfordert Jahre der Übung und ist anfällig für Unsicherheiten, selbst bei sehr erfahrenen Anwendern.
  • Ein anderes Verfahren besteht in der Umwandlung von Voxeldaten in Darstellungen, die für ein Computergrafiksystem für die Anzeige geeignet sind. Die meisten Computergrafiksysteme sind heute so ausgebildet, dass sie Oberflächen von Gegenständen darstellen, indem sie solche Oberflächen in kleine Dreiecke oder Polygone unterteilen. Diesen Dreiecken werden Farben und Pegel der Durchlässigkeit oder Undurchlässigkeit zugewiesen, dann werden sie in Pixel, d. h. Bildelemente umgewandelt und auf den Computerschirm projiziert. Dreiecke entsprechend der Oberfläche im Vordergrund verdunkeln solche entsprechend Oberflächen im Hintergrund. Dreiecke können auch koloriert oder gefärbt mit Strukturen und anderen Mustern sein, um sie realistischer aussehen zu lassen. Zusätzlicher Realismus ist möglich durch Simulieren der Position und der Wirkungen von Licht, so dass sehr helle Stellen und Schatten auf dem sich ergebenden Bild erscheinen. Die Kunst und Wissenschaft dieser Art von Grafiksystem ist gut entwickelt und durch zahlreiche Literatur beschrieben wie das Buch "Computer Graphics: Principles and Practice" 2. Ausgabe, von J. Foley, A. van Dam, S. Feiner und J. Hughes, veröffentlicht von Addison-Wesley of Reading, Massachusetts, 1990.
  • Diese Art von auf Polygonen basierenden Grafiksystemen ist besonders geeignet für die Darstellung von Bildern von Gegenständen, die als Computermodelle ihrer Oberfläche dargestellt sind, wie architektonische oder mechanische Zeichnungen. Jedoch ist sie weniger zweckmäßig für die Visualisierung von durch 3D- Abtastdaten oder Voxel dargestellte Gegenstände, da der Vorgang der Umwandlung der Abtastung in Dreiecke oder Polygone selbst rechenmäßig aufwendig ist. Viele Algorithmen bestehen für die Durchführung der Umwandlung von Voxeln in Polygone, einschließlich des berühmten Marching-Cubes-Algorithmus, der in einem Papier von W. E. Lorensen und H. E. Cline mit dem Titel "Marching Cubes: A high-resolution 3D surface construction algorithm" beschrieben ist, dargestellt in Computer Graphics, the Proceedings of the 1987 SIGGRAPH Conference, Seiten 163–169. Alle diese Algorithmen leiden unter dem Problem des Verlustes von Einzelheiten der Oberfläche, was bei Anwendungen wie medizinischen Abbildungen und anderen nicht hinnehmbar ist.
  • In den letzten Jahren ist ein alternatives Verfahren aufgetreten, das als Volumendarstellung bezeichnet wird. Dieses Verfahren ist eine Form der digitalen Signalverarbeitung, bei der den individuellen Voxeln einer auf Voxeln basierenden Darstellung Farben und Pegel der Durchlässigkeit oder Undurchlässigkeit zugewiesen sind. Sie werden dann auf eine zweidimensionale Betrachtungsfläche wie einen Computerschirm projiziert, wobei undurchlässige Voxel im Vordergrund andere Voxel im Hintergrund verdunkeln. Diese Akkumulation von projizierten Voxeln führt zu einem visuellen Bild des Gegenstands. Lichtberechnungen können für die individuellen Voxel durchgeführt werden, um das Erscheinen von hellen Stellen und Schatten in einer ähnlichen Weise wie bei der herkömmlichen Computergrafik zu schaffen.
  • Durch Änderung der Zuweisung von Farben und der Durchlässigkeit zu besonderen Voxeldatenwerten können unterschiedliche Ansichten des Äußeren und Inneren eines Gegenstands gesehen werden. Z. B. kann ein Chirurg, der die Bänder, Sehnen und Knochen eines menschlichen Knies für die Vorbereitung einer Operation untersuchen muss, eine tomographische des Knies benutzen und bewirken, dass Voxeldatenwerte entsprechen dem Blut, der Haut und den Muskeln als vollständig transparent erscheinen. Bei einem anderen Beispiel kann ein Mechaniker, der eine tomographische Abtastung einer Turbinenschaufel oder Schweißstelle in einem Düsentriebwerk verwendet, bewirken, dass Voxeldatenwerte, die festes Metall darstellen, als transparent erscheinen, während solche, die Luft darstellen, undurchsichtig sind. Die ermöglicht die Betrachtung interner Fehlstellen in dem Metall, die andernfalls für das menschliche Auge versteckt wären.
  • Der Vorgang des Schaffens eines betrachtbaren Bildes aus Computerdaten wird als "Darstellung" bezeichnet, und der Vorgang des Schaffens eines betrachtbaren Bildes aus Voxeldaten wird als "Volumendarstellung" bezeichnet. Der Mechanismus zum Kartieren der Datenwerte von individuellen Voxeln in Farben und Durchlässigkeiten wird als "Übertragungsfunktion" bezeichnet.
  • a) Projektion von Voxeldaten
  • Es gibt eine Anzahl von Techniken, die Datenpunkte oder Voxel, die einen Gegenstand darstellen, zu nehmen und sie auf eine flache Betrachtungsfläche wie einen Computerschirm zu projizieren. Bei jeder dieser Techniken wird ein zu betrachtender Gegenstand relativ zu der Betrachtungsfläche positioniert durch Übersetzen der dreidimensionalen abgetasteten Daten, die den Gegenstand repräsentieren, in die räumlichen Koordinaten des Raums vor oder hinter der Betrach tungsfläche. Die Techniken sind unterschiedliche Verfahren zum Berechnen der Farbe und Intensität des Lichts an diskreten Punkten oder "Pixeln" auf der Betrachtungsfläche.
  • Eine Technik besteht darin, eine Reihe von schnellen Fourier-Transformationen der Voxeldaten zu berechnen, sie zu kombinieren, dann die inverse Fourier-Transformation zu berechnen, um das sich ergebende zweidimensionale Bild zu erhalten. Dies ist beschrieben von T- Malzbender im US-Patent # 5 414 803, das den Titel "Method Utilizing Frequency Domain Representation for Generating Two-Dimensional Views of Three-Dimensional Objects" trägt.
  • Eine zweite Technik, die als "splatting" bezeichnet wird, wurde beschrieben von L. A. Westover in der Dissertation mit dem Titel "Splatting: A Parallel, Feed-Forward Volume Rendering Algorithm", das dem Department of Computer Science der Universität von North Carolina im Juli 1991 dargestellt und von diesem im Technical Report Nummer TR91-029 veröffentlicht wurde. Bei der Splatting-Technik wird jedes individuelle Voxel eines Satzes von dreidimensionalen abgetasteten Daten in der Richtung des Auges des Betrachters projiziert. Die Farben und die Lichtdurchlässigkeit des projizierten Voxels werden mathematisch mit den Pixeln der Betrachtungsfläche in den unmittelbaren Bereich umgebend den Punkt, an dem die Projektion den Computerschirm schneidet, kombiniert. Wenn alle Voxel so akkumuliert sind, erscheint das resultierende Bild als ein zweidimensionales Bild eines dreidimensionalen Gegenstands.
  • Eine dritte Technik besteht in der Umwandlung des dreidimensionalen Satzes von Daten in eine so genann te "Strukturkarte" und dann deren Speicherung in dem Strukturkartenspeicher, der bei bestimmten Typen von modernen Computersystemen gefunden werden kann. Dann wird diese Strukturkarte verwendet zum "Färben" oder "Kolorieren" einer Reihe von parallelen Ebenen, wobei jede senkrecht zu der Betrachtungsrichtung ist, so dass jede als ein Querschnitt des fraglichen Gegenstands erscheint. Diese Ebenen werden dann mathematisch durch das Grafiksubsystem des Computersystems kombiniert, um ein Bild von etwas zu erzeugen, das dem Betrachter als ein dreidimensionaler Gegenstand erscheint. Dieses Verfahren wird im Einzelnen in einem Papier mit dem Titel "Accelerated volume rendering and tomographic reconstruction using texture mapping hardware", beschrieben, präsentiert von B. Cabral, N. Cam und J. Foran bei dem "Workshop on Volume Visualization" im Jahre 1991. Es wird weiterhin beschrieben von T. J. Cullip und U. Neumann in einem technischen Bericht Nummer TR93-027 mit dem Titel "Accelerating volume reconstruction with 3D texture mapping hardware", veröffentlicht von dem Department of Computer Science der Universität von North Carolina bei Chapel Hill.
  • Eine vierte Technik wird als "Strahlenwerfen" bezeichnet. Bei dieser Technik gehen imaginäre Strahlen von dem Auge des Betrachters durch die genaue Mitte jedes Pixels der Betrachtungsfläche, dann durch den zu betrachtenden Gegenstand. Jeder Strahl, der durch das Volumen hindurchgeht, wird mit den visuellen Eigenschaften jedes Punktes entlang seines Pfades "aufgeladen". Wenn der Strahl durch das Volumen hindurchgeht, ist seine Gesamtcharakteristik die Summe oder das mathematische Integral der Eigenschaften aller Punkte entlang des Strahls. Diese Summe oder dieses Integral wird dann dem Pixel zugewiesen, durch das der Strahl hindurch geht, wodurch bewirkt wird, dass ein Lichtpunkt auf der Betrachtungsfläche erscheint. Die Akkumulation aller derartigen Strahlen erzeugt ein sichtbares Bild auf der Betrachtungsfläche. Wenn Strahlen durch ein Volumen kommen, gehen einige zwischen Punkten hindurch, die durch die dreidimensionalen abgetasteten Daten repräsentiert werden, wobei sie diese nicht genau schneiden. Es wird angenommen, dass diese "verfehlten" Datenpunkte oder Voxel nicht in der Farbe oder Intensität des Pixels entsprechend irgendeinem Strahl reflektiert werden. Um das Problem dieser verfehlten Datenpunkte zu lösen, werden Interpolationstechniken angewendet, um synthetisch Werte von Voxeln in der unmittelbaren Nachbarschaft der verfehlten Punkte zu erzeugen. Bei einem Beispiel wird ein synthetischer Wert für jede Ebene von Abtastpunkten oder Voxeln erzeugt, die durch den Strahl gekreuzt wird, durch das mathematische Verfahren der bilinearen Interpolation der Werte der vier nahesten Voxel in dieser Ebene. Bei einem anderen Beispiel werden synthetische Punkte mit gleichförmigem Abstand entlang des Strahls durch das mathematische Verfahren der trilinearen Interpolation der jeden Punkt umgebenden acht nahesten Voxel erzeugt. Auf diese Weise berücksichtigen, wenn der Strahl durch den Gegenstand hindurchgeht, die entlang des Weges akkumulierten Eigenschaften die Eigenschaften der nahesten Nachbarn, um einen Wert für den verfehlten Punkt synthetisch zu erzeugen. Es wird angenommen, dass es mögliche Wege zur Erzeugung synthetischer Punkte gibt, und dass diese eine erhebliche Bedeutung für die Qualität und den Realismus des projizierten Bildes haben.
  • Damit ein zweidimensionales Bild durch das menschliche Auge als das Bild eines dreidimensionalen Gegenstands oder einer Szene wahrgenommen wird, ist es wichtig, dass das Bild die Wirkungen von Licht und Schatten enthält. Es ist der Gegenstand einer übermäßigen Literatur in der Computergrafik, enthaltend das vorgenannte Buch von J. Foley et al. Die meisten Techniken drehen sich um den Begriff des Findens des "normalen Vektors" oder der senkrechten Richtung zu jedem Punkt auf jeder Oberfläche des dargestellten Gegenstands, wobei dann Berechnungen durchgeführt werden auf der Grundlage dieser normalen Vektoren und der Positionen des Betrachters und der Lichtquellen, um solche Punkte zu beleuchten, wodurch die Wirkung von hellem Licht und Schatten geschaffen wird.
  • Während bei der herkömmlichen Computergrafik auf der Grundlage von Polygonen und Oberfläche diese normalen Vektoren direkt anhand der mathematischen Modelle der Oberflächen berechnet werden können, müssen bei der Volumengrafik die normalen Vektoren aus den abgetasteten Daten selbst herausgezogen werden. Dies muss für jedes Voxel erfolgen, z. B. durch Prüfen der Werte der anderen Voxel in seiner unmittelbaren Nachbarschaft. An der Grenze von unterschiedlichen Materialien, z. B. unterschiedlichen Geweben, ergeben sich beträchtliche Differenzen oder Gradienten in den Werten der benachbarten Voxel. Anhand dieser Differenzen können die normalen Vektoren berechnet werden. Dann kann, wann immer ein Typ von Material durchsichtig ist, während ein angrenzendes Material undurchsichtig ist, die Projektion die Kanten und Oberflächen zwischen den unterschiedlichen Materialien klar machen. Darüber hinaus können die Lichtberechnungen auf der Grundlage dieser normalen Vektoren die Unregelmäßigkeiten dieser Oberflächen in einer solchen Weise hervorheben, dass sie durch das menschliche Auge als dreidimensional erkennbar sind. Beispielsweise können Furchen in der das Gehirn bildenden grauen Substanz auf diese Weise anhand einer tomographischen Abtastung klar dargestellt werden, indem einfach die Haut und der Schädelknochen transparent gemacht werden.
  • b) Rechenanforderungen
  • Es wird davon ausgegangen, dass alle vier vorgenannten Techniken zum Projizieren von Voxeldaten auf eine Berechnungsoberfläche einen sehr großen Berechnungsaufwand erfordern und bisher ungeeignet waren für die Ausrüstung der Größe und Kosten von Personalcomputern oder Tischcomputern. Darüber hinaus fordert die Einbeziehung vieler unterschiedlicher Techniken, um das Volumen in einer Weise darzustellen, die beispielsweise bei der medizinischen Diagnose nützlich ist. Im Allgemeinen muss jedes Voxel eines dreidimensionalen Datensatzes zumindest einmal geprüft werden, um das projizierte Bild zu erzeugen. Wenn der abgetastete Datensatz ein Würfel mit 256 Datenpunkten auf einer Seite ist, wobei dies eine typische Größe für gegenwärtige tomographische und magnetische Kernresonanzabtastungen für medizinische Zwecke ist, dann müssen insgesamt 2563 oder angenähert 16 Millionen Voxel ausgewertet werden. Wenn jedoch der abgetastete Datensatz ein Würfel mit 4096 Datenpunkten auf einer Seite ist, wobei dies typisch für geologische Daten ist, die bei der Suche nach Öl und Gas verwendet werden, dann müssen insgesamt 40933 oder angenähert 64 Milliarden Voxel ausgewertet werden, um nur ein einzelnes Bild darzustellen.
  • Es wird weiterhin davon ausgegangen, dass, wenn die Darstellung statischer Bilder von statischen Daten rechenmäßig kostenaufwendig ist, dies zur Bedeutungslosigkeit verblasst, wenn die Rechenleistung betrachtet wird, die zum Darstellen von Gegenständen erfor derlich ist, welche sich bewegen, sich drehen oder in irgendeiner anderen Weise ändern. Viele Anwendungen erfordern eine Visualisierung von Gegenständen, die sich in Echtzeit zu bewegen scheinen, was eine Darstellung in der Größenordnung von 30 Bildern pro Sekunde bedeutet. D. h., jedes Voxel muss 30mal pro Sekunde wiederbewertet oder projiziert werden. Bei einem Volumen von 2563 Datenpunkten bedeutet dies, dass Daten 2563 × 30 oder angenähert 503 Millionen Mal pro Sekunde aus den abgetasteten Daten abgerufen werden müssen. Wenn die Volumendarstellung durch ein Computerprogramm erfolgt, sind zwischen 10 und 100 Computerbefehle pro Datenpunkt pro Bild erforderlich. Daher beträgt die Verarbeitungsleistung zum Betrachten sich drehender oder sich ändernder Volumengrafikbilder zwischen 5 und 50 Milliarden Operationen pro Sekunde. Es ist zu beachten, dass bei jeder Verdoppelung der Anzahl von Datenpunkten auf der Seite eines kubischen Datensatzes die erforderliche Verarbeitungsleistung sich um einen Faktor acht erhöht.
  • Der übliche Kompromiss besteht in der Opferung der Bildgeschwindigkeit oder der visuellen Qualität oder der Kosten und der Größe. Gegenwärtig ist das Beste, dass man durch Darstellen eines 2563-Volumens bei der Computersoftware erhalten kann, eines oder zwei Bilder pro Sekunde mit acht verbundenen Prozessoren des Typs, die bei gegenwärtigen hochwertigen Personalcomputern gefunden werden. Bei sehr kostenaufwendigen Computern, die insbesondere spezialisiert für Grafik sind und sehr große Mengen von Strukturspeichern enthalten, können Bildgeschwindigkeiten bis zu 15 Bilder pro Sekunde erzielt werden durch Opfern von Licht und Schatten. Andere Entwicklungen, die tatsächlich Echtzeit-Bildgeschwindigkeiten von 30 Bildern pro Sekunde und darüber ohne Beeinträchtigung der Bildqualität erzielen, haben sich bei sehr spezialisierten Systemen ergeben, die zu groß und zu kostenaufwendig für persönliche oder Tischgeräte sind.
  • c) Verringerung der Rechenanforderungen
  • Um diese ziemlich düstere Aussicht zum Erhalten einer Echtzeit-Volumendarstellung mit 30 Bildern pro Sekunde auf der Grundlage der Strahlenwurftechnik zu verbessern, ist eine Entwicklung von Ari Kaufmann und Hanspeter Pfister an der State University of New York beschrieben im US-Patent # 5 594 842 "Apparatus and Method for Real-time Volume Visualization". Bei dieser Entwicklung können Verbesserungen erhalten werden durch paralleles Hindurchführen einer großen Anzahl von Strahlen durch ein Volumen und Verarbeiten von diesem durch jeweils gleichzeitiges Auswerten der Volumendaten einer Scheibe. Wenn man die Scheibenverarbeitung mit spezialisierter elektronischer Hardware schnell durchführen kann, im Gegensatz zur Software, wurde gezeigt, dass man mit geringen Kosten eine Erhöhung von zwei Bildern pro Sekunde auf 30 Bilder pro Sekunde erreichen kann.
  • In der Theorie wird dies bei Hardware erzielt durch die Verwendung einer Vielzahl von Speichermodulen und spezialisierten Verarbeitungspipelines. Bei Verwendung einer große Anzahl von Speichermodulen und Pipelines kann man Daten parallel aus verschiedenen Speichermodulen in einem System herausholen, das nun als "Cube-4" bezeichnet wird und das beschrieben wurde durch H. Pfister, A. Kaufmann und T. Wessels in einem Papier mit dem Titel "Towards a Scalable Architecture for Real-time Volume Rendering", präsentiert bei dem 10. Euro-graphics Workshop on Graphics Hardware in Maastricht, Niederlande, am 28. und 29. August 1995, und das weiterhin beschrieben ist in einer Dissertation von Hanspeter Pfister, eingereicht bei dem Department of Computer Science bei der State University of New York bei Stony Brook im Dezember 1996.
  • Das Wesen des Cube-4-Systems besteht darin, dass dreidimensionale abgetastete Daten, die den Gegenstand darstellen, durch eine als "skewing" bezeichnete Technik über die Speichermodule verteilt werden, so dass benachbarte Voxel in jeder Dimension in benachbarten Speichermodulen gespeichert sind. Jedes Speichermodul ist mit seiner eigenen Verarbeitungspipeline assoziiert. Darüber hinaus sind Voxel so in den Speichermodulen organisiert, dass, wenn es insgesamt P Pipelines und P Speichermodule gibt, dann P benachbarte Voxel gleichzeitig parallel in einem einzelnen Zyklus eines Computerspeichersystems geholt werden können, unabhängig von der Betrachtungsrichtung. Dies reduziert die Gesamtzeit zum Holen von Voxeln aus dem Speicher um einen Faktor P. Wenn z. B. der Datensatz 2563 Voxel hat und P den Wert vier hat, dann werden nur 2563 ÷ 4 oder angenähert vier Millionen Speicherzyklen benötigt, um die Daten zu holen, die ein Bild ergeben.
  • Eine zusätzliche Eigenschaft des Cube-4-Systems besteht darin, dass die für die Volumendarstellung erforderliche Rechenverarbeitung in Pipelines mit spezialisierten Funktionen für diesen Zweck organisiert ist. Jede Pipeline ist in der Lage, die Verarbeitung eines neuen Voxels in jedem Zyklus zu starten. Somit holt in dem ersten Zyklus die Pipeline ein Voxel von ihrem assoziierten Speichermodul und führt den ersten Verarbeitungsschritt durch. Dann führt sie in dem zweiten Zyklus den zweiten Verarbeitungsschritt für dieses erste Voxel durch, während sie gleichzeitig das zweite Voxel holt und den ersten Verarbeitungsschritt bei diesem Voxel durchführt. In gleicher Weise führt die Pipeline in dem dritten Zyklus den dritten Verarbeitungsschritt für das erste Voxel, den zweiten Verarbeitungsschritt für das zweite Voxel und den ersten Verarbeitungsschritt für das dritte Voxel durch. Auf diese Weise schreiten Voxel von jedem Speichermodul durch ihre entsprechende Pipeline in einer Blockierschrittart fort, eines nach dem anderen, bis sie vollständig verarbeitet sind. Somit kann anstelle des Erfordernisses von 10 bis 100 Computerbefehlen pro Voxel ein neues Voxel in jedem Zyklus verarbeitet werden.
  • Eine weitere innovative Eigenschaft des Cube-4-Systems besteht darin, dass jede Pipeline nur mit ihrem nahesten Nachbarn kommuniziert. Eine derartige Kommunikation ist beispielsweise erforderlich zum Übertragen von Voxelwerten von einer Pipeline zu der nächsten für Zwecke der Schätzung von Gradienten oder normalen Vektoren in der Weise, dass Licht- und Schatteneffekte berechnet werden können. Sie wird auch verwendet zum Übertragen der Werte von Strahlen, wenn sie durch das Volumen hindurchgehen, wobei visuelle Eigenschaften der Voxel in der Nähe der Bereiche, durch die sie hindurchgehen, akkumuliert werden.
  • Diese Entwicklung der Kommunikation mit dem nahesten Nachbarn führt zu einem der Hauptvorteile von Cube-4, nämlich dass es "skalierbar" ist. D. h., um größere Mengen von dreidimensionalen abgetasteten Daten unterzubringen und/oder um diese Daten schneller zu verarbeiten, ist es nur erforderlich, mehr Speichermodule und Pipelines hinzuzufügen. Es gibt keine gemeinsamen Busse oder andere Systemressourcen, die durch die Erweiterung überlastet werden.
  • Bei dem Cube-4-System erfolgt die Volumendarstellung wie folgt. Daten werden als ein Würfel oder als ein anderer rechteckiger Festkörper organisiert. Es wird zuerst die Fläche dieses Würfels oder Festkörpers betrachtet, die am senkrechtesten zu der Betrachtungsrichtung ist, eine Teilreihe von P Voxeln an der oberen Ecke wird gleichzeitig in einem Speicherzyklus aus P Speichermodulen geholt und in die erste Stufe der P Verarbeitungspipelines eingeführt. In dem zweiten Zyklus werden diese Voxel zu der zweiten Stufe ihrer Pipelines bewegt und/oder zu den zweiten Stufen von benachbarten Pipelines übertragen. Zur gleichen Zeit werden die nächsten P Voxel aus derselben Reihe geholt und in die erste Stufe ihrer Pipelines eingeführt. In jedem nachfolgenden Zyklus werden P mehr Voxel aus der oberen Reihe geholt und in ihre Pipelines eingeführt, während vorher geholte Voxel zu nachfolgenden Stufen ihrer Pipelines bewegt werden. Dies wird fortgesetzt, bis die gesamte Reihe von Voxeln geholt wurde. Dann wird die nächste Reihe geholt, jeweils P Voxel gleichzeitig, dann die nächste usw., bis alle Reihen der Fläche des Volumendatensatzes geholt und in ihre Verarbeitungspipelines eingeführt wurden.
  • Diese Fläche wird als "Scheibe" bezeichnet. Dann bewegt sich das Cube-4-System wieder zu der oberen Ecke, aber beginnt diesmal mit dem Holen der P Voxel in der oberen Reihe unmittelbar hinter der Fläche, d. h. aus der zweiten "Scheibe". Auf diese Weise schreitet es durch die zweite Scheibe des Datensatzes fort, eine Reihe gleichzeitig und innerhalb jeder Reihe P Voxel gleichzeitig. Nach Beendigung der zweiten Scheibe geht es zu der dritten Scheibe weiter, dann zu nachfolgenden Scheiben in einer ähnlichen Weise, bis alle Scheiben verarbeitet wurden. Der Zweck dieser Maßnahme besteht darin, alle Voxel in Reihenfolge zu holen und zu verarbeiten, jeweils P Voxel gleichzeitig, bis der gesamte Volumendatensatz verarbeitet wurde und ein Bild erzeugt wurde.
  • In der Terminologie des Cube-4-Systems wird eine Reihe von Voxeln als "Strahl" bezeichnet, und eine Gruppe von P Voxeln innerhalb eines Strahls wird als "Teilstrahl" bezeichnet.
  • Die Verarbeitungsstufen des Cube-4-Systems führen alle erforderlichen Berechnungen für die Strahlenwurftechnik durch, einschließlich der Interpolation von Abtastungen, Schätzung der Gradienten oder normalen Vektoren, Zuweisungen von Farben und Durchlässigkeit oder Undurchlässigkeit und Berechnung von Licht- und Schatteneffekten, um das endgültige Bild auf der zweidimensionalen Betrachtungsfläche zu erzeugen.
  • Das Cube-4-System wurde entwickelt, um in der Lage zu sein, in der Halbleitertechnologie implementiert zu werden. Jedoch verhindern zwei begrenzende Faktoren, dass es die geringe Größe und die niedrigen Kosten erreicht, die für Personalcomputer oder Tischcomputer erforderlich sind, nämlich die Geschwindigkeit des Zugriffs auf Voxelwerte in Speichermodulen und die Größe des internen Speichers, der in jeder Verarbeitungspipeline benötigt wird. Mit Bezug auf die Geschwindigkeit des Zugriffs zum Speicher sind gegenwärtige Halbleiter-Speichervorrichtungen, die zum Speichern eines Volumendatensatzes in einem Cube-4-System geeignet sind, entweder zu langsam oder zu teuer oder beides. Viel preisgünstigere Speicherlösungen werden für ein praktisches System benötigt, das in einem Personalcomputer oder Tischcomputer ver wendbar ist. Mit Bezug auf den internen Speicher erfordert der Cube-4-Algorithmus, dass jede Verarbeitungspipeline Zwischenergebnisse während der Verarbeitung speichert, wobei die Größe des Speichers proportional zu dem Bereich der Fläche des dargestellten Volumendatensatzes ist. Für einen Datensatz von 2563 ist diese Speichermenge so groß, dass es die Größe einer Einzelchip-Verarbeitungspipeline übermäßig erhöhen würde und daher übermäßige Kosten für ein Personalcomputersystem bewirken würde. Ein praktisches System erfordert eine Lösung zum Herabsetzen dieser Menge von Zwischenspeicherung.
  • d) Blockbildungs- und SRAM-Technologie
  • Bei anderen experimentellen Systemen, die zu etwa derselben Zeit wie Cube-4 entwickelt wurden, wurden diese Beschränkungen ignoriert. Ein derartiges System wird als "DIV2A", die Distributed Volume Visualization Architecture, bezeichnet und wurde beschrieben in einem Papier von J. Lichtermann mit dem Titel "Design of a Fas Voxel Processor for Parallel Volume Visualization", dargestellt auf dem 10. Eurographics Workshop on Graphics Hardware, 28. und 29. August 1995, in Maastricht, Niederlande. Ein anderes derartiges System ist das VIRIM-System, beschrieben von M. de Boer, A. Gröpl, J. Hesser und R. Männer in einem Papier mit dem Titel "Latency- and Hazard-Free Volume Memory Architecture for Direct Volume Rendering", dargestellt bei dem 11. Eurographics Workshop on Graphics Hardware am 26.–27. August 1996 in Poitiers. Frankreich.
  • Das DIV2A-System umfasst sechzehn Verarbeitungspipelines, die zu einem Ring miteinander verbunden sind, so dass jede Pipeline direkt mit ihrem nächsten Nach barn auf jeder Seite kommunizieren kann. Jede Verarbeitungspipeline hat ein assoziiertes Speichermodul zum Speichern eines Teils des Volumendatensatzes. Voxel sind in kleine Subwürfel organisiert, und diese Subwürfel sind so unter den Speichermodulen verteilt, dass benachbarte Subwürfel in benachbarten Speichermodulen in jeder der drei Dimensionen gespeichert sind. Um jedoch die erforderliche Speicherzugriffsgeschwindigkeit zum Darstellen eines 2563-Datensatzes mit 30 Bildern pro Sekunde zu erzielen, benötigt das DIV2A-System acht parallele Speicherbänke innerhalb jedes Speichermoduls. Darüber hinaus ist jede Speicherbank mit einem statischen Speicher mit wahlweisem Zugriff oder einer SRAM-Vorrichtung implementiert.
  • In der gegenwärtigen Halbleitertechnologie sind SRAM-Vorrichtungen sehr schnell, so dass sie hohe Geschwindigkeiten des Datenzugriffs stützen können, aber sie sind auch sehr teuer, haben einen hohen Leistungsverbrauch und eine begrenzte Kapazität. Da das DIV2A-System acht von diesem pro Verarbeitungspipeline benötigt und sechzehn Verarbeitungspipelines aufweist, werden insgesamt 128 SRAM-Vorrichtungen benötigt, nur um die Voxel eines 2563-Volumendatensatzes zu speichern. Dies überschreitet bei weitem die körperliche Größe und die Leistungsbeschränkungen einer Platte, die auf der Rückseite eines Personalcomputers eingesteckt werden kann. Systeme wie DIV2A und VIRIM haben die Größe eines Einschubs eines Dateischrankes, nicht enthaltend den Tischcomputer, mit dem sie verbunden sind.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Um die Echtzeit-Volumendarstellung für Personalcomputer und Tischcomputer praktisch zu machen, verbessert die vorliegende Erfindung weiterhin das Cube-4-System durch Vorsehen von Techniken einschließlich Architekturmodifizierung, um die Verwendung von dynamischen Speichern mit wahlweisem Zugriff oder DRAM-Vorrichtungen für Speichermodule mit hoher Kapazität und niedrigen Kosten zu ermöglichen. DRAM-Vorrichtungen oder "Chips" sind in der Lage, fünf- bis zehnmal mehr Informationen pro Chip als SRAM-Vorrichtungen zu speichern, kosten das fünf- bis zehnfache weniger pro Bit gespeicherter Informationen und benötigen für den Betrieb beträchtlich weniger Leistung. DRAM-Vorrichtung sind gegenwärtig erhältlich mit Kapazitäten von 4, 16 und 64 Megabits. Bei Verwendung von 64-Megabit-DRAMs werden nur vier Chips benötigt, um einen Datensatz von 2563 Voxeln mit 16 Bits pro Voxel zu speichern. Durch Koppeln von vier DRAM-Modulen mit vier maßgefertigten Halbleitervorrichtungen für Verarbeitungspipelines ermöglicht die vorliegende Erfindung die Implementierung eines Echtzeit-Volumendarstellungssystems auf einer Platte, die an der Rückseite eines Personalcomputers eingesteckt werden kann.
  • Jedoch sind DRAM-Vorrichtungen oder -Chips auch viel langsamer als SRAM-Vorrichtungen. Normalerweise kann ein DRAM-Chip nur acht bis zwölf Millionen Zugriffe pro Sekunde stützen gegenüber 50 bis 200 Millionen pro Sekunde bei einem SRAM-Chip. Obgleich vier DRAM-Vorrichtungen ausreichend Kapazität zum Speichern eines Volumendatensatzes von 2563 Voxeln haben, können sie daher zusammen nur etwa 32 bis 48 Millionen Zugriffe pro Sekunde stützen, weit weniger als die Datengeschwindigkeit von 503 Millionen Zugriffen pro Sekunde, die benötigt werden, um den Datensatz mit 30 Bildern pro Sekunde darzustellen.
  • Um den Nutzen der hohen Kapazität und der niedrigen Kosten von DRAMs zu erzielen, verwendet die vorliegende Erfindung DRAM-Chips, die den Zugriff im "Stoßbetrieb" stützen. Dieses Merkmal wird jetzt in einigen DRAM-Produkten gefunden und ermöglicht Zugriffsgeschwindigkeiten, die so hoch wie diejenigen von SRAM-Vorrichtungen sind, aber nur, wenn auf aufeinander folgende Speicherstellen in rascher Folge zugegriffen wird. Um in der Lage zu sein, dieser Bedingung zu genügen, und daher in der Lage zu sein, die Vorteile von Stoßbetrieb-DRAMs zu nutzen, sind andere architektonische Modifikationen des Cube-4-Systems erforderlich. Die vorliegende Erfindung verwendet vier Techniken für diesen Zweck.
  • Bei der ersten Technik, die als "Blockbilden" bezeichnet wird, sind Voxeldaten so in Blöcken organisiert, dass alle Voxel innerhalb eines Blocks an aufeinander folgenden Speicheradressen innerhalb eines einzelnen Speichermoduls gespeichert sind. Hierdurch ist es möglich, einen ganzen Block von Daten in einem Stoß anstelle eines Voxels zur gleichen Zeit zu holen. Auf diese Weise kann eine einzelne Verarbeitungspipeline mit Datengeschwindigkeiten 125 Millionen oder mehr Voxeln pro Sekunde zu einem Speicher zugreifen, wodurch es möglich ist, dass vier Verarbeitungspipelines und vier DRAM-Module 2563 Datensätze in 30 Bildern pro Sekunde darstellen.
  • Eine zweite Technik zur Verbesserung des Cube-4-Systems wird als "Abschnittsbildung" bezeichnet. Bei dieser Technik wird der Volumendatensatz in Abschnitte geteilt und ein Abschnitt gleichzeitig dargestellt. Da jeder Abschnitt eine kleinere Fläche für die Darstellungspipeline darstellt, ist weniger interner Speicher erforderlich. Darüber hinaus können Zwischenergebnisse der Verarbeitung individueller Abschnitte außerhalb der Verarbeitungspipeline gespeichert und später miteinander kombiniert werden, um ein vollständiges Bild des darzustellenden Gegenstands zu bilden. Die Wirkung dieser Technik besteht in der Verringerung der Größe des Zwischenspeichers in einer Verarbeitungspipeline auf einen annehmbaren Pegel für die Halbleiterimplementierung.
  • Die dritte Technik verringert die Anzahl von Stiften und die Geschwindigkeiten, bei denen Daten über die benachbarten Verarbeitungspipelines miteinander verbindenden Stifte übertragen werden müssen. Dies erfolgt dadurch, dass Nutzen aus einem Seiteneffekt des Blockierens gezogen wird, bei dem die Menge von Daten, die pro Block übertragen werden müssen, um einen Faktor von angenähert 1/B herabgesetzt wird, wobei B die Anzahl von Voxeln an der Kante eines Blockes ist.
  • Eine letzte Technik, die als "Miniblockbildung" bezeichnet wird, wird verwendet, die die vorgenannte Abschnittsbildungstechnik weiter verfeinert. Bei dieser Technik werden die B3 Voxel eines Blocks weiter in kleine Blöcke oder Würfel mit jeweils einer Größe von 2 × 2 × 2, die als Miniblöcke bezeichnet werden, organisiert. Hierdurch ist es möglich, wenn die Voxel nahe der Grenze zwischen einem Abschnitt und vorher verarbeiteten Abschnitten verarbeitet werden, zu vermeiden, dass ganze Blöcke gelesen werden, sondern es werden nur Miniblöcke gelesen. Dies erspart angenähert fünf bis sieben Prozent der Zeit, die zum Verarbeiten eines Volumens in Abschnitten benötigt wird.
  • Die Gesamtwirkung dieser vier architektonischen Verbesserungen besteht, die Implementierung eines praktischen, preisgünstigen Volumendarstellungssystems auf der Grundlage der Cube-4-Architektur unter Verwendung von DRAM-Speichermodulen zu ermöglichen, wodurch dessen Größe und Kosten von denen eines kleinen Dateischranks zu denen einer gedruckten Schaltungsplatte, die an der Rückseite eines Personalcomputers eingesteckt werden kann, reduziert werden. Eine zusätzliche Wirkung besteht darin, die weiter Verkleinerung der Cube-4-Architektur so zu ermöglichen, dass eine Pipeline und ihr Speicher innerhalb desselben Halbleiterchips implementiert werden können. Dies verringert die Größe und die Leistungsanforderungen des Volumendarstellungssystems noch weiter.
  • Insbesondere mit Bezug auf die Blockbildung können gegenwärtige Stoßbetrieb-DRAM-Vorrichtungen mit mehr als 125 Millionen Zugriffen pro Sekunde arbeiten, aber nur, während Daten aus aufeinander folgenden Speicheradressen geholt werden. Minimale Stoßgrößen sind zumindest acht aufeinander folgende Zugriffe, aber dies sind häufig mehr. Diese Datengeschwindigkeit ist ausreichend für vier Pipelines, um einen 2563-Datensatz mit 30 Bildern pro Sekunde darzustellen, oder angenähert 503 Millionen Voxel pro Sekunde. Jedoch ist der Stoßbetrieb nur durchführbar, wenn Daten im Speicher so organisiert werden können, dass aufeinander folgende Zugriffe bei aufeinander folgenden Adressen für zumindest eine minimale Stoßgröße erfolgen.
  • Im ursprünglichen darstellten Cube-4 ist dies nicht möglich für die meisten Betrachtungsrichtungen. Von zumindest einem Drittel der Betrachtungsrichtungen wird auf aufeinander folgende Voxel von Speicherstellen zugegriffen, die um N Adressen auseinander liegen, wobei N die Anzahl von Voxeln auf der Kante eines kubischen Datensatzes ist. Von einem anderen Drittel der Betrachtungsrichtungen wird auf aufeinander folgende Voxel zugegriffen, die um N2 Adressen auseinander liegen. Das Ergebnis ist, dass selbst eine Stoßbetrieb-DRAM-Vorrichtung auf ihren langsamsten Betrieb reduziert wird, den des Zugriffs auf zufällige Adressen. In diesem Betrieb kann eine DRAM-Vorrichtung nur etwa acht bis zwölf Millionen Zugriffe pro Sekunde stützen.
  • Diese Problem kann gelöst werden durch Organisieren von Voxeldaten in einer solchen Weise, dass unabhängig davon, aus welcher Richtung der Gegenstand betrachtet wird, Bündel von Voxeln aus aufeinander folgenden Speicheradressen geholt werden können. Hierzu sind Voxeldaten in kleinen Würfeln oder Blöcken mit B Voxeln auf einer Seite gruppiert, so dass alle Voxel eines Blocks der Größe B × B × B an aufeinander folgenden Adressen innerhalb eines einzelnen Speichermoduls gespeichert sind. Obgleich jeder Wert für B verwendet werden kann, sind Werte von B gleich vier oder acht am praktischsten.
  • Um die Eigenschaft von Cube-4 zu bewahren, dass die Darstellung unabhängig von der Betrachtungsrichtung ist, müssen Daten noch über Speichermodule verdreht sein. Jedoch werden anstelle des Verdrehens um Voxel wie bei Cube-4 Daten bei der vorliegenden Erfindung blockweise verdreht. Insbesondere sind benachbarte Blöcke in jeder der drei Dimensionen des Volumendatensatzes in benachbarten Speichermodulen gespeichert. Hierdurch ist es möglich, dass P benachbarte Verarbeitungspipelines P benachbarte Blöcke von Voxeln im Stoßbetrieb aus P benachbarten Speichermodulen holen, alle gemeinschaftlich und gleichzeitig. Jede Pipeline stellt alle Voxel in einem Block dar, dann gehen sie alle weiter zu ihren jeweils nächsten Blöcken, in derselben Weise wie die Cube-4-Verarbeitungspipelines zu ihren jeweils nächsten Voxeln weitergehen. In diesem Schema ist die Reihenfolge der Verarbeitung individueller Voxel bei der vorliegenden Erfindung nicht dieselbe wie die Reihenfolge bei dem Cube-4-System, so dass wichtige Modifikationen des Cube-4-Algorithmus erforderlich sind.
  • Die Abschnittsbildung betrifft die Frage der für Zwischenergebnisse in einer Verarbeitungspipeline benötigten Speichermenge. Sowohl bei dem Cube-4-System als auch den bei der vorliegenden Erfindung eingeführten Modifikationen ist die erforderliche Menge der Zwischenspeicherung angenähert proportional N2/P, wobei N die Anzahl von Voxeln auf einer Seite eines kubischen Datensatzes ist und P die Anzahl von Speichermodulen und Pipelines ist. Der Grund für dieses Verhältnis besteht darin, dass, um Gradienten oder Normalvektoren gemäß dem Cube-4-Algorithmus zu berechnen, es erforderlich ist, die Werte von Voxeln der gegenwärtig verarbeiteten Scheibe mit den Werten von Voxeln, die in den beiden vorhergehenden Scheiben geholt wurden, mathematisch zu kombinieren. In ähnlicher Weise ist es erforderlich, um trilineare Interpolationen zu berechnen, um Werte für "verfehlte Datenpunkte" entlang der Strahlen zu erhalten, Werte von Voxeln der gerade verarbeiteten Scheibe mit Werten von der vorher verarbeiteten Scheibe mathematisch zu kombinieren. Die Nutzwirkung besteht darin, dass sich jede Pipeline an die Voxel von einer oder zwei vorher gelesenen Scheiben erinnern muss, um die Verarbeitung einer gegenwärtigen Scheibe zu beenden. Für einen kubischen Datensatz mit N Voxeln auf einer Seite ist die Anzahl von Voxelwerten, die zurückgehalten werden müssen, proportional der Anzahl von Voxeln in einer Scheibe, d. h., proportional N2. Jedoch sind di se Daten über P Verarbeitungspipelines verteilt, so dass diese Zahl auf N2/P reduziert ist. Die Konstante der Proportionalität ist typischerweise mehr als drei.
  • Allgemeiner gesagt, wenn der Voxeldatensatz einen rechteckigen Festkörper von willkürlichen Proportionen darstellt, ist die Datenmenge, die von Scheibe zu Scheibe gespeichert werden muss, proportional der Fläche, die zu der Betrachtungsrichtung am senkrechtesten ist.
  • Es wird davon ausgegangen, dass für die gegenwärtige Halbleitertechnologie diese viel zu viele Daten sind, um ökonomisch auf ein Verarbeitungschip zu passen. Insbesondere ist, wenn N gleich 256 und P gleich 4 sind, die in dem Cube-4-System erforderliche Speichermenge zumindest 3 × 2562 ÷ 4 oder nahezu 50000 Voxel, äquivalent angenähert 800000 Bits für 16-Bit-Voxelwerte. Während diese Speichermenge durch SRRM- oder DRAM-Halbleitertechnologie erreicht werden kann, führt sie zu einer übermäßig großen Halbleitervorrichtung bei der gegenwärtigen für Verarbeitungseinheiten zweckmäßigen Technologie, und daher wäre sie zu kostenaufwendig für Personal- und Tischcomputer.
  • Um dieses Problem zu lösen, wird der Volumendatensatz in Abschnitte geteilt, indem er senkrecht zu der Fläche des Volumens, die der Betrachtungsrichtung am nächsten ist, geteilt wird, wobei jede derartige Unterteilung als ein "Abschnitt" bezeichnet wird. Abschnitte werden getrennt von anderen Abschnitten dargestellt, fast so, als ob sie unabhängige Volumendatensätze wären. Wenn ein Abschnitt dargestellt wird, gehen einige Strahlen durch den Abschnitt hindurch und an der Rückseite heraus. Die visuellen Eigen schaften dieser Strahlen, d. h. Farbe, Helligkeit und Durchlässigkeit, sind direkt den entsprechenden Pixeln der Betrachtungsfläche zugewiesen. Andere Strahlen jedoch gehen aus einer Seitenfläche, der oberen Fläche oder der unteren Fläche des Abschnitts heraus und in einen angrenzenden Abschnitt hinein. Die visuellen Eigenschaften dieser Strahlen müssen gerettet und verwendet werden, wenn die Fortsetzung derselben Strahlen in dem angrenzenden Abschnitt dargestellt wird. Um diese Strahlen zu retten, schreibt sie eine Verarbeitungspipeline der gegenwärtigen Erfindung in ein externes Speichermodul. Später, wenn sie mit der Verarbeitung des angrenzenden Abschnitts beginnt, liest sie diese wieder, um die visuellen Eigenschaften ihrer Fortsetzungen zu initialisieren.
  • Die Nutzwirkung besteht in der Verringerung der innerhalb der Verarbeitungspipeline erforderlichen Speichermenge auf eine Menge proportional zu der Oberfläche des größten Abschnitts. Umgekehrt kann die Größe eines Abschnitts gewählt werden auf der Grundlage der verfügbaren Speichergröße. Bei der vorliegenden Erfindung beträgt ein Abschnitt angenähert ein Viertel bis ein Achtel des gesamten Volumendatensatzes.
  • Ein zusätzlicher Nutzen der Abschnittsbildung besteht in der Darstellung von Voxeldatensätzen, die größer als die Gesamtspeichermenge in den Volumenspeichermodulen ist. Dies kann dadurch erfolgen, dass ein Abschnitt des Voxeldatensatzes gleichzeitig dargestellt wird. Nachdem frühere Abschnitte dargestellt sind und ihre Daten nicht länger benötigt werden, werden spätere Abschnitte in die Volumenspeichermodule geladen, wobei die früheren Abschnitte überschrieben werden. Diese späteren Abschnitte werden dann verarbeitet, während noch andere Abschnitte geladen sind, usw. Auf diese Weise kann ein gesamter großer Volumendatensatz während der Darstellungsverarbeitung durch einen kleineren Volumenspeicher hindurchgeführt werden, und das resultierende Bild kann in den externen Speichermodulen akkumuliert werden. Die Größe des größten Volumendatensatzes, der so verarbeitet werden kann, ist nur durch die Speicherkapazität der externen Speichermodule begrenzt.
  • Mit Bezug auf die Anzahl der zum Verbinden benachbarter Verarbeitungspipelinechips benötigten Stifte stellt diese eine bedeutende Komponente für die Kosten einer Halbleitervorrichtung dar. Der Cube-4-Algorithmus erfordert mehrere hundert Stifte, um Informationen zwischen benachbarten Pipelines zu übertragen. Diese Stifte tragen Werte von Voxeln, aus mehreren Voxeln berechnete Werte und die teilweise Akkumulation der Eigenschaften jedes Strahls.
  • Bei dem Cube-4-Algorithmus muss ein Datenelement über jeden Satz von Stiften für jedes aus dem Speicher gelesene Voxel übertragen werden. Wenn Voxel im Stoßbetrieb bei 125 Megahertz aus dem DRAM-Speicher gelesen werden, d. h., 125 Millionen Voxel pro Sekunde, bedingt dies eine Schaltung mit mehreren hundert Stiften zwischen jedem Paar von Verarbeitungspipelines im Betrieb mit 125 MHz. Dies stellt eine ernste Anforderung an den Entwickler der Schaltungsplatte, die das Volumendarstellungssystem enthält, dar.
  • Die Lösung bei der vorliegenden Erfindung besteht darin, den Vorteil eines Seiteneffekts des Blockieralgorithmus zu nutzen, nämlich die Herabsetzung um einen Faktor von angenähert 1/B bei der zwischen benachbarten Pipelines übertragenen Datenmenge. Diese Datenreduzierung findet statt, weil Daten nur von den Voxeln auf der Fläche jedes Blocks zu benachbarten Verarbeitungspipelines übertragen werden müssen. Daten von Voxeln innerhalb eines Blocks werden nur innerhalb jedes Blocks verwendet. Es wird davon ausgegangen, dass für jeweils B3 Voxel in einem Block es nur B3 Voxel auf jeder Fläche dieses Blocks gibt. Daher ist die Anzahl von Informationsstücken, die zu benachbarten Pipelines übertragen werden müssen, proportional B2. Dies ergibt eine Herabsetzung der Kommunikation zwischen Pipelines um einen Faktor von angenähert B2/B3, d. h., 1/B. Dieser Faktor 1/B kann angewendet werden entweder für die Herabsetzung der Bandbreite der über individuelle Stifte übertragenen Daten oder zur Herabsetzung der Anzahl von Stiften durch Multiplexverarbeitung. Es ist darauf hinzuweisen, dass irgendeine aus einer Anzahl von bekannten Multiplextechniken hierfür verwendet werden kann.
  • Es ist darauf hinzuweisen, dass, um einen Abschnitt zu verarbeiten, die Werte von unmittelbar benachbarten Voxeln von vorher verarbeiteten Abschnitten verwendet werden müssen. Diese werden mathematisch kombiniert mit Voxelwerten des gegenwärtig verarbeiteten Abschnitts, um Gradienten oder Normalvektoren in der Nähe der Kante des Abschnitts zu erhalten und um Werte für "verfehlte Punkte" zwischen zwei Abschnitten zu erhalten. Ein Weg, um diese Werte zu erhalten, besteht darin, die Voxeldaten von vorher verarbeiteten Abschnitten direkt aus den Speichermodulen, die den Volumendatensatz halten, wieder zu lesen. Jedoch werden als ein Ergebnis der vorbeschriebenen Blockbildungstechnik Voxelwerte stoßweise aus einem Block gleichzeitig gelesen. Wenn der Wert von B, der Anzahl von Voxeln auf einer Seite eines Blocks, größer als zwei ist, bewirkt dies, dass der Abschnittsbildungs mechanismus zu viele Voxel wieder liest, wodurch Zeit und Verarbeitungsleistung vergeudet werden.
  • Dies führt zu der vierten Technik zum Verbessern des Cube-4-Systems, nämlich der Verwendung von Miniblöcken und des Nutzens des Vorteils des Umstandes, dass bei einigen DRAM-Produkten die minimale Stoßgröße acht Zugriffe beträgt. Bei der vorliegenden Erfindung wird jeder Block in Miniblöcke mit der Größe von 2 × 2 × 2 Voxeln so unterteilt, dass jeder Miniblock eines Blocks auch an aufeinander folgenden Speicherstellen innerhalb seines Volumenspeichermoduls gespeichert wird. Dann muss, wenn der Abschnittsbildungsmechanismus Voxel wieder aus vorher verarbeiteten benachbarten Abschnitten liest, er nur die Miniblöcke an den genauen Grenzen solcher benachbarter Abschnitte wieder lesen und nicht die gesamten Blöcke. Es wird geschätzt, dass diese Technik angenähert fünf bis sieben Prozent der Verarbeitungszeit eines Volumendatensatzes einspart, obgleich die tatsächlichen Einsparungen von der Fläche der Grenzen der Abschnitte abhangen.
  • Es ist darauf hinzuweisen, dass eine augenscheinliche Vereinfachung der vorliegenden Erfindung darin besteht, dass der Wert von B, der Anzahl von Voxeln auf einer Kante eines Blocks, auf zwei gesetzt wird. Hierdurch erscheint das Erfordernis nach einem getrennten Miniblockbildungsmechanismus beseitigt. Jedoch ist die Vereinfachung illusorisch, da die Einsparungen hinsichtlich der Anzahl von Datenstiften zwischen benachbarten Verarbeitungspipelines durch den Faktor 1/B bestimmt sind. Wenn B auf zwei gesetzt wird, betragen diese Einsparungen nur die Hälfte, was nicht ausreichend für eine preisgünstige Implementierung ist. Somit zeigt die Wirtschaftlichkeit hin sichtlich des Entwurfs und der Herstellung des Halbleiters an, dass B auf einen größeren Wert gesetzt werden sollte, wie beispielsweise acht, und dass ein getrenntes Miniblockschema implementiert werden sollte, um die Vergeudung von Zeit für das Wiederlesen nicht benötigter Voxel an den Grenzen von Abschnitten zu verhindern.
  • Zusammengefasst ist eine Vorrichtung vorgesehen, um eine Echtzeit-Volumendarstellung auf einem Personalcomputer oder einem Tischcomputer zu ermöglichen, bei der eine die Blockbildung von Voxeldaten einbeziehende Technik die Daten so organisiert, dass alle Voxel innerhalb eines Blocks an aufeinander folgenden Speicheradressen innerhalb eines einzelnen Speichermodells gespeichert werden, wodurch ermöglicht wird, dass ein gesamter Datenblock in einem Stoß anstelle eines Voxels gleichzeitig geholt wird. Dies ermöglicht die Verwendung eines DRAM als Speichermodell, der eine hohe Kapazität und niedrige Kosten mit erheblichen Raumeinsparungen ergibt. Zusätzliche Techniken enthalten eine Abschnittsbildung, wodurch die Menge der Zwischenspeicherung in einer Verarbeitungspipeline auf einen für die Halbleiterimplementierung annehmbaren Pegel verringert wird. Eine Multiplextechnik zieht Vorteil aus der Blockbildung, um die pro Block zu übertragende Datenmenge zu verringern, wodurch sich die Anzahl von Stiften und die Geschwindigkeiten, mit denen Daten über die benachbarten Verarbeitungsmodule miteinander verbindenden Stifte übertragen werden müssen, ergeben. Die Miniblockbildung spart die Zeit, die zum Verarbeiten benötigt wird, und Abschnitte, indem vermieden wird, dass ganze Blöcke für Voxel nahe der Grenze zwischen einem Abschnitt und vorher verarbeiteten Abschnitten gelesen werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Diese und andere Merkmale der vorliegenden Erfindung werden besser verstanden in Verbindung mit der detaillierten Beschreibung, die im Zusammenhang der mit der Zeichnung gegeben wird, von denen:
  • 1 ist eine schematische Illustration einer Ansicht eines Volumendatensatzes, der mittels der Strahlenwurftechnik auf eine Bildebene projiziert wird.
  • 2 ist eine schematische Illustration der Verarbeitung eines individuellen Strahls durch die Strahlenwurftechnik.
  • 3 ist eine schematische Illustration mehrerer Verfahren zur Parallelverarbeitung von Strahlen in einem Strahlwurfsystem.
  • 4 ist eine schematische Illustration des Verdrehens von Voxeln zwischen Speichermodulen bei dem Cube-4-System nach dem Stand der Technik.
  • 5 ist eine schematische Illustration einer parallelen Scheibendarstellung, die in einem Cube-4-System implementiert ist.
  • 6 ist eine schematische Illustration der Reihenfolge des Holens und Verarbeitens von Voxeln aus zwei aufeinander folgenden Scheiben in einem Cube-4-System.
  • 7 ist ein Blockschaltbild eines Cube-4- Systems, das die Verbindung von Verarbeitungseinheiten in einem Ring zeigt.
  • 8 ist ein Blockschaltbild, der Verarbeitungspipeline eines Cube-4-Systems, das die Hauptkomponenten der Pipeline zeigt.
  • 9 ist eine schematische Illustration der Speicheradressen von Voxeln auf der XY-Fläche eines Volumendatensatzes in dem Cube-4-System.
  • 10 ist eine schematische Illustration der Speicheradressen von Voxeln auf der YZ-Fläche eines Volumendatensatzes in dem Cube-4-System.
  • 11 ist eine schematische Illustration der Organisation von Voxeln durch Blöcke und der Verdrehung von Blöcken zwischen Speichermodulen nach der vorliegenden Erfindung.
  • 12 ist ein Blockschaltbild einer Verarbeitungspipeline und ihres assoziierten Speichers bei einem Ausführungsbeispiel der vorliegenden Erfindung.
  • 13 ist eine schematische Illustration der Bestimmung der Darstellungskoordinaten und der ausgewählten "Vorderfläche" für die Darstellung, auf der Grundlage eines Winkels eines Strahls von der Betrachtungsfläche.
  • 14 ist eine schematische Illustration der Basisebene eines Volumendatensatzes und ihrer Beziehung zu der Bildebene.
  • 15 ist eine schematische Illustration der Berechnung von Abtastungen von einem Block aus B3 Voxeln und von von vorher verarbeiteten Blöcken gelieferten Voxeln.
  • 16 ist eine schematische Darstellung des Lieferns von Informationen von einem Block, um die Verarbeitung von benachbarten Blöcken in den Richtungen nach rechts, nach unten und nach hinten.
  • 17 ist eine schematische Illustration der Berechnung von Gradienten von einem Block aus B3 Abtastungen und aus von vorher verarbeiteten Blöcken gelieferten Abtastungen.
  • 18 ist eine schematische Illustration von drei Volumendatensätzen, die jeweils in Abschnitte unterteilt sind.
  • 19 ist ein Blockschaltbild einer Modifikation der Illustration nach 12, die für die Implementierung der Technik der Abschnittsbildung benötigte Änderungen zeigt.
  • DETAILLIERTE BESCHREIBUNG
  • Es wird nun auf 1 Bezug genommen, in der eine zweidimensionale Ansicht eines dreidimensionalen Volumendatensatzes 10 gezeigt ist. Die dritte Dimension des Volumendatensatzes 10 verläuft senkrecht zu der gedruckten Seite, so dass nur ein Querschnitt des Datensatzes in der Figur zu sehen ist. Voxel sind durch Punkte 12 in der Figur illustriert und sind Datenwer te, die einige Eigenschaften eines dreidimensionalen Gegenstands 14 an festen Punkten eines rechteckigen Gitters im dreidimensionalen Raum darstellen. Auch ist in 1 eine eindimensionale Ansicht einer zweidimensionalen Bildebene 16, auf der ein Bild des Gegenstands 14 zu erzeugen ist, illustriert. In dieser Illustration ist die zweite Dimension der Bildebene 16 ebenfalls senkrecht zu der gedruckten Seite.
  • Bei der Strahlenwurftechnik werden Strahlen 18 von Pixeln 22 der Bildebene 16 durch den Volumendatensatz 10 verlängert. Jeder Strahl akkumuliert Farbe, Helligkeit und Durchlässigkeit oder Undurchlässigkeit an Abtastpunkten 20 entlang dieses Strahls. Diese Akkumulation von Licht bestimmt die Helligkeit und Farbe der entsprechenden Pixel 22.
  • Es ist darauf hinzuweisen, dass, obgleich 1 nahe legt, dass die dritte Dimension des Volumendatensatzes 10 und die zweite Dimension der Bildebene 16 jeweils senkrecht zu der gedruckten Seite und daher parallel zueinander sind, dies im Allgemeinen nicht der Fall ist. Die Bildebene kann jede Orientierung mit Bezug auf den Volumendatensatz haben, so dass Strahlen 18 durch den Volumensatz 10 unter jedem Winkel in allen drei Dimension hindurchgehen können.
  • Es ist auch darauf hinzuweisen, dass Abtastpunkte 20 nicht notwendigerweise genau die durch Voxel 12 dargestellten festen Punkte schneiden. Daher muss der Wert jedes Abtastpunktes aus den Werten nahe liegender Voxel zusammengesetzt werden. D. h., die Intensität von Licht, Farbe und Durchlässigkeit oder Undurchlässigkeit an jedem Abtastpunkt 20 muss durch eine mathematische Funktion der Werte von nahe liegenden Voxeln 12 berechnet werden. Die Abtastpunkte 20 jedes Strahls 18 werden dann durch eine andere mathematische Funktion akkumuliert, um die Helligkeit und die Farbe des Pixels 22 entsprechend diesem Strahl zu erzeugen. Der sich ergebende Satz von Pixeln 22 bildet ein visuelles Bild des Gegenstands 14 in der Bildebene 16.
  • Sowohl bei dem Cube-4-System als auch bei der vorliegenden Erfindung erfolgt die Berechnung der Farbe, Helligkeit oder Intensität und der Lichtdurchlässigkeit von Abtastpunkten 20 in zwei Teile. Zuerst wird die mathematische Funktion der trilinearen Interpolation angewendet, um den gewichteten Durchschnitt der Werte der acht Voxel in einer kubischen Anordnung, die den Abtastpunkt 20 unmittelbar umgibt, zu nehmen. Der sich ergebende Durchschnitt wird dann verwendet, um den Abtastpunkt durch eine Übertragungsfunktion eine Farbe und die Undurchlässigkeit oder Durchlässigkeit zuzuweisen. Als zweites wird der mathematische Gradient der Abtastwerte an jedem Abtastpunkt 20 geschätzt durch Nehmen der Differenzen zwischen nahen Abtastpunkten: Dieser Gradient wird dann verwendet für eine Lichtberechnung, um die Helligkeit des Abtastpunktes zu bestimmen.
  • 2 illustriert die Verarbeitung eines individuellen Strahls. Der Strahl 18 geht durch den dreidimensionalen Volumendatensatz 10 unter einem Winkel hindurch, wobei er nahe Voxel 12 passiert. Jeder Abtastpunkt wird durch eine Interpolationseinheit 24 berechnet, und sein Gradient wird durch eine Gradientenschätzeinheit 26 berechnet. Die Ausgangssignale von diesem werden dann bei einer Übertragungsfunktion 28 verwendet, die jeder Abtastung Farbe, Helligkeit oder Intensität und Durchlässigkeit oder Undurchlässigkeit zuweist. Schließlich werden die Farben, Pegel der Helligkeit und Lichtdurchlässigkeiten, die allen Abtastungen entlang aller Strahlen zugewiesen sind, zu einer Zusammensetzeinheit 30 gegeben, die ihre Werte mathematisch in Pixel kombiniert, die das sich ergebende Bild 32 auf der Bildebene 16 darstellen.
  • a) Paralleles Strahlenwerfen
  • Um verschiedene Betrachtungspunkte eines Gegenstands zu bilden, wird die Bildebene 16 relativ zu dem Volumendatensatz 10 bewegt oder wieder orientiert. Es ist das Ziel des Feldes der interaktiven Volumengrafik, um Bilder aus Volumendatensätzen schnell genug von verschiedenen Betrachtungspunkten so wiederzuberechnen, dass sich die Gegenstände zu bewegen scheinen wie bei einem Film. Zusätzlich können die mathematischen Funktionen zum Umwandeln von Voxeln 12 in Abtastungen 20 und zum Akkumulieren von Abtastungen in Pixel 22 modifiziert werden, um die Erscheinung eines sich dynamisch ändernden oder transformierenden dreidimensionalen Gegenstands zu geben. Ein typisches Erfordernis ist die Möglichkeit der Wiederberechnung eines Bildes 30 oder mehr Male pro Sekunde.
  • Es ist festzustellen, dass der Wiederberechnungsaufwand außerordentlich groß ist, selbst für einen kleinen Datensatz von 2563 Voxeln. Daher verwenden die meisten die Strahlwurftechnik implementierenden Systeme parallele Verarbeitungseinheit und werfen eine Vielzahl von Strahlen gleichzeitig durch das Volumen. 3 illustriert einige potentielle Wege zum Implementieren des parallelen Strahlenwerfens. In 3A werden individuelle Strahlen 18 unabhängig durch den Volumendatensatz 10 geworfen, schreiten von der Vorderseite zu der Rückseite durch den Datensatz und akkumulieren beim Fortschreiten Farbe, Intensität und Undurchlässigkeit. Die Parallelheit wird erzielt durch Zuweisen getrennter Strahlen zu getrennten Verarbeitungseinheiten. Beispielsweise können mit "a" bis "g" gekennzeichnete Strahlen getrennten Verarbeitungseinheiten für die parallele Verarbeitung zugewiesen werden. Dies wird als "Parallelstrahlenmaßnahme" bezeichnet.
  • Das Problem bei der Parallelstrahlenmaßnahme besteht darin, dass dieselben Voxelwerte benötigt werden, um verschiedene Strahlen, häufig zur gleichen Zeit, zu verarbeiten. Beispielsweise wird das in 3A durch 34 bezeichnete Voxel benötigt, um sowohl den Strahl "c" als auch den Strahl "d" zu verarbeiten. Wenn zwei unabhängige Verarbeitungseinheiten mit ihrem eigenen Schritt fortschreiten, dann muss das Voxel von dem Volumendatensatz 10 zumindest zweimal geholt werden. Im Allgemeinen trägt der Wert jedes individuellen Voxel zu mehreren Strahlen bei, die es in der Nähe passieren, so dass jeder Wert des Volumendatensatzes mehrere Male durch getrennte Prozessoren geholte werden muss. Da das Holen von Daten aus einem Speichermodul ein zeitaufwendiger Vorgang relativ zu der Verarbeitung der Daten ist, ist diese Maßnahme langsam und kostenaufwendig. Darüber hinaus ist es wahrscheinlich, selbst wenn Voxel über Speichermodule verteilt sind, dass mehrere Prozessoren versuchen, zur selben Zeit zu demselben Modul zuzugreifen. Somit ist der Speicherzugriff der Engpass für die Darstellung des Volumendatensatzes in einem Bild.
  • In 3B ist dieses Problem teilweise gemildert durch paralleles Werfen mehrerer Strahlen durch den Volumendatensatz 10, wobei jeder Strahl einer Verarbeitungseinheit zugewiesen ist und alle Verarbeitungseinheiten im Blockierschritt arbeiten. Bei die ser Technik, die als "Parallelstrahlenmaßnahme" bezeichnet wird, holen alle Verarbeitungseinheiten zusammen eine Reihe oder einen "Strahl" 36 von Voxeln zur selben Zeit. Jede Verarbeitungseinheit setzt Abtastpunkte zusammen und berechnet die Farbe, Intensität und Durchlässigkeit von dem Voxel, das sie geholt hat, und von den Werten, die durch seine Nachbart links und rechts geholt wurden. Dann gehen Verarbeitungseinheiten weiter zu dem nächsten Strahle, jede verarbeitend entsprechende Voxel dieses Strahls und teilend Werte mit ihren Nachbarn. Dann schreiten sie zu dem nächsten Strahl vorwärts, dann dem nächsten usw., bis alle Strahlen aus dem Volumendatensatz hervorgetreten sind. Dies wird für andere Strahlen wiederholt, beginnend auf der Vorderseite des Volumendatensatzes, bis alle Voxel verarbeitet wurden.
  • Um Speicherkonflikte zu vermeiden, sollten die Verarbeitungseinheiten für getrennte Strahlen unabhängige Speichermodule haben, und der Volumendatensatz sollte über die Speichermodule verteilt sein. Beispielsweise könnte die vertikale "Scheibe" 38 von Voxeln in 3B einem Speichermodul zugewiesen sein, das von den Scheiben auf jeder Seite getrennt ist. Daher könnte ihr Prozessor Voxel aus diesem Speichermodul holen, während benachbarte Verarbeitungseinheiten benachbarte Voxel von benachbarten Speichermodulen gleichzeitig holen, ohne dass Speicherkonflikte auftreten. Die Verarbeitungseinheiten würden selbstverständlich Voxelwerte miteinander teilen, um "verfehlte" Abtastpunkte zusammenzusetzen, Normalvektoren zu berechnen und Strahlen unter einem Winkel durch das Volumen hindurchzulassen.
  • Diese Maßnahme arbeitet gut, unter der Voraussetzung, dass die Strahlen grob parallel zu den vertikalen Scheiben sind. Wenn jedoch das Volumen aus einer anderen Richtung zu betrachten ist, wie in 3C illustriert ist, versagt die Parallelstrahlenverarbeitung. In diesem Fall sind ein Strahl von Voxeln 36 und die vertikale Scheibe 38 parallel zueinander. Das Ergebnis besteht darin, dass alle Voxel des Strahls in derselben vertikalen Scheibe sind und sie daher in demselben Speichermodul gespeichert sind. Somit wäre es für mehrere parallele Prozessoren nicht möglich, gleichzeitig zu ihnen allen zuzugreifen, ohne dass das Zugreifen zu diesem Speichermodul kollidiert.
  • Einige Strahlenwurfsysteme lösen dieses Problem durch Speichern von drei Kopien des Volumendatensatzes zu jeder gegebenen Zeit, einen für jede Orientierung oder Hauptbetrachtungsrichtung. Eine Kopie wird zwischen Speichermodulen in Scheiben von vorn nach hinten aufgeteilt, eine zweite Kopie wird zwischen Speichermodulen von Seite zu Seite aufgeteilt, und eine dritte wird zwischen Speichermodulen von oben nach unten aufgeteilt. Es ist darauf hinzuweisen, dass dieses die zum Speichern des Volumendatensatzes benötigte Speichermenge verdreifacht, und es stellt auch eine Bürde dar für Anwendungen, um alle drei Kopien miteinander übereinstimmend zu halten.
  • b) Parallelscheiben-Strahlenwerfen bei Cube-4
  • Es wird nun auf 4 Bezug genommen, in der das Problem des Erfordernisses von drei Kopien eines Volumendatensatzes bei dem Cube-4-System gelöst wird durch "Verdrehen" des Volumendatensatzes gleichzeitig über Speichermodule in allen drei Dimensionen. D. h., benachbarte Voxel sind in benachbarten Speichermodulen gespeichert, so dass unabhängig davon, auf welchem Weg Strahlen in den Volumendatensatz eintreten, benachbarte Strahlen nahe benachbarten Voxeln vorbeigehen, die verschiedenen Speichermodulen zugewiesen sind.
  • 4 illustriert dieses Verdrehen, indem sie detailliert einen Teil eines Volumendatensatzes nahe einer Ecke für ein System mit vier Speichermodulen zeigt. Jedes Voxel in der Figur ist durch einen kleinen Würfel 54 illustriert und die Muster auf den Würfeln zeigen die Zuweisung von Voxeln zu Speichermodulen. Wie aus der Illustration ersichtlich ist, haben benachbarte Voxel auf den drei sichtbaren Flächen des Volumendatensatzes unterschiedlich schattierte Muster und sind daher verschiedenen Speichermodulen zugewiesen. Es ist darauf hinzuweisen, dass dasselbe für die drei Flächen des Volumendatensatzes, die in 4 gezeigt sind, gilt, d. h., die drei Rückflächen. In der Terminologie des Cube-4-Systems wird diese Anordnung als "Verdrehen" bezeichnet und dies ist der Wesensgehalt der Cube-4-Erfindung.
  • Die Anordnung von Voxeln zwischen Speichermodulen kann mathematisch beschrieben werden. Wenn es P Speichermodule und Verarbeitungseinheiten gibt, dann wird ein Voxel, das sich an einer Position (x, y, z) innerhalb des Volumendatensatzes befindet, dem Speichermodul mit der Nummer (x + y + z) mod P (1)zugewiesen, worin x, y und z ganze Zahlen sind, die die Position des Voxels innerhalb des Datensatzes in Bezug auf die drei Dimensionen darstellen, und worin das Symbol "mod" die mathematische Operation des Teilens der Größe auf der linken Seite durch die ganze Zahl auf der rechten Seite und Behalten nur des Rests darstellt. D. h., die Speichermodulnummer kann über Formel 1 erhalten werden durch Addieren der drei Positionskoordinaten des Voxels, Teilen durch die Anzahl von Speichermodulen P und Nehmen des Restes, wobei dieser Rest Werte im Bereich von null bis (P – 1) hat. Obgleich die x-, y- und z-Koordinaten eines Voxels typischerweise von einer bestimmten Ecke des Datensatzes ausgezählt werden, ist es auch ohne den Verlust der Verallgemeinerung möglich, von irgendeinem bezeichneten Punkt aus zu zählen, wobei dieser Punkt als der "Ursprung" bezeichnet wird.
  • Es wird anhand der Formel 1 davon ausgegangen, dass die Voxel jeder Scheibe durch jede der drei Dimensionen des Volumendatensatzes über die Speichermodule in genau derselben Weise verdreht sind, aber beginnend mit einem verschiedenen Speichermodul. Wenn daher eine der Scheiben von irgendeiner Fläche des Volumendatensatzes nach 4 abgeschält würde, würde sie eine identisch gefärbte oder schattierte Scheibe unmittelbar hinter ihr freigeben, aber mit den um ein Voxel verschobenen Mustern. Darüber hinaus ist darauf hinzuweisen, dass Voxel eines besonderen Speichermoduls immer durch Voxel derselben beiden anderen Module eingeklammert sind, ein Modul auf einer Seite und eins auf der anderen. Somit hat eine mit einem Speichermodul assoziierte besondere Verarbeitungseinheit genau zwei Nachbarn.
  • Diese Organisation hat eine tief greifende Wirkung auf die Fähigkeit zur Parallelisierung des Werfens von Strahlen. Eine Gruppe von P Strahlen kann in jeder Richtung durch jede Fläche des Volumendatensatzes geworfen werden, wobei jeder Strahle einer Verarbeitungseinheit zugewiesen ist, und sie können immer parallel ohne Speicherkonflikte verarbeitet werden. Je de Verarbeitungseinheit holt ein Voxel nahe ihres Strahls aus ihrem eigenen Speichermodul, so dass P benachbarte Voxel gleichzeitig und gemeinschaftlich geholt werden. Somit ermöglicht die verdrehte Speicherorganisation einer vollständigen Parallelisierung mit der Darstellung eines Volumendatensatzes aus jeder Betrachtungsrichtung.
  • Es wird nun auf die 5 und 6 Bezug genommen, in das Cube-4-System einen Volumendatensatz gleichzeitig in einer Scheibe darstellt, wobei alle Strahlen durch diese Scheibe geworfen werden und die visuellen Eigenschaften aller Abtastpunkte innerhalb der Scheibe akkumuliert werden, bevor zu der nächsten Scheibe weitergegangen wird. Diese Technik wird als "Scheibenparalleldarstellung" bezeichnet. 5 ist eine schematische Illustration, die mehrere Strahlen 18 darstellt, welche in die Fläche einer Scheibe 55 des Volumendatensatzes eintreten. Es ist darauf hinzuweisen, dass in der tatsächlichen Praxis weitaus mehr Strahlen vorgesehen sind als in dieser einfachen Figur illustriert werden kann.
  • Bei der Parallelscheibentechnik ist jeder Strahl 18, der in die Scheibe 55 eintritt, teilweise dargestellt. D. h., die visuellen Eigenschaften einschließlich Farbe, Helligkeit und Durchlässigkeit jedes Strahls sind soweit wie möglich von den in der Scheibe 55 verfügbaren Daten zugewiesen. Erst nachdem alle Strahlen die visuellen Eigenschaften von der Scheibe 55 akkumuliert haben, schält das Cube-4-System diese Scheibe ab und geht zu der nächsten Scheibe 56 weiter. Wegen des Verdrehens der Voxel über den Speicher ist die Scheibe 56 mit der Scheibe 55 identisch, wobei aber ihre Speichermodulzuweisungen um ein Voxel verschoben sind.
  • 6 ist eine Illustration der tatsächlichen Reihenfolge des Holens von Voxeln in dem Cube-4-System. Bei dieser Illustration wird angenommen, dass P gleich vier ist, so dass vier Speichermodule und vier Verarbeitungspipelines vorhanden sind. Voxel 54 werden von der oberen Reihe der Scheibe in Gruppen 58 von P Voxeln geholt, beginnend in der oberen linken Ecke. Nachdem diese P Voxel in die Verarbeitungspipeline eingeführt sind, werden die nächsten P Voxel aus derselben Reihe geholt, dann die nächsten, usw., bis die Reihe beendet ist. Dann schreitet das System herunter zu der nächsten Reihe, ebenfalls Gruppen von P Voxeln holend, bis diese Reihe auch beendet ist. Diese Verarbeitung wird für alle Reihen der Scheibe 55 wiederholt, bis diese Scheibe beendet ist. Dann geht die Verarbeitung mit der nächsten Scheibe 56 weiter, auch in Gruppen von P Voxeln und beginnend in ihrer oberen linken Ecke.
  • Es ist darauf hinzuweisen, dass Variationen des Cube-4-Algorithmus möglich sind, bei denen die Verarbeitung an einer anderen Ecke oder an einem anderen bestimmten Punkt beginnt, aber er schreitet immer in Gruppen von P Voxeln gleichzeitig durch die Strahlen einer Scheibe und durch die Scheiben eines Volumendatensatzes weiter.
  • 7 ist ein idealisiertes Blockschaltbild des Cube-4-Systems nach dem Stand der Technik und illustriert die Verbindung der Verarbeitungselemente und Speichermodule. In 7 sind mehrere Verarbeitungspipelines 40 jeweils mit ihren eigenen Volumenspeichermodulen 42 gekoppelt. Die Verarbeitungspipelines 40 sind über mehrere Kommunikationskanäle 44 miteinander gekoppelt, wobei jeder Kommunikationska nal ein Mittel zum Übertragen von Daten in jeder Richtung zwischen zwei Verarbeitungspipelines darstellt. Die Ausgänge 46 der Verarbeitungselemente sind mit einem Bus oder einem anderen Mechanismus 48 für den Zweck der Beförderung von Pixeln des dargestellten Bildes zu einer Anzeigefläche 50 wie einem Computerschirm gekoppelt. Eingegebene Voxel werden über einen Eingangsbus 52, der mit jedem Modul gekoppelt ist, in die Volumenspeichermodule 42 geschrieben.
  • Es ist anhand von 7 festzustellen, dass es keine "erste" oder "Master"-Verarbeitungspipeline gibt. Alle Pipelines haben gleichen Status und arbeiten im Verriegelungsschritt miteinander.
  • 8 stellt ein Blockschaltbild von internen Elementen der Cube-4-Verarbeitungspipeline dar, zusammen mit einer detaillierten Ansicht der Kommunikationskanäle zwischen den Pipelines. In der Figur sind zu Illustrationszwecken nur fünf Verarbeitungspipelines 40 Seite an Seite angeordnet. D. h., die äußerste rechte Verarbeitungseinheit in der Figur ist mit der äußersten linken Verarbeitungseinheit verbunden, so dass das gesamte System einen Ring von Verarbeitungseinheit wie in 7 bildet. In 8 ist jedes Speichermodul 42 mit der FIFO-Speichereinheit 60 und der trilinearen Interpolationseinheit 62 seiner eigenen Pipeline gekoppelt. Das Speichermodul 42 ist über Kommunikationsleitungen 44 mit dem trilinearen Interpolationseinheiten 62 der zwei benachbarten Pipelines nach links und mit einer trilinearen Interpolationseinheit 62 der benachbarten Pipeline nach rechts gekoppelt. Die FIFO-Speichereinheit 62 ist mit einer trilinearen Interpolationseinheit 62 in ihrer eigenen Verarbeitungspipeline und über Kommunikationsleitun gen 44 zu einer trilinearen Interpolationseinheit 52 in der benachbarten Verarbeitungspipeline nach links und mit trilinearen Interpolationseinheiten 62 in jeder der beiden benachbarten Pipelines nach rechts gekoppelt. Durch diese Verbindungen kann jede Verarbeitungspipeline Abtastpunkte 20 aus den acht umgebenden Voxeln zusammensetzen. Die FIFO-Speichereinheiten 60 sind Schiebespeicherschaltungen, die einen internen Speicher ergeben, der zum Halten von Kopien von Voxelwerten von einem Strahl zu dem nächsten und einer Scheibe zu der nächsten erforderlich sind.
  • Die trilineare Interpolationseinheit 62 ist sowohl mit der FIFO-Speichereinheit 64 als auch der Schatteneinheit 66 gekoppelt. Die FIFO-Speichereinheit 64 ist mit der Schatteneinheit 66 ihrer eigenen Pipeline und über Kommunikationsleitungen 44 mit den Schatteneinheiten 66 der beiden benachbarten Pipelines nach rechts gekoppelt. Die Schatteneinheit 66 einer Pipeline ist auch über Kommunikationsleitungen 44 mit Schatteneinheiten 66 der nächsten benachbarten Pipelines auf jeder Seite und auch mit der Schatteneinheit 66 der zweiten benachbarten Pipeline nach rechts gekoppelt.
  • Der Ausgang der Schatteneinheit 66 ist mit der Zusammensetzeinheit 68 gekoppelt, die auch über Kommunikationsleitungen 44 mit den Zusammensetzeinheiten 68 der benachbarten Pipeline nach links und den drei benachbarten Pipelines nach rechts gekoppelt ist.
  • Die detaillierte Arbeitsweise des Cube-4-Systems, zusammen mit der Beschreibung der über die Kommunikationsleitungen 44 laufenden Signale wird in der vorgenannten Dissertation von Hanspeter Pfister und auch in einer Masterarbeit (d. h. "Diplomarbeit im Fach In formatik") von Urs Kanus und Michael Meissner mit dem Titel "Cube-4, a Volume Rendering Architecture for Real-time Visualization of High-resolution Volumetric Datasets", eingereicht bei der Eberhard-Karls-Universität Tübingen, in Tübingen, Deutschland, am 30. September 1996, gegeben. Im Allgemeinen werden P Voxel von Speichermodulen 42 geholt und zu mehreren trilinearen Interpolationseinheiten 62 weitergeleitet, um Abtastungen 20 zusammenzusetzen. Da jede Abtastung aus den sie umgebenden acht Voxeln zusammengesetzt ist und da diese Voxel sich in benachbarten Reihen und benachbarten Scheiben befinden, ist darauf hinzuweisen, dass einige Voxelwerte "aufgehalten" oder verzögert werden müssen, um darauf zu warten, dass andere geholt werden. Diese Verzögerung wird durch die FIFO-Speichereinheiten 60 bewirkt. Nachdem die Abtastungen 20 zusammengesetzt wurden, werden sie zu den Schatteneinheiten 66 weitergeleitet, in denen Gradienten berechnet werden.
  • Jeder Gradient hängt ab von den Werten von Abtastungen auf jeder Seite von diesem und von Abtastungen über und unter diesem und von Abtastungen vor und hinter diesem. Es ist festzustellen, dass einige Abtastungen vor anderen berechnet werden, so dass die früheren Abtastwerte wie Voxelwerte aufgehalten oder verzögert werden müssen, wobei FIFO-Speichereinheiten 64 zwei Pegel der Verzögerung liefern, einen Pegel für eine einzelne Scheibe und einen Pegel für eine zweite Scheibe.
  • Schließlich können, nachdem die Gradienten berechnet sind, die Farbe, Helligkeit und Durchlässigkeit der Abtastungen berechnet werden. Diese visuellen Eigenschaften werden zu den Zusammensetzeinheiten 68 weitergeleitet, in denen sie mit den Farben, Hellig keitspegeln und Durchlässigkeiten kombiniert werden, die bereits in ihren jeweiligen Strahlen für vorhergehende verarbeitete Voxel und Abtastungen akkumuliert sind. Es ist festzustellen, dass ein Strahl unter einem Winkel durch den Volumendatensatz hindurchgehen kann, so dass, wenn er aus einer Scheibe in der Nähe eines Voxels auftaucht, er in die nächste Scheibe in der Nähe von einem von neun Voxeln eintreten kann. Diese neun Voxel sind über so viele wie fünf Speichermodule verdreht. Daher müssen die Werte von teilweise akkumulierten Strahlen zu jeder von fünf Verarbeitungspipelines 40 und den Zusammensetzeinheiten 68, abhängig von der Betrachtungsrichtung, für kontinuierliche Akkumulation von Farb-, Helligkeits- und Durchlässigkeitswerten von zusätzlichen Scheiben weitergeleitet werden.
  • Wenn ein Strahl schließlich beendet ist, wird er über den Pixelbus 48 zu der Betrachtungsfläche für eine Anzeige weitergeleitet.
  • c) Begrenzungen von Speicherzugriffsgeschwindigkeiten bei Cube-4
  • Wenn man im Einzelnen die Zuweisung von Voxeln zu Speichermodulen betrachtet, ist es möglich, die Reihenfolge zu sehen, in der Voxelwerte aus dem Speicher während einer Scheibenparallelverarbeitung geholt werden. Wenn ein Volumendatensatz als ein Würfel mit N Voxeln auf jeder Kante so organisiert ist, dass er insgesamt N3 Voxel hat, und wenn N glatt durch P teilbar ist, dann ist die Adresse jedes Voxels innerhalb seines Speichermoduls in dem Cube-4-System gegeben durch die mathematische Formel
    Figure 00480001
    worin x, y und z die ganzzahligen Koordinaten der Voxel mit Bezug auf eine Ecke oder einen anderen Ursprung des Volumendatensatzes sind und worin das Symbol
    Figure 00480002
    das Ergebnis der Teilung der ganzen Zahl x durch die Zahl P und des Löschens des Restes ist.
  • 9 illustriert das Schattieren von Voxeln auf der XY-Fläche von 4, zusammen mit der Speicheradresse von jedem Voxel für P gleich vier. Es ist anhand der Figur festzustellen, dass innerhalb jeder Reihe Gruppen von P benachbarten Voxeln dieselbe Speicheradresse innerhalb ihrer jeweiligen Speichermodule haben. Darüber hinaus holt, wenn eine Verarbeitungseinheit Voxel aufeinander folgend gemäß dem Cube-4-Algorithmus holt, sie aufeinander folgend Voxel aus derselben Schattierung derselben Reihe. Es kann aus 9 gesehen werden, dass diese Voxel aufeinander folgende Speicheradressen innerhalb ihrer Speichermodule haben. Genauer gesagt kann anhand von Formel 2 festgestellt werden, dass für jede Scheibe des Volumendatensatzes parallel zu der XY-Fläche aufeinander folgende Voxel aufeinander folgende Speicheradressen haben. In der Theorie ist es möglich, ein Stoßbetriebs-DRUM-Modul zu verwenden, um diese Voxel schneller zu holen, vorausgesetzt, die Betrachtungsrichtung ist derart, dass Strahlen in die XY-Fläche des Volumens eintreten.
  • Jedoch illustriert 10 die Zuweisung von Speicheradressen zu Voxeln auf der YZ-Fläche desselben Volumendatensatzes mit P gleich vier. Es ist aus der Figur ersichtlich, dass auf dieser Fläche aufeinander folgende Voxel mit derselben Schattierung innerhalb derselben Reihe sich in ihren Speicheradressen um den Betrag N unterscheiden. Darüber hinaus unterscheiden sich das letzte Voxel einer Reihe mit einer gegebenen Schattierung und das erste Voxel der nächsten Reihe mit derselben Schattierung in ihren Speicheradressen um den Betrag 3 × N ÷ 4. Daher ist es nicht möglich, den Stoßbetrieb eines DRAM-Moduls zu verwenden, um aufeinander folgende Voxel für in die YZ-Fläche eintretende Strahlen zu verwenden. Eine Verarbeitungseinheit, die Voxel gemäß dem Cube-4-Algorithmus holt, ist beschränkt auf das Holen von diesen im gewöhnlichen Betrieb, d. h., nicht im Stoßbetrieb, mit einer Datengeschwindigkeit, die so langsam ist, als ob sie zufällige Speicherstellen holen würde.
  • Es ist anhand von Formel 2 festzustellen, dass in der ZX-Fläche aufeinander folgende Voxel einer Reihe mit derselben Schattierung sich in ihren Speicheradressen um N2 unterscheiden. Daher kann ein Stoßbetrieb ebenfalls nicht bei in diese Fläche eintretenden Verarbeitungsstrahlen angewendet werden.
  • Allgemeiner gesagt, wenn der Volumendatensatz ein rechteckiger Festkörper mit Abmessungen L, M und N ist, wobei L, M und N jeweils glatt durch P teilbar sind, dieser dann insgesamt L × M × N Voxel hat. Die Adresse jedes Voxels in dem Cube-4-System ist gegeben durch die Formel
  • Figure 00490001
  • Es ist anhand der Formeln 1 und 3 festzustellen, dass aufeinander folgende Voxel innerhalb einer Reihe mit derselben Schattierung auf der XY-Fläche an aufeinander folgenden Speicheradressen gespeichert sind, aber aufeinander folgende Voxel innerhalb einer Reihe mit derselben Schattierung auf der YZ-Fläche an Adressen gespeichert sind, die sich um L unterscheiden, und das aufeinander folgende Voxel innerhalb einer Reihe mit derselben Schattierung auf der ZX-Fläche an Adressen gespeichert sind, die sich um L × M unterscheiden. Somit kann der Stoßbetrieb angewendet werden, um das Holen von Voxeln zu beschleunigen, wenn Strahlen in die XY-Fläche eintreten, aber er kann nicht angewendet werden, wenn sie in die YZ- oder die ZX-Fläche eintreten.
  • d) Blockbildung und die Verwendung des Stoßbetriebs-Dram
  • Es wird nun auf 11 Bezug genommen, gemäß der, um Voxel in einer solchen Weise zu gruppieren, dass sie aus aufeinander folgenden Speicheradressen geholt werden können, ungeachtet der Betrachtungsrichtung, die vorliegende Erfindung eine Technik anwendet, die als Blockbildung bezeichnet wird. Hierdurch wird es möglich, den Stoßbetrieb anzuwenden, um auf Voxel aus DRAM-Modulen für alle Betrachtungsrichtungen zuzugreifen. Bei dieser Technik sind Voxel in Subwürfeln oder Blöcken 70 organisiert, und die Blöcke sind anstelle der individuellen Voxel über die Speichermodule verdreht. Das Schattieren eines Blocks in der Figur zeigt das Speichermodul an, in dem er gespeichert ist, wobei alle Voxel dieses Blockes in demselben Speichermodul gespeichert sind.
  • Insbesondere ist, wenn jeder Block B Voxel entlang jeder seiner Kanten hat, dann die Zuweisung eines Voxels mit Koordinaten (x, a, z) gegen durch die Formel
    Figure 00510001
    worin P die Anzahl von Speichermodulen und Verarbeitungseinheiten ist und x, y und z ganzzahligen Koordinaten des Voxels in Bezug auf die Ecke oder einen anderen Ursprung des Volumendatensatzes in jeder der drei Dimensionen sind. D. h., das Speichermodul, dem das Voxel (x, y, z) zugewiesen ist, kann bestimmt werden durch Teilen jeder Koordinate durch B, Wegwerfen des Restes, Nehmen der Summe dieser drei Teilungen, dann Teilen der sich ergebenden Summe durch P und Nehmen des Restes. Dies ist dieselbe Formel, die von Lichtermann in der vorgenannten Beschreibung des DIV2A-Systems beschrieben ist.
  • Blöcke sind innerhalb des Volumendatensatzes bei der vorliegenden Erfindung in derselben Weise nummeriert wie Voxel bei dem Cube-4-System nummeriert sind, d. h. durch Zählen von Blöcken in jeder der drei Dimensionen von der Ecke oder einem anderen Ursprung aus. Es ist Formel 4 ersichtlich, dass ein Voxel an der Position (x, y, z) in einem Block mit Blockkoordinaten (Bx, By, Bz) gespeichert ist, die durch die Formeln
    Figure 00510002
    gegeben sind.
  • Wenn der Volumendatensatz einen Würfel mit N3 Voxeln darstellt und wenn P × B glatt durch N, d. h. der Anzahl von Voxeln auf einer Seite des kubischen Datensatzes, geteilt wird, dann ist die Startadresse des Blocks mit Koordinaten (Bx, By, Bz) innerhalb seines Speichermoduls gegeben durch die Formel
  • Figure 00520001
  • Innerhalb jedes Blocks werden die Voxel an aufeinander folgenden Speicheradressen gespeichert. Es ist darauf hinzuweisen, dass viele Anordnungen von Voxeln innerhalb eines Blocks möglich sind. Bei einem Ausführungsbeispiel sind Voxelspeicheradresse relativ zu dem Anfang des Blocks gegeben durch die Formel x mod B + B* (y mod B) + B2* (z mod B). (7)
  • D. h., die Position des Voxels (x, y, z) innerhalb seines Blocks kann gefunden werden durch Nehmen des Restes von x, y und z nach dem Teilen durch B, dann Addieren des Restes von x zu B mal dem Rest von y und dann Addieren von diesen zu B2 mal dem Rest von z. Es ist darauf hinzuweisen, dass Formel 7 aufeinander folgende Stellen mit einem Bereich von B3 Speicheradressen beschreibt, wobei B3 die Anzahl von Voxeln in einem Block ist.
  • Es wird nun auf 12 Bezug genommen, die eine schematische Illustration des Pipelineprozessor 40 eines Ausführungsbeispiels der vorliegenden Erfindung zusammen mit seinem verbunden Speichermodul 42 zeigt. Wie Cube-4 weist die vorliegende Erfindung mehrere Verarbeitungspipelines 40 und Speichermodule 42, die in einem Ring verbunden sind, auf, wie in 7 illustriert ist. Es wird wieder auf 12 Bezug genommen, in der das Speichermodul 42 mit zwei Blockpuffern 72 gekoppelt ist, von denen jeder eine Kapa zität zum Speichern von B3 Voxeln hat, wobei B die Anzahl von Voxeln auf der Kante eines Blocks ist. Jeder Blockpuffer 72 ist sowohl mit der Interpolationseinheit 82 als auch den beiden Dreizustands-Schnittstellen 74 gekoppelt. Jede Dreizustands-Schnittstelle 74 ist mit einer Voxelkommunikationsleitung 76 gekoppelt, wobei die eine mit der nächstbenachbarten Pipeline 40 in der Uhrzeigerrichtung entlang des Rings und die andere mit der nächstbenachbarten Pipeline entgegen der Uhrzeigerrichtung entlang des Rings gekoppelt sind.
  • Es ist festzustellen, dass bei einem elektronischen Entwurf eine Dreizustands-Schnittstelle eine solche ist, die entweder als Eingangs- oder Ausgangsschnittstelle dient. Insbesondere sind bei einer Halbleiterimplementierung der vorliegenden Erfindung die die Dreizustands-Schnittstelle 74 mit der Kommunikationsleitung 76 verbindenden Stifte sowohl Eingangs- als auch Ausgangsstifte. Daher kann jede Voxelkommunikationsleitung 76 Daten in jeder Richtung tragen, so dass die Verarbeitungspipeline 40 entweder Daten von ihrem nächsten Nachbarn empfangen oder zu diesem übertragen kann. Bei diesem Ausführungsbeispiel tragen beide Voxelkommunikationsleitungen 76 Daten in derselben Richtung entlang des Rings, d. h., beide sind zu einem gegebenen Zeitpunkt entweder für Signalisierung im Uhrzeigersinn ausgebildet oder für eine Signalisierung entgegen dem Uhrzeigersinn ausgebildet.
  • Die Dreizustands-Schnittstelle 74 ist auch mit der FIFO-Speichereinheit 78 für Strahlen, der FIFO-Speichereinheit 80 für Scheiben und der wahlweisen Verzögerungseinheit 73 gekoppelt. Die FIFO-Speichereinheit 78 für Strahlen, die FIFO-Speichereinheit 80 für Scheiben und die wahlweise Verzögerungseinheit 73 sind sämtlich mit der Interpolationseinheit 82 gekoppelt. Für die Darstellung eines Volumendatensatzes mit einer Breite von L Voxeln, einer Höhe von M Voxeln und einer Tiefe von N Voxeln ist die FIFO-Speichereinheit 78 für Strahlen so ausgebildet, dass sie L ÷ (B × P) Elemente hält, wobei jedes Element eine Anordnung von (B + 1)2 Voxeln ist. In gleicher Weise ist die FIFO-Speichereinheit 80 für Scheiben so ausgebildet, dass sie (L × M) ÷ (B2 × P) Elemente hält, wobei jedes Element eine Anordnung von B × (B + 1) Abtastungen ist. Die wahlweise Verzögerungseinheit 73 ist so ausgebildet, dass sie B2 Voxel hält und sie um entweder null Grundzyklen oder B3 Grundzyklen verzögert, abhängig davon, ob die Pipeline an dem linken Ende ihres Teilstrahls ist oder nicht. Wie nachfolgend gezeigt wird, halten die FIFO-Speichereinheiten 78 und 80 für Strahlen und Scheiben Voxel, die von unmittelbar oberhalb bzw. vor dem gerade verarbeiteten Block zugeleitet wurden. Die wahlweise Verzögerungseinheit 73 hält Voxel, die von der Pipeline unmittelbar auf der linken Seite zugeleitet wurden.
  • Die Interpolationseinheit 82 berechnet die Werte von Abtastpunkten auf der Grundlage der unmittelbar umgebenden Voxel. In Kommunikationsleitungen 86, die ihrerseits mit den nächstbenachbarten Pipelines in der Uhrzeigerrichtung bzw. entgegen der Uhrzeigerrichtung gekoppelt sind. Wie die Voxelkommunikationsleitungen 76 sind die Abtastkommunikationsleitungen 86 bidirektional und können Abtastdaten in beiden Richtungen um den Ring herum tragen. Die Dreizustands-Schnittstellen 84 sind ebenfalls mit der FIFO-Speichereinheit 88 für Strahlen, der FIFO-Speichereinheit 90 für Scheiben und der wahlweisen Verzögerungseinheit 83 gekoppelt. Die wahlweise Ver zögerungseinheit 83 und die FIFO-Speichereinheiten 88 und 90 für Strahlen und Scheiben sind sämtlich mit der Gradientenschätz- und Schatteneinheit 92 gekoppelt.
  • Zum Darstellen eines Volumendatensatzes mit einer Breite von L Voxeln, einer Höhe von M Voxeln und einer Tiefe von N Voxeln ist die FIFO-Speichereinheit 88 für Strahlen so ausgebildet, dass sie L ÷ (B × P) Elemente hält, wobei jedes Element eine Anordnung 2 × (B + 2)2 Abtastungen ist. In gleicher Weise ist die FIFO-Speichereinheit 80 für Scheiben so ausgebildet, dass sie (L × M) ÷ (B2 × P) Elemente hält, wobei jedes Element eine Anordnung von 2 × B × (B + 2) Abtastungen ist. Die wahlweise Verzögerungseinheit 83 ist so ausgebildet, dass sie B2 Abtastwerte für eine Verzögerung von entweder null Grundzyklen oder B3 Grundzyklen hält, in Abhängigkeit davon, ob die Pipeline an dem linken Ende ihres Teilstrahls ist oder nicht. Wie nachfolgend ersichtlich ist, halten die FIFO-Speichereinheiten 88 und 90 für Strahlen und Scheiben von unmittelbar über bzw. vor dem gerade verarbeiteten Block zugeführte Abtastungen. Die wahlweise Verzögerungseinheit 83 hält Abtastungen, die von der Pipeline unmittelbar links zugeführt sind.
  • Die Gradientenschätz- und Schatteneinheit 92 ist direkt mit der Zusammensetzeinheit 102 gekoppelt. Die Zusammensetzeinheit 102 ist mit den Dreizustands-Schnittstellen 94 gekoppelt, die ihrerseits mit Zusammensetzelement-Kommunikationsleitungen 96 gekoppelt sind. Wie die Voxelkommunikationsleitungen 76 und die Abtastkommunikationsleitungen 86 sind die Zusammensetzelement-Kommunikationsleitungen 96 bidirektionale Kommunikationsleitungen zu der nächstbenachbarten Pipeline sowohl in Uhrzeigerrichtung als auch entgegen der Uhrzeigerrichtung um den Ring herum. Die Dreizustands-Schnittstellen 94 sind auch die FIFO-Speichereinheit 98 für Strahlen, die FIFO-Speichereinheit 100 für Scheiben und die wahlweise Verzögerungseinheit 93. Die FIFO-Speichereinheit 98 für Strahlen, die FIFO-Speichereinheit 100 für Scheiben und die wahlweise Verzögerungseinheit 93 sind sämtlich mit der Zusammensetzeinheit 102 gekoppelt. Schließlich ist die Zusammensetzeinheit 102 mit dem Pixelausgangsbus 48 gekoppelt, der seinerseits mit einer Betrachtungsfläche wie einem Computerschirm gekoppelt ist.
  • Um einen Volumendatensatz mit einer Breite von L Voxeln, einer Höhe von M Voxeln und einer Tiefe von N Voxeln darzustellen, ist die FIFO-Speichereinheit 98 für Strahlen so ausgebildet, dass sie L ÷ (B × ?) Elemente hält, wobei jedes Element eine Anordnung von (B + 1)2 Pixelwerten von teilweise akkumulierten Strahlen ist, d. h., visuelle Eigenschaften enthaltend Farb-, Undurchlässigkeits- und Tiefeninformationen. In gleicher Weise ist die FIFO-Speichereinheit 100 für Scheiben so ausgebildet, dass sie (L × M) ÷ (B2 × P) Elemente hält, wobei jedes Element eine Anordnung von B × (B + 1) Pixelwerten von teilweise akkumulierten Strahlen ist. Die wahlweise Verzögerungseinheit ist so ausgebildet, dass sie B2 Pixelwerte von teilweise akkumulierten Strahlen mit einer Verzögerung von entweder null Grundzyklen oder B2 Grundzyklen hält. Wie nachfolgend gezeigt wird, halten die FIFO-Speichereinheiten 98 und 100 für Strahlen und Scheiben Pixelwerte von teilweise akkumulierten Strahlen, die von unmittelbar über bzw. vor dem gerade verarbeiteten Block zugeführt sind. Die wahlweise Verzögerungseinheit 93 hält Pixelwerte von teilweise akkumulierten Strahlen von der unmittelbar linken Pipeline.
  • Mit anderen Worten, bei dem gegenwärtigen Ausführungsbeispiel der vorliegenden Erfindung weist eine Verarbeitungseinheit 40 vier Hauptfunktionsstufen auf, die nach Pipelineart miteinander verbunden sind, nämlich eine Blockpufferstufe, eine Interpolationsstufe, eine Gradientenschätz- und Schattenstufe und eine Zusammensetzstufe. Jede Stufe ist von der nächsten durch ein Paar von bidirektionalen Kommunikationsleitungen zu den benachbarten Pipelines und durch FIFO-Speichereinheiten für Strahlen und Scheiben, die in der Lage sind, von dem vorhergehenden Strahl und der vorhergehenden Scheibe zugeführte Werte zu halten, getrennt.
  • e) Operationsverfahren
  • Das Operationsverfahren dieses Ausführungsbeispiels der vorliegenden Erfindung wird nun beschrieben. Bezug nehmend auf 13 wird eine Betrachtungsrichtung bestimmt. Ein einzelner Strahl 110 wird senkrecht von der Betrachtungsfläche durch den Volumendatensatz geworfen, d. h. von dem Bild 10, so dass er die Mitte der Fläche 12 trifft, die am nahesten und am senkrechtesten zu der Betrachtungsfläche ist. Im Allgemeinen trifft der Strahl unter einem Winkel 116 auf die Betrachtungsfläche, der kleiner als 45 Grad von dem Normalvektor der Fläche 112 ist, d. h., von einer Linie senkrecht zu der Fläche 112. Es ist darauf hinzuweisen, dass, wenn der Winkel 116 größer als 45 Grad ist, eine verschiedene Fläche des Volumendatensatzes näher und senkrechter zu dem Strahl 110 sein würde. Wenn der Winkel 116 zu der Normalvektorlinie 114 genau 45 Grad beträgt, dann kann eine der beiden Betrachtungsflächen willkürlich gewählt werden. Darüber hinaus beträgt, wenn der Strahl 110 eine Ecke des Volumendatensatzes trifft, der Winkel 116 45 Grad von jedem der drei Normalvektoren, und jede der drei Flächen kann willkürlich gewählt werden.
  • Nachdem eine Fläche 112 ausgewählt ist, wird der Strahl 110 auf die Fläche projiziert, wobei ein "Schatten" 118 des Strahls gebildet wird. Im Allgemeinen landet dieser Schatten in einem der vier Quadranten der Fläche. Der den Schatten 118 enthaltende Quadrant 120 ist der ausgewählte Quadrant. Wenn der Schatten 118 auf einer Linie zwischen zwei Quadranten landet, kann einer dieser Quadranten ausgewählt werden. Wenn der Schatten 118 ein Punkt genau in der Mitte der Fläche 112 ist, dann ist der Strahl 110 senkrecht zu der Fläche und jeder Quadrant kann ausgewählt werden.
  • Nachdem ein Quadrant 120 einer Fläche 112 ausgewählt ist, kann der Volumendatensatz nun in drei Dimensionen gedreht werden, so dass die Fläche 112 auf der "Vorderseite" und der Quadrant 120 in der oberen linken Ecke sind. Es ist festzustellen, dass bei dem "Drehen" des Volumendatensatzes keine Daten bewegt werden müssen. Stattdessen kann eine zweckmäßige Transformationsmatrix auf die Voxel- und Blockkoordinaten angewendet werden, um diese Koordinaten in Koordinatensysteme zu übersetzen, bei denen die Ecke des ausgewählten Quadranten der Ursprung ist und in der oberen linken Ecke der Vorderfläche ist. Die Theorie der Transformationsmatrizen wird in grafischen Büchern erläutert, enthaltend die vorgenannte Bezugnahme auf J. Foley et al.
  • In der folgenden Diskussion werden Koordinaten relativ zu dem Volumendatensatz selbst als x, y und z bezeichnet, während Koordinaten relativ zu dem ausge wählten Quadranten 120 als u, v und w bezeichnet werden. Diese werden "Darstellungskoordinaten" genannt. Die Ausdrücke "links" "rechts" "über" "unter" "hinten" und "vorn" sind definiert hinsichtlich der Darstellungskoordinaten wie folgt:
  • Figure 00590001
  • Darüber hinaus wird die vordere linke obere Ecke des Volumendatensatzes in den Darstellungskoordinaten als der "Ursprung" bezeichnet, d. h., das Voxel mit "u, v, w) = (0, 0, 0). In den Darstellungskoordinaten gehen Strahlen immer durch ein Volumen von vorn nach hinten und in Abwärtsrichtung und nach rechts hindurch, wenn sie nicht senkrecht zu der Fläche sind.
  • Es wird anhand der Definition der Blockverdrehung in Formel 4 festgestellt, dass die Assoziation der Ausdrücke "links" "rechts" "über" "unter" "vorn" und "hinten" mit besonderen benachbarten Pipelines von der Betrachtungsrichtung abhängt. Für eine Betrachtungsrichtung können die Pipelines davor, nach links und darüber alle die Pipeline in der Richtung entgegen dem Uhrzeigersinn in 7 sein, während in anderen Betrachtungsrichtungen einige oder alle von diesen die Pipeline in der Richtung im Uhrzeigersinn in 7 sein können.
  • Bei dem gegenwärtigen Ausführungsbeispiel der vorliegenden Erfindung ist die Verarbeitungsreihenfolge genau dieselbe wie nach 6 mit der Ausnahme, dass sie auf Blöcke und nicht auf individuelle Voxel Bezug nimmt. D. h., die Verarbeitung beginnt am Ursprung der Darstellungskoordinaten und schreitet von links nach rechts in Gruppen von P Blöcken über jeden Strahl von Blöcken fort, dann Strahl für Strahl die Scheibenblöcke herunter und dann Scheibe für Scheibe von der Vorderseite des Volumens zu der Rückseite. Wenn die Verarbeitungspipelines durch das Volumen in Gruppen von P Blöcken hindurchgehen, treten die Strahlen immer auf Blöcken in der noch zu verarbeitenden Richtung aus, d. h. entweder nach hinten, nach unten oder nach rechts. In allen Fällen kommen bereits verarbeitete Daten von oben, nach vorn und nach links eines gegenwärtig verarbeiteten Blockes.
  • Es wird wieder auf 12 Bezug genommen, in der bei dem gegenwärtigen Ausführungsbeispiel der vorliegenden Erfindung der Grundverarbeitungszyklus die Zykluszeit des Lesens eines Voxels aus dem DRAM-Speicher im Stoßbetrieb ist. Diese Grundzyklen sind in Blockzyklen von jeweils B3 Grundzyklen gruppiert. Am Anfang eines Blockzyklus B3 Voxel aus aufeinander folgenden Adressen des Speichermoduls 42 geholt, startend am Anfang des betrachteten Blocks und fortgesetzt für B3 Grundzyklen. Voxel werden in einen der beiden Blockpuffer 72 geholt. Während des nächsten Blockzyklus werden solche B3 Voxel verarbeitet, während ein neuer Block von B3 Voxeln in den anderen Blockpuffer 72 geholt wird. Dann werden während des folgenden Blockzyklus die Rollen der beiden Puffer wieder vertauscht gemäß einer Anwendung der bekannten Technik der "Doppelpufferung".
  • Es wird nun auf 14 Bezug genommen, gemäß der sowohl bei Cube-4 als auch der vorliegenden Erfindung der Abstand von Strahlen 18 nicht durch Pixel 22 auf der Bildebene 16, sondern durch Basispixel 130 auf der Basisebene 132 bestimmt werden. 14 stellt eine zweidimensionale Illustration eines dreidimensionalen Volumendatensatzes und eine Bildebene wie in 1 ist. Die "Basisebene" in 14 ist eine mathematische Ebene parallel zur ausgewählten Fläche 112 des Volumendatensatzes und durch den Ursprung (u, v, w) = (0, 0, 0) der Darstellungskoordinaten hindurchgehend. Die "Basispixel" 130 der Basisebene 132 sind koendend mit den Voxeln auf der Fläche 112 und erstrecken sich in allen Richtungen mit demselben Abstand wie Voxel. Die strahlen 18 werden in einer Richtung senkrecht zur Bildebene 16 geworfen, aber gehen durch die genauen Mitten der Basisspitze 130 in der Basisebene 132 hindurch. Das sich ergebende Bild wird dann in der Basisebene und nicht in der Bildebene dargestellt. Es ist darauf hinzuweisen, dass im Allgemeinen durch Basispixel hindurchgehende Strahlen sich nicht genau mit Pixeln 22 der Bildebene 16 aufreihen. Daher ist ein Nachverarbeitungsschritt erforderlich, um das Basisebenenbild in ein endgültiges Bild zu "verziehen". Es ist auch darauf hinzuweisen, dass für die Strahlen 18, die parallel zueinander sind, Abtastpunkte im Raum gegenüber ihren benachbarten Voxeln um denselben Betrag versetzt sind, wann immer sie in derselben Ebene parallel zu der Basisebene liegen. Dies vereinfacht den Cube-4-Algorithmus beträchtlich. Insbesondere bedeutet dies, dass benachbarte Abtastpunkte durch benachbarte Gruppen von acht benachbarten Voxeln umgeben sind, wobei vier dieser acht zwischen den Schleppabtastpunkten geteilt sind.
  • Der Datenfluss zwischen den Pipelines während der Operation des gegenwärtigen Ausführungsbeispiels wird nun beschrieben. Zuerst wird eine Anordnung von B3 Abtastwerten entlang Strahlen 18 aus den B3 Voxeln eines Blocks plus anderer Voxel, die von benachbarten Pipelines zugeführt wurden, berechnet. Da Abtastungen von ihren nahesten Voxeln interpoliert werden, ist festzustellen, dass eine Anordnung von (B + 1)3 Voxeln benötigt wird, um B3 Abtastungen zu erzeugen. Als zweites wird eine Anordnung von B3 Gradienten berechnet und Pixelwerte, die Farben, Helligkeits- oder Schattenpegel und Durchlässigkeitspegel darstellen, werden zugewiesen. Da die Werte von Abtastungen auf allen Seiten einer gegebenen Abtastung erforderlich sind, um ihren Gradienten zu schätzen, werden insgesamt (B + 2)3 Abtastungen benötigt, um B3 Gradienten und Pixelwerte zu erzeugen. Schließlich werden B3 Pixelwerte mit vorher akkumulierten Pixelwerten zusammengesetzt, um teilweise dargestellte Strahlen zu bilden. Dies erfordert auch eine Anordnung von (B + 1)3 Pixelwerten, um die visuellen Eigenschaften der durch einen Block hindurchgehenden Strahlen zu akkumulieren.
  • 15 illustriert drei Ansichten einer dreidimensionalen Anordnung von (B + 1)3 Voxeln, die von einer Pipeline benötigt werden, um einen Block B3 Abtastpunkten zu berechnen. 15A stellt einen Querschnitt der Anordnung für Werte von W > 0 dar, d. h., alle Voxel mit Ausnahme der Vorderfläche der Anordnung. 15B stellt die rechte Fläche der Anordnung dar. 15C stellt eine perspektivische Ansicht der dreidimensionalen Anordnung aus einer Be trachtung von unten, von vorn und nach rechts der Anordnung dar.
  • Die Voxel der kubischen Anordnung in 15 kommen aus vier Quellen. Ein Block aus B3 Voxeln 140 wird aus dem Volumenspeicher in den Blockpuffer 72 geholt. Eine Anordnung von B2 Voxeln 142 wird von der Pipeline links des gegenwärtigen Blocks über Kommunikationsleitungen 76 und die wahlweise Verzögerungseinheit 73 zugeführt. Ein Anordnung von (B + 1)2 Voxeln 144 wird von der Ausgangsseite der FIFO-Speichereinheit 78 für Strahlen genommen, und eine Anordnung von B × (B + 1) Voxeln 146 wird von der Ausgangsseite der FIFO-Speichereinheit 80 für Scheiben genommen. Es ist festzustellen, dass die Gesamtsumme dieser vier Gruppen von Voxeln gleich (B + 1)3 ist. Die Anordnung 150 aus B3 Abtastungen, die in der Figur durch Kreuze dargestellt ist, wird durch trilineare Interpolation oder eine andere mathematische Funktion berechnet. Es ist darauf hinzuweisen, dass im Allgemeinen die durch diesen Vorgang berechnete Anordnung 150 von B3 Abtastungen gegenüber der Anordnung 140 aus B3 Voxeln, die ursprünglich aus dem Volumenspeicher 42 über dem Blockpuffer 72 geholt wurden, nach links, nach vorn und nach oben versetzt ist. Der Betrag der Versetzung ist immer kleiner als der Abstand zwischen Voxeln, aber er kann null sein in dem Fall von Betrachtungsrichtungen, die senkrecht zu einer der Achsen der Darstellungskoordinaten sind.
  • Da P Verarbeitungspipelines parallel arbeiten, ist die Voxelanordnung 142 im Allgemeinen die rechte Fläche des Blocks von B3 Voxeln, die gegenwärtig unmittelbar nach links verarbeitet werden. Daher müssen, wenn Voxel eines Blocks in einen Blockpuffer 72 geholt werden, seine äußersten rechten B2 Voxel unmit telbar zu dem Verarbeitungselement auf der rechten Seite geführt und in die wahlweise Verzögerungseinheit 73 eingeführt werden und dann zu der Interpolationseinheit 82 weitergeleitet werden. Dieses Weiterleiten muss beendet sein, bevor die Voxel für die Berechnung der Abtastpunkte 150 an der äußersten linken Kante des Blocks 140 benötigt werden. Die Ausnahme besteht, wenn der Block 140 der äußerste linke Block eines Teilstrahls ist. In diesem Fall wurde der Block auf der linken Seite während des vorhergehenden Blockzyklus gelesen, so dass die Anordnung von Voxeln 142 um einen Blockzyklus verzögert werden muss, d. h., um B3 Grundzyklen. Diese Verzögerung wird durch die wahlweise Verzögerungseinheit 73 in 12 dargestellt. Für den Fall, dass eine Pipeline an dem linken Ende ihres Teilstrahls ist, wird der Verzögerungswert auf B3 Zyklen gesetzt, aber ansonsten wird er auf null gesetzt, das bedeutet, dass keine Verzögerung vorliegt.
  • Zusätzlich zu der Weiterleitung der äußersten rechten Fläche des Blocks 140 für eine unmittelbare Verwendung durch die Verarbeitungspipeline nach rechts ist es auch erforderlich, Anordnungen für die Verarbeitungspipelines unterhalb und hinter dem Block 140 zu erzeugen. Es wird nun auf 16 Bezug genommen, in der die Anordnung 242 die Anordnung 142 nachahmt. Dies wird benötigt während der Verarbeitung des nächsten Strahls, d. h., L ÷ (B × P) Blockzyklen später. Diese Anordnung wird von der unteren Fläche des Blocks 140, der unteren Reihe der Anordnung 142 und der unteren Reihe der Anordnung 146 gebildet. Sie wird zu der Verarbeitungspipeline des Blocks darunter geleitet für die Speicherung in ihrer FIFO-Speichereinheit 78 für Strahlen. In gleicher Weise muss eine die Anordnung 146 nachahmende Anordnung 246 für die Verarbeitungspipeline des Blocks dahinter erzeugt werden. Diese wird gebildet aus der hinteren Fläche des Blocks 140 und der hinteren vertikalen Reihe der Anordnung 142. Sie wird zu der FIFO-Speichereinheit 80 für Scheiben der Verarbeitungspipeline des Blocks dahinter geleitet, um für die Verwendung eine Scheibe später bereit zu sein, d. h., L × M ÷ (B2 × P) Blockzyklen später.
  • Die Berechnung von Gradienten und das Zusammensetzen von Strahlen folgen grob demselben Muster. Die Interpolationseinheit 82 erzeugt eine Anordnung von B3 Abtastungen. Im Allgemeinen sind diese, die in 15 illustriert, leicht versetzt nach oben, nach links und nach vorn gegenüber den B3 Voxeln des Blocks 140. Um B3 Gradienten aus diesen Abtastungen zu berechnen, ist eine kubische Anordnung von (B + 2)3 Abtastungen erforderlich. Dies ergibt daraus, dass jeder Gradient berechnet wird, indem die mittleren Differenzen oder eine andere mathematische Funktion der benachbarten Abtastungen in jeder der drei Dimensionen genommen werden.
  • Es wird nun auf 17 Bezug genommen, gemäß der Gradienten 158 an Abtastpunkten, die nicht an der Grenze der (B + 2)3 Gruppe von Abtastungen sind, berechnet werden können. Die Voxel des ursprünglichen Blocks 140 sind durch Punkte illustriert. Durch die Interpolationseinheit 82 berechnete Abtastungen sind durch Kreuze illustriert. Die ursprüngliche Gruppe, die als Teil des Verarbeitungsblocks 140 berechnet wurde, ist die B3-Anordnung 150 von Abtastungen. Zusätzlich wird eine Anordnung 152 aus 2 × B2 Abtastungen von dem Block unmittelbar nach links benötigt, eine Anordnung 154 aus 2 × (B + 2)2 Abtastungen wird von der Verarbeitung des Blocks darüber benötigt, und eine Anordnung 156 aus 2 × B × (B + 2) Abtastungen wird von dem Block unmittelbar davor benötigt. Wie bei der Voxelanordnung 142 wird die Anordnung 152 durch die Verarbeitungspipeline unmittelbar nach links während desselben Pipelinezyklus berechnet, wenn nicht der Block 140 links von einem Teilstrahl ist. Daher wird die Abtastanordnung 152 zu der Interpolationseinheit 82 der wahlweisen Verzögerungseinheit 83 geleitet. Der Verzögerungswert ist auf null gesetzt, ausgenommen, wenn die Pipeline an dem linken Ende ihres Teilstrahls ist, in welchem Fall der Verzögerungswert auf B3 Grundzyklen gesetzt ist, d. h., einen Blockzyklus. Die Anordnungen 144 und 146 werden demgegenüber erhalten von den FIFO-Speichereinheiten 88 und 90 für Strahlen bzw. Scheiben.
  • In gleicher Weise muss, folgend der Berechnung von Abtastungen, die Interpolationseinheit 82 daher Anordnungen, die Anordnungen 154 und 156 nachahmen, zu den FIFO-Speichereinheiten 88 und 90 für Strahlen bzw. Scheiben leiten für die Verarbeitung in dem nächsten Strahl bzw. der nächsten Scheibe.
  • Es ist darauf hinzuweisen, dass die Verarbeitungspipeline, die ursprünglich den Block 140 aus Voxeln geholt hat, Gradienten von Abtastungen berechnet, die nach links, nach oben und nach vorn um mehr als den Abstand eines Voxels versetzt sind. D. h., dass sie Gradienten für einige der Abtastungen berechnet, die in früheren Blockzyklen zusammengesetzt wurden. Der Grund hierfür besteht darin, dass keine Verarbeitungseinheit einen Gradienten berechnen kann, der von Voxeln und Abtastungen abhängt, die später zusammengesetzt werden. Insbesondere kann die Verarbeitungseinheit an dem rechten Ende eines Teilstrahls nicht Gradienten für die B2 Abtastungen, die der rechten Fläche ihres Blocks am nächsten sind, berechnen. Darüber hinaus kann keine Verarbeitungspipeline Gradienten für die Abtastungen auf der unteren Fläche ihres Blocks berechnen. Daher müssen diese später berechnet werden, aber zur Kompensation muss die Verarbeitungspipeline vorher nicht berechnete Gradienten für Abtastungen oberhalb, nach links und nach vorn ihres Blocks berechnen.
  • Folgend der Berechnung von Gradienten können Pixelwerte, die die Farbe, Helligkeit und Durchlässigkeit oder Undurchlässigkeit einer Abtastung darstellen, zugewiesen werden. Diese werden dann durch die Gradientenschätz- und Schatteneinheit 92 zu dem endgültigen Satz von Stufen für die Zusammensetzung geführt. Diese folgen dem Muster nach 15, aber versetzt im Abtastraum zu den Positionen der berechneten Gradienten in 17. B3 Pixelwerte werden direkt von der Gradientenschätz- und Schatteneinheit 92 zu der Zusammensetzeinheit 102 geleitet. Eine Anordnung von Pixelwerten von teilweise akkumulierten Strahlen, die die Voxelanordnung 142 nachahmen, wird zu der Verarbeitungspipeline nach rechts geleitet, wo sie in die wahlweise Verzögerungseinheit 93 eingeführt wird. In gleicher Weise wird eine Anordnung von Zusammensetzelementen, die die Voxelanordnungen 144 und 146 nachahmt, zu den FIFO-Speichereinheiten 98 und 100 für Strahlen bzw. Scheiben der benachbarten Pipelines nach rechts und nach unten geleitet. Wie vorher werden diese Anordnungen aus der unteren und der hinteren Scheibe der B3 Zusammensetzelemente, die aus den Gradienten in demselben Blockzyklus berechnet sind, plus den unteren Reihen von Voxeln, die von dem linken Nachbarn und von der FIFO-Speichereinheit 100 für Scheiben erhalten wurden, gebildet.
  • Auf diese Weise können alle Voxel in den Gruppen von P Blöcken gleichzeitig verarbeitet werden, nach rechts schreitend über einen Strahl von Blöcken, dann strahlenweise eine Scheibe von Blöcken abwärts schreitend und scheibenweise durch den Volumendatensatz schreitend.
  • Es wird beobachtet, dass bei einigen Ausführungsbeispielen die Verarbeitung jedes Blocks innerhalb einer Pipeline in serieller Weise in B3 Grundzyklen durchgeführt wird. Wenn zu einem Volumenspeicher mit einer Stoßbetriebsgeschwindigkeit von 125 Megahertz oder 133,3 Megahertz zugegriffen wird, beträgt die Länge eines Grundzyklus 8 Nanosekunden bzw. 7,5 Nanosekunden. Das ist eine große Anforderung für den Entwickler der Schaltung, die Abtastungen berechnet, Gradienten schätzt und Pixelwerte in teilweise akkumulierten Strahlen zusammensetzt. Daher wird bei bevorzugten Ausführungsbeispielen die Verarbeitung mit einer Pipeline parallel durch mehrere Verarbeitungseinheiten, die mit einer geringeren Geschwindigkeit arbeiten, durchgeführt. Wenn z. B. B gleich 8 ist, kann die Verarbeitung durch einen einzelnen Satz von Verarbeitungsstufen durchgeführt werden, die mit Zykluszeiten von 7,5 Nanosekunden bis 8 Nanosekunden arbeiten, oder durch zwei Sätze von Verarbeitungsstufen, die mit Zykluszeiten von 15 bis 16 Nanosekunden arbeiten, oder durch vier Sätze von Verarbeitungsstufen, die mit Zykluszeiten von 30 bis 32 Nanosekunden arbeiten, oder durch acht Sätze von Verarbeitungsstufen, die mit Verarbeitungszeiten von 60 bis 64 Nanosekunden arbeiten, oder durch noch mehr Stufen. Es ist darauf hinzuweisen, dass die Auswahl der Anzahl von Verarbeitungsstufen eine Implementationsauswahl ist, die einem Fachmann für die Entwicklung elektronischer Schaltungen überlassen ist.
  • Es ist aus der vorhergehenden Beschreibung ersichtlich, dass die Einführung der Blockbildung und der damit verbundenen Änderungen bei der Architektur und der Verarbeitungsreihenfolge von Voxeln die Wirkung haben, dass die Verwendung des Stoßbetriebs für den Zugriff zu einem DRAM bei einem auf Cube-4 basierenden System möglich ist. D. h., es wird bei der vorliegenden Erfindung möglich, die großen Speichermengen, die zum Halten von Volumendatensätzen erforderlich sind, unter Verwendung kostengünstiger, leicht verfügbarer DRAM-Vorrichtungen zu implementieren. Dies führt zu erheblichen Einsparungen der Kosten, der Größe und der Leistung gegenüber vorher implementierten Echtzeit-Volumendarstellungssystem, und es ermöglicht die Implementierung praktischer und erschwinglicher Echtzeit-Volumendarstellungssysteme für Personal- und Tischcomputer.
  • Es ist auch darauf hinzuweisen, dass, wenn die Halbleitertechnologie fortschreitet und es möglich wird, die Verarbeitungslogik und den DRAM auf derselben Vorrichtung oder demselben Chip zu kombinieren, dieselben architektonischen Änderungen, die benötigt werden, um einen DRAM-Zugriff im Stoßbetrieb zu ermöglichen, benötigt werden, um einen direkten Zugriff auf den Chip zu dem Volumenspeicher durch eine Verarbeitungspipeline in einer effizienten und wirksamen Weise zu ermöglichen.
  • f) Kommunikation zwischen Verarbeitungspipelines
  • Aus 12 und der vorstehenden Diskussion ist ersichtlich, dass drei Arten von Daten bei dem gegenwärtigen Ausführungsbeispiel von einer Pipeline zu ihrem Nachbarn geführt werden müssen. Dieses sind Vo xel, Abtastungen und teilweise akkumulierte Pixelwerte. Diese werden über Kommunikationsleitungen 76, 86 bzw. 96 übertragen. Weiterhin gibt es für jede Art von Daten zwei Arten von FIFO-Speichereinheiten, nämlich FIFO-Speichereinheit 78, 88 und 98 für Strahlen für Voxel, Abtastungen bzw. Pixel, und FIFO-Speichereinheit 80, 90 bzw. 100 für Scheiben.
  • Während jedes Blockzyklus werden B3 Voxel aus dem Volumenspeicher 42 geholt. Zur selben Zeit müssen B2 Voxel der Anordnung 142, (B + 1)2 Voxel der Anordnung 144 und B × (B + 1) Voxel der Anordnung 146 zwischen zwei Pipelines übertragen werden. D. h., es müssen B2 + (B + 1)2 + B × (B + 1) = 3B2 + 3B + 1 = (B + 1)3 – B3 (5)Voxel übertragen werden.
  • In gleicher Weise werden während jedes Blockzyklus B3 Abtastungen von der Abtastberechnungsstufe der Pipeline erhalten, aber B2 Abtastungen der Anordnung 152, 2 × (B + 2)2 Abtastungen der Anordnung 154 und 2 × B × (B + 2) Abtastungen der Anordnung 156 werden zwischen Pipelines übertragen. D. h., insgesamt 2 × B2 + 2 × (B + 2)2 + 2 × B × (B + 2) = 6B2 + 12B + 8 = (b + s)3 – B3 (6)Abtastungen müssen übertragen werden.
  • Schließlich werden während jedes Blockzyklus B3 Pixelwerte innerhalb der Pipeline berechnet, aber B2 Pixelwerte, die teilweise akkumulierte Strahlen darstellen, werden von links benötigt, (B + 1)2 Pixelwert, die teilweise akkumulierte Strahlen darstellen, werden von oben benötigt, und B × (B + 1) Pixelwerte, die teilweise akkumulierte Strahlen darstellen, werden von vorn benötigt. Somit müssen insgesamt B2 + (B + 1)2 + B × (B + 1) = 3B2 + 3B + 1 = (B + 1)3 – B3 (7)
  • Pixelwerte zwischen Pipelines übertragen werden. Es ist aus den Gleichungen 5, 6 und 7 ersichtlich, dass die Gesamtzahl von Datenwörtern, die zwischen Pipelines für jeden B3-Block von Voxeln übertragen werden müssen, angenähert proportional zu B2 ist.
  • Die folgende Tabelle zeigt die Werte für die Gleichungen 5, 6 und 7 für Blockgrößen im Bereich von 2 bis 16 an.
  • Figure 00710001
  • Wie aus der Tabelle ersichtlich ist, wächst, wenn B wächst, B3 schnell, aber die Gleichungen 5, 6 und 7 wachsen viel langsamer. Dies ergibt sich daraus, dass für jede kubische Anordnung von Daten, die aus einem Speicher oder einer vorhergehenden Stufe geholt werden, nur eine quadratische Anzahl von Voxeln zwischen Pipelines übertragen werden muss. Wenn z. B. ein Block zwei Voxel auf jeder Kante hat, dann müssen 23 oder acht Voxel während eines Blockzyklus geholt werden, aber 19 Voxel, 56 Abtastungen und 19 Pixel müssen während desselben Blockzyklus zu benachbarten Pipelines übertragen werden. Dies ist nahezu das Zwölffache der geholten Informationen.
  • Andererseits müssen für B = 8 für jeweils während eines Blockzyklus geholte 512 Voxel, 217 Voxel, 488 Abtastungen und 217 Pixel zu benachbarten Pipelines übertragen werden. Das Verhältnis von kommunizierten Werten zu geholten Werten beträgt in diesem Fall etwa 1,8.
  • Daher ist eine Nebenwirkung der Blockbildung die Verringerung der Informationsmenge, die zwischen Pipelines übertragen werden muss. Dies hat den zusätzlichen Nutzen für den Entwurf einer Halbleiterimplementierung einer Verarbeitungspipeline, da eine Verringerung der Kommunikationsmenge eine Herabsetzung der Anzahl von Stiften bedeutet. Es ist auch möglich, die Bandbreite von Stiften anstelle ihrer Anzahl zu verringern.
  • Aus 8 ist ersichtlich, dass das Cube-4-System nach dem Stand der Technik Kommunikationsleitungen zwischen benachbarten Verarbeitungspipelines, Pipelines, die einen gegenseitigen Abstand von zwei zueinander haben, und in dem Fall der Zusammensetzeinheit 68 Pipelines, die einen Abstand von drei voneinander haben, benötigt. Die Gesamtzahl von benötigten Stiften ist leicht unter 200 für 8-Bit-Voxel und nahezu 400 für 16-Bit-Voxel. Demgegenüber beträgt bei dem gegenwärtigen Ausführungsbeispiel mit B = 8 und unter der Annahme von 16-Bit-Voxeln und -Abtastungen und 48-Bit-Pixeln die Gesamtzahl der benötigten Stifte 192, d. h., 96 Stifte, die zu der Pipeline auf jeder Seite führen.
  • Es ist bei dem Verfahren der Blockverdrehung nach der vorliegenden Erfindung festzustellen, dass, nachdem Darstellungskoordinaten gewählten wurden, ein Strahl, der durch einen besonderen Block hindurchgeht, diesen Block verlässt und in irgendeinen von sieben anderen Blöcken eintreten kann, nämlich die drei benachbarten Blöcke rechts, unterhalb oder hinter dem gegebenen Block, die drei Blöcke mit Kanten benachbart der rechten unteren, rechten hinteren und unteren hinteren Kante des gegebenen Blocks, oder der Block mit einer oberen linken vorderen Ecke benachbart der unteren rechten hinteren Ecke des gegebenen Blocks. Diese sieben Blöcke werden von zumindest drei verschiedenen Verarbeitungsmodulen verarbeitet, aber möglicherweise sogar von fünf.
  • Während bei dem Cube-4-System jede Verarbeitungspipeline direkte Verbindungen zu allen fünf benötigt, ist dies bei der vorliegenden Erfindung nicht erforderlich. Stattdessen wird die gesamte Kommunikation, die zum Weiterleiten von Voxel- und Abtastwerten und teilweise akkumulierten Strahlen erforderlich ist, erzielt durch die Weiterleitung von Anordnungen dieser Werte zu den nahesten Nachbarn. Von weiter entfernten Pipelines benötigte Werte, d. h., von Pipelines, die nicht die nahesten Nachbarn sind, werden in mehreren Stufen weitergeleitet, aber gelangen immer rechtzeitig zu der Bestimmungspipeline.
  • g) Abschnittsbildung
  • Bei der vorliegenden Erfindung erfordert jede Verarbeitungspipeline einen internen Speicher zum Halten von von einer Pipeline zu der nächsten übertragenen Datenwerten. Diese Datenwerte werden in diesem Speicher gehalten, bis sie für die Verarbeitung eines nachfolgenden Strahls oder einer nachfolgenden Scheibe von Blöcken benötigt werden. Bei dem gegenwärtigen Ausführungsbeispiel nimmt dieser interne Speicher die Form von FIFO-Speichereinheiten 78, 88 und 98 für Strahlen und von FIFO-Speichereinheiten 80, 90 und 100 für Scheiben an. Jede FIFO-Speichereinheit ist eine interne Speichereinheit, die die bekannte Technik des Schiebespeichers implementiert. D. h., neue Daten werden immer in freie Speicherstellen geschrieben. Wenn vorher gespeicherte Daten gelesen werden, werden ihre Speicherstellen wieder frei und sind für neue Daten verfügbar. Die Steuerung einer FIFO-Speichereinheit garantiert, dass Datenwörter nur in der Reihenfolge gelesen werden können, in der sie geschrieben wurden.
  • Bei dem gegenwärtigen Ausführungsbeispiel benötigt jede FIFO-Speichereinheit für Strahlen eine Kapazität zum Speichern von Daten für L ÷ (B × P) Blöcke, die später verarbeitet werden, wobei L die Breite des darzustellenden Volumendatensatzes ist, B die Anzahl von Voxeln auf der Kante eines Blocks ist und P die Anzahl von Verarbeitungspipelines in dem Volumendarstellungssystem ist. Die pro Block in den FIFO-Speichereinheiten 78 und 98 gespeicherte Datenmenge sind Anordnungen der Größe von (B + 1)2 Datenelementen, die pro Block in der FIFO-Speichereinheit 88 gespeicherte Datenmenge ist eine Anordnung der Größe von 2 × (B + 2)2 Datenelementen. Somit beträgt die Gesamtmenge der internen Speicherung bei den FIFO-Speichereinheiten für Strahlen angenähert L × B ÷ P.
  • In dem Fall der FIFO-Speichereinheiten 80, 90 und 100 für Scheiben erfordert jede eine Kapazität für L × M ÷ (B2 ×) Blöcke, die später verarbeitet werden, wobei M die Höhe des Volumendatensatzes ist. Die pro Block in den FIFO-Speichereinheiten 80 und 100 gespeicherte Datenmenge sind Anordnungen der Größe von B × (B + 1) Datenelementen, die pro Block in der FIFO-Speichereinheit 88 gespeicherte Datenmenge ist eine Anordnung der Größe von 2 × B × (B + 2) Datenelementen. Somit beträgt die Gesamtmenge der internen Speicherung bei den FIFO-Speichereinheiten für Scheiben angenähert L × M ÷ P.
  • Mit anderen Worten, die Speicherkapazitäten der FIFO-Speichereinheiten für Strahlen müssen proportional der Breite des Volumendatensatzes sein, während die Kapazitäten der FIFO-Speichereinheiten für Scheiben proportionale der Fläche der Volumendaten sein müssen. In dem Fall von kubischen Volumendatensätzen, d. h., Volumendatensätzen mit derselben Anzahl von Elementen auf jeder Kante, sind diese Speicheranforderungen unabhängig von der Betrachtungsrichtung. Aber in den Fällen von allgemeinen Volumendatensätzen, die wie rechteckige Festkörper von willkürlichen Proportionen geformt sind, ändern sich die Speicheranforderungen mit der Betrachtungsrichtung.
  • Es ist darauf hinzuweisen, dass bei dem Cube-4-System nach dem Stand der Technik und bei anderen Ausführungsbeispielen der vorliegenden Erfindung die internen Speicheranforderungen angenähert dieselben sind. D. h., der Strahlenspeicher ist proportionale zu der Breite des Volumendatensatzes, und der Scheibenspeicher ist proportional zu der Fläche des Volumendatensatzes. Es ist auch festzustellen, dass die Speicheranforderungen für FIFO-Einheiten für Scheiben alle anderen dominieren.
  • Darüber hinaus kann die Gesamtspeichermenge sehr groß sein. Bei dem gegenwärtigen Ausführungsbeispiel mit Voxeln und Abtastungen, die 16 Bits für die Speicherung benötigen, und teilweise akkumulierten Pixeln, die 32 Bits für die Speicherung benötigen, sind mehr als 1,5 Megabits für interne Speicherung pro Pipeline erforderlich, um einen 2563-Datensatz mit vier Verarbeitungspipelines darzustellen. Bei der gegenwärtigen Halbleitertechnologie, die für die Implementierung der Verarbeitungselemente geeignet ist, ergibt dies ein sehr großes und daher sehr kostenaufwendiges Chip.
  • Um dieses Problem zu lindern, stellt die vorliegende Erfindung einen Volumendatensatz in Stücken oder "Abschnitten" in einer solchen Weise dar, dass die Größe der Fläche jedes Abschnitts in einen besser handhabbaren Wert herabgesetzt wird. Dies verringert die benötigte interne Speichermenge, da jeder Abschnitt als ein separater Volumendatensatz dargestellt wird. 18 stellt drei beispielhafte Volumendatensätze in Darstellungskoordinaten dar, wobei jeder aus der Betrachtungsrichtung 110 dargestellt ist. 18A ist in gleiche horizontale Abschnitte 200 unterteilt. Jeder Abschnitt ist eine "Tafel" von Daten von vorn nach hinten in den Darstellungskoordinaten. Die erforderliche interne Speichermenge für FIFO-Einheiten für Scheiben ist proportional zu der Größe jeder Abschnittsfläche 202.
  • In 18B ist der Volumendatensatz 10 sowohl in der u- als auch der v-Dimension in rechteckige Abschnitte unterteilt, die sich von vorn nach hinten erstrecken. Wiederum ist die erforderliche Größe des FIFO-Speichers für Scheiben zum Darstellen jedes Abschnitts proportional zu der Größe der Fläche. In 18C ist der Volumendatensatz ein langer dünner rechteckiger Festkörper, der von seiner langen Seite darzustellen ist. In diesem Fall ist der Datensatz in Abschnitte mit quadratischen Flächen Seite an Seite unterteilt. In allen drei Fällen wird die für die Darstellung erforderliche interne Speichermenge auf eine Menge reduziert, die proportional zu den Größen o der Flächen 202 der Abschnitte ist.
  • Wenn die Betrachtungsrichtung 110 genau senkrecht zu jeder Abschnittsfläche ist, dann können die sich aus der Darstellung jedes Abschnitts ergebenden Bilder Seite an Seite oder eins über dem anderen angeordnet werden, um ein korrekt dargestelltes Bild des gesamten Volumendatensatzes zu erzeugen. D. h., in dem Fall einer senkrechten Betrachtungsrichtung ist die Darstellung in Abschnitten genau äquivalent der Darstellung des Datensatzes als Ganzes.
  • Wenn jedoch die Betrachtungsrichtung nicht senkrecht zu jeder Fläche ist, dann gehen einige Strahlen durch die Grenzen 204 zwischen Abschnitten hindurch. In diesem Fall müssen teilweise zusammengesetzte oder akkumulierte Strahlen, die an der Seite oder im Boden eines Abschnitts austreten und in einen benachbarten Abschnitt eintreten, vorübergehend gespeichert werden, bis die Darstellung dieses Abschnitts beendet ist. Sie müssen dann verwendet werden, um die Akkumulation von Strahlen in den benachbarten Abschnitten fortzusetzen.
  • Bei der gegenwärtigen Erfindung werden teilweise akkumulierte Strahlen außerhalb der Darstellungspipelines in externen Speichermodulen gespeichert. Es wird nun auf 19 Bezug genommen, in der eine Modifikation des unteren Teils von 12 gezeigt ist. Bei dieser Modifikation ist die Zusammensetzeinheit 102 über die Dreizustandseinheit 106 mit dem externen Speichermodul 104 gekoppelt. Dreizustandseinheiten 94, die Pixelkommunikationsleitungen 96 verbinden, sind auch mit der Dreizustands-Schnittstelle 106 gekoppelt. Das externe Speichermodul 104 ist dann mit dem Darstellungsausgang 48 gekoppelt.
  • Während des Darstellungsvorgangs schreibt, wenn die Zusammensetzeinheit 102 einen teilweise akkumulierten Pixelwert zu ihrer benachbarten Pipeline darunter oder nach rechts sendet, wenn dieser Pixelwert einen Strahl darstellt, der die rechte oder die untere Seite des gegenwärtig dargestellten Abschnitts darstellt, und wenn dieser Strahl in die linke oder obere Seite eines benachbarten Abschnitts eintritt, dann schreibt die benachbarte Pipeline den Pixelwert über die Dreizustands-Schnittstelle 106 in das externe Speichermodul 104. Dann müssen, wenn der benachbarte Abschnitt dargestellt wird, die Pixelwerte von teilweise akkumulierten Strahlen, die in den Abschnitt von links oder von oben eintreten, aus der externen Speichereinheit 104 anstelle aus der wahlweisen Verzögerungseinheit 93 oder dem FIFO-Speicher 98 für Strahlen ausgelesen werden. Pixelwerte, die Strahlen darstellen, die den gesamten Volumendatensatz verlassen, werden auch in das externe Speichermodul 104 geschrieben und dann zu den Pixelausgangsleitungen 48 geleitet.
  • Bei der vorliegenden Erfindung wird die externe Speicherung durch Verwendung von Stoßbetriebs-DRAM-Chips implementiert. Die erforderliche Speichermenge ist proportional der Größe der unteren und rechten Fläche, die die Grenzen von Abschnitten bilden. Wenn beispielsweise ein kubischer Datensatz mit N Voxeln auf jeder Kante wie in 18A in horizontale Abschnitte geteilt wird, dann hat jede Grenze 204 höchstens N2 Pixel. Die tatsächliche Anzahl von Pixeln, die zwischen Abschnitten gespeicherten werden müssen, hängt von dem Betrachtungswinkel ab. Senkrechte Betrachtungsrichtungen erfordern keine extern zu speichernden Pixel, während Betrachtungswinkel von 45 Grad zu der Grenze eines Abschnitts die Speicherung von N2 Pixeln erfordern.
  • Es ist darauf hinzuweisen, dass zum korrekten Akkumulieren von Strahlen an den Grenzen von Abschnitten 204 Abtastpunkte zwischen der rechten oder unteren Ebene von Voxeln eines Abschnitts und der oberen oder linken Ebene des benachbarten Abschnitts berechnet werden müssen. Die Berechnung dieser Abtastungen erfordert Voxelwerte von beiden Abschnitten. In gleicher Weise müssen Gradienten für Abtastwerte sowohl zwischen Abschnitten als auch für die Abtastwerte innerhalb jedes Abschnitts, die der Grenze 204 am nahesten sind, geschätzt werden. Diese Schätzung erfordert Abtastwerte von beiden Abschnitten.
  • Bei einigen Ausführungsbeispielen der vorliegenden Erfindung werden diese für die Berechnungen nahe den Abschnittsgrenzen erforderlichen Voxel- und Abtastwerte zusammen mit Pixelwerten von teilweise akkumulierten Strahlen im externen Speicher 104 gespeichert. Bei bevorzugten Ausführungsbeispielen jedoch werden diese Voxel- und Abtastwerte erhalten durch Wiederlesen und Wiederdarstellen der Voxel nahe der Grenze des Abschnitts. Dies hat die Wirkung des Wiederfüllens der FIFO-Speichereinheiten für Strahlen mit den zweckmäßigen Zwischenwerten, die zum Berechnen der Abtastungen und Gradienten nahe einer Abschnittsgrenze 204 benötigt werden.
  • Es ist festzustellen, dass die Technik der Ab schnittsbildung für die Darstellung von Volumendatensätzen angewendet werden kann, die zu groß sind, um auf einmal insgesamt in den Volumenspeicher zu passen. Ein großer Datensatz wird in Abschnitte unterteilt, von denen jeder klein genug ist, um in den Volumenspeicher zu passen, und von denen jeder eine Fläche hat, die klein genug ist, um innerhalb der Grenzen der internen Speicherung dargestellt zu werden. Dann wird jeder Abschnitt getrennt dargestellt und sein dargestelltes Bild wird in externen Speichermodulen 104 akkumuliert. Nachdem ein Abschnitt dargestellt ist, wird er im Volumenspeicher durch einen benachbarten Abschnitt ersetzt, der dann getrennt dargestellt wird. Pixelwerte von teilweise akkumulierten Strahlen werden von einem Abschnitt zu dem nächsten über den vorstehend beschriebenen Mechanismus geführt, enthaltend das Wiederlesen und Wiederverarbeiten von Voxeln nahe der Grenze. Dieser Vorgang wird wiederholt, bis der gesamte Volumendatensatz dargestellt ist. Es ist darauf hinzuweisen, dass in Fällen von sehr großen Datensätzen es unpraktisch ist, die vollständige Echtzeit-Darstellungsgeschwindigkeit von 30 Bildern pro Sekunde zu erzielen.
  • h) Miniblockbildung
  • Bei der bisher beschriebenen vorliegenden Erfindung werden Voxel aus dem Voxelspeicher gleichzeitig in einem Block ausgelesen. D. h., jeder Lesevorgang holt B3 Voxel in einem Blockzyklus. Dies ist mehr als benötigt, um die Voxel nahe der Grenze eines Abschnitts wieder zu verarbeiten. Wenn beispielsweise B gleich 8 ist, dann werden 512 Voxel in einem Blockzyklus gelesen. Jedoch werden nur zwei oder drei Ebenen von Voxeln entlang der Grenze für die Wiederverarbeitung benötigt, d. h., nur 128 oder 192 Voxel. Das Erfordernis zum gleichzeitigen Lesen von 512 Voxeln, um nur 128 oder 192 Voxel zu verarbeiten, ist eine Zeitvergeudung.
  • Um diese Vergeudung zu verringern, wendet die vorliegende Erfindung eine Technik an, die als "Miniblockbildung" bezeichnet wird. Bei dieser Technik werden Voxel innerhalb eines Blocks in kleineren Blöcken von "Miniblöcken" der Größe von jeweils 2 × 2 × 2 Voxel gespeichert, d. h., insgesamt acht Voxeln in einem Miniblock. Der gesamte Block ist dann eine kubische Anordnung von Miniblöcken. Jeder Miniblock ist an aufeinander folgenden Stellen im Volumenspeicher gespeichert, so dass er im Stoßbetrieb geholt werden kann. Die Miniblockgröße wird so gewählt, dass sie zumindest so groß wie die minimale Stoßgröße von einigen Stoßbetrieb-DRAM-Produkten ist. Daher können die Miniblöcke eines Blocks aus dem Volumenspeicher in jeder Reihenfolge gelesen werden und ein Subsatz eines Blocks kann gelesen werden, wann immer dies zweckmäßig ist.
  • Diese Technik wird angewendet, wenn die Voxel nahe der Grenze eines Abschnitts wieder gelesen werden. Es werden nur so viele Miniblöcke geholt, wie sie die für die Wiederverarbeitung benötigten Voxel enthalten.
  • Es ist auch festzustellen, dass die Größe von Blockpuffern leicht herabgesetzt werden kann durch Holen von Miniblöcken in der Reihenfolge, in der Voxel innerhalb eines Blocks verarbeitet werden. D. h. die Darstellung eines Blocks beginnt auf einer Seite, sobald solche Voxel geholt wurden. Solange, wie das Holen so schnell durchgeführt wird, wie die Verarbei tung von individuellen Voxeln, können die beiden im Verriegelungsschritt fortschreiten. Dann können neue Voxel in Pufferbereich geholt werden, für die die Verarbeitung beendet ist. Dies verringert die für die Darstellung benötigte Gesamtgröße des Blockpufferspeichers 72.
  • Nachdem nun einige Ausführungsbeispiele der Erfindung und einige Modifikationen und Änderungen von diesen beschrieben wurden, ist für den Fachmann augenscheinlich, dass das Vorstehende rein illustrativ und nicht beschränkend ist, und nur beispielhaft dargestellt wurde. Zahlreiche Modifikationen und andere Ausführungsbeispiele liegen innerhalb des Bereichs der gewöhnlichen Erfahrung eines Fachmanns und werden als in den Bereich der Erfindung fallend angesehen, die nur durch die angefügten Ansprüche beschränkt ist.

Claims (17)

  1. Vorrichtung zum Ermöglichen einer Echtzeit-Volumendarstellung, aufweisend eine Volumengrafik-Darstellungsmaschine mit einer Anzahl von Speichermodulen (42) zum Speichern eines eintreffenden Volumendatensatzes und eine Anzahl von mit den Speichermodulen (42) verbundenen Verarbeitungsmodulen (4), wobei die Anzahl von Verarbeitungsmodulen (40) gleich der Anzahl von Speichermodulen (42) ist und die Verarbeitungsmodule (40) mit den jeweiligen Speichermodulen (42) verbunden sind, die Verarbeitungsmodule (40) ringartig miteinander verbunden sind, dadurch gekennzeichnet, dass die Vorrichtung weiterhin aufweist: Mittel zum Gruppieren von Voxeln in dem eintreffenden Volumendatensatz in der Weise, dass die Voxel jeder der Gruppen an aufeinander folgenden Speicheradressen von einem der Speichermodule (42) gespeichert sind und aus diesen herausgeholt werden können ungeachtet der Blickrichtung, wodurch die Verwendung von Speichermodulen (42) von Typen, die Hochgeschwindigkeitszugriffe von aufeinander folgenden Speicheradressen stützen, ermöglicht wird.
  2. Vorrichtung nach Anspruch 1, bei der die Volumengrafik-Darstellungsmaschine auf einen Personalcomputer angewendet wird.
  3. Vorrichtung nach Anspruch 1, bei der die Volumengrafik-Darstellungsmaschine mit einem Tischrechner gekoppelt ist.
  4. Vorrichtung nach Anspruch 1, bei der die Speichermodule Speichermodule mit wahlweisem Zugriff sind, die mit der Fähigkeit zum Zugriff zu Daten von aufeinander folgenden Speicheradressen im Bündelbetrieb ausgestattet sind.
  5. Vorrichtung nach Anspruch 1, bei der die Gruppierungsmittel Mittel zum Gruppieren der Voxel in Blöcken von aneinander grenzenden Voxeln in drei Dimensionen und Mittel zur Schräganordnung dieser Blöcke quer über die Speichermodule in einer solchen Weise, dass benachbarte Blöcke in jeder der drei Dimensionen der gesetzten Volumendaten in benachbarten Speichermodulen gespeichert sind, um benachbarten Verarbeitungsmodulen zu ermöglichen, gemeinschaftlich und gleichzeitig Voxel aus benachbarten Blöcken im Bündelbetrieb aus jeweils benachbarten Speichermodulen zu holen, enthalten.
  6. Vorrichtung nach Anspruch 5, bei der alle Voxel in einem Block in demselben Speichermodul gespeichert sind.
  7. Vorrichtung nach Anspruch 6, bei der innerhalb jedes Blocks Voxel an aufeinander folgenden Speicheradressen gespeichert sind.
  8. Vorrichtung nach Anspruch 7, worin die Verarbeitungsmodule enthalten: Mittel zum Darstellen von Voxeln innerhalb eines Blocks; Mittel zum Befördern von Daten zu benachbarten Verarbeitungsmodulen; und Mittel zum Akkumulieren von Ergebnissen der Darstellung individueller Blöcke, um resultierende Bilder zu erzeugen.
  9. Vorrichtung nach Anspruch 8 und weiterhin enthaltend Mittel für eine bidirektionale Kommunikation zwischen benachbarten Verarbeitungsmodulen; und Mittel zum Bestimmen der Richtung der Kommunikation für die Beförderung von Daten.
  10. Vorrichtung nach Anspruch 5, worin die Blöcke derart in Scheiben gruppiert sind, dass alle Blöcke einer Scheibe gleichen Abstand von einer Fläche des Volumendatensatzes haben.
  11. Vorrichtung nach Anspruch 5 und weiterhin enthaltend Mittel zum gleichzeitigen Darstellen des Volumendatensatzes fortschreitend in Gruppen von P benachbarten Blöcken, wobei P die Anzahl der Verarbeitungsmodule in der Volumengrafikmaschine ist; Mittel zum Steuern der Folge des gleichzeitigen Darstellens in Gruppen von P Blöcken, so dass alle Blöcke jeglicher Scheibe des Volumendatensatzes vor jeglichen Blöcken jeglicher anderen Scheibe, die entfernter von der Fläche des Volumendatensatzes als diese Scheibe ist, dargestellt werden; und Mittel zum Akkumulieren der Ergebnisse des gleichzeitigen Darstellens von Blöcken einer Scheibe.
  12. Vorrichtung nach Anspruch 1 und weiterhin enthaltend Mittel zum Teilen des Volumendatensatzes in Ab schnitte; Mittel zum gleichzeitigen Darstellen eines Abschnitts des Volumendatensatzes; und Mittel zum Speichern der Ergebnisse von dargestellten Abschnitten und zum Wiederanwenden der Ergebnisse auf die Darstellung von nachfolgenden Abschnitten.
  13. Vorrichtung nach Anspruch 1 und weiterhin enthaltend Mittel zum Reduzieren der Menge des internen Speicherns innerhalb jedes der Verarbeitungsmodule enthaltend Mittel zum Teilen des Volumendatensatzes, um somit die gleichzeitige Darstellung eines Abschnitts zu ermöglichen, wobei jeder Abschnitt weniger Speicher benötigt als der, der mit der Darstellung des Volumens insgesamt assoziiert ist.
  14. Vorrichtung nach Anspruch 1, bei der die Speichermodule Halbleiteranordnungen von Speichern mit wahlweisem Zugriff sind, die in jeweilige Verarbeitungsmodule auf einem Halbleiterchip eingebettet sind.
  15. Vorrichtung nach Anspruch 5 und weiterhin enthaltend Mittel zum Übertragen von Daten nur von Voxeln auf der Fläche jedes Blockes zu der angrenzenden Verarbeitungspipeline, um hierdurch die Menge von zwischen benachbarten Pipelines übertragenen Daten um einen Faktor 1/B zu reduzieren, worin B die Anzahl von Voxeln auf einer Kante eines Blockes ist.
  16. Vorrichtung nach Anspruch 7 und weiterhin enthaltend Mittel zum Unterteilen der Blöcke in Miniblöcke in der Weise, dass alle Voxel eines Miniblocks an aufeinander folgenden Speicheradres sen gespeichert sind, um hierdurch die Menge des in den Verarbeitungsmodulen erforderlichen Speichers zu reduzieren.
  17. Vorrichtung nach Anspruch 13 und weiterhin enthaltend Mittel zum Unterteilen der Blöcke in Miniblöcke in der Weise, dass alle Voxel eines Miniblocks an aufeinander folgenden Speicheradressen gespeichert sind, um hierdurch die Menge des in den Verarbeitungsmodulen benötigten Speichers zu reduzieren, und Mittel zum Verkürzen der Zeit, die für die Darstellung eines Abschnitts benötigt wird, enthaltend Mittel zum Reduzieren der Anzahl von Voxeln, die aus einem Block an der Grenze des Abschnitts gelesen werden müssen, von allen Voxeln des Blocks an dieser Grenze auf nur solche Voxel in Miniblöcken an dieser Grenze.
DE69821848T 1997-08-01 1998-04-27 Echt-Zeit PC basiertes Volumendarstellungssystem Expired - Lifetime DE69821848T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/905,238 US6008813A (en) 1997-08-01 1997-08-01 Real-time PC based volume rendering system
US905238 1997-08-01

Publications (2)

Publication Number Publication Date
DE69821848D1 DE69821848D1 (de) 2004-04-01
DE69821848T2 true DE69821848T2 (de) 2004-12-16

Family

ID=25420476

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69821848T Expired - Lifetime DE69821848T2 (de) 1997-08-01 1998-04-27 Echt-Zeit PC basiertes Volumendarstellungssystem

Country Status (5)

Country Link
US (4) US6008813A (de)
EP (4) EP1081653A3 (de)
JP (4) JP3129701B2 (de)
AT (1) ATE260497T1 (de)
DE (1) DE69821848T2 (de)

Families Citing this family (181)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6236405B1 (en) * 1996-07-01 2001-05-22 S3 Graphics Co., Ltd. System and method for mapping textures onto surfaces of computer-generated objects
JP3896188B2 (ja) * 1997-06-13 2007-03-22 株式会社日立製作所 放射線治療計画のための画像処理装置
US6317525B1 (en) * 1998-02-20 2001-11-13 Ati Technologies, Inc. Method and apparatus for full scene anti-aliasing
US6373977B1 (en) * 1998-03-22 2002-04-16 Hewlett-Packard Company Methods and apparatus for constructing a 3D model of a scene and rendering new views of the scene
US6369817B1 (en) * 1998-05-25 2002-04-09 Japan Radio Co., Ltd. Image synthesis system
US6674430B1 (en) * 1998-07-16 2004-01-06 The Research Foundation Of State University Of New York Apparatus and method for real-time volume processing and universal 3D rendering
DE19835215C2 (de) * 1998-08-05 2000-07-27 Mannesmann Vdo Ag Kombinationsinstrument
US6727900B1 (en) * 1998-09-07 2004-04-27 Renesas Technology Corp. Semiconductor integrated circuit device
JP4365950B2 (ja) * 1998-09-11 2009-11-18 キヤノン株式会社 高速ラスタ形式レンダリングのためのグラフィックオブジェクト処理方法および装置
US6512517B1 (en) * 1998-11-12 2003-01-28 Terarecon, Inc. Volume rendering integrated circuit
JP2000149047A (ja) * 1998-11-12 2000-05-30 Mitsubishi Electric Inf Technol Center America Inc ボリュ―ムレンダリングプロセッサ
US6266733B1 (en) * 1998-11-12 2001-07-24 Terarecon, Inc Two-level mini-block storage system for volume data sets
US6297799B1 (en) * 1998-11-12 2001-10-02 James Knittel Three-dimensional cursor for a real-time volume rendering system
JP2000254120A (ja) * 1999-03-11 2000-09-19 Toshiba Corp 3次元超音波診断装置
US6532018B1 (en) * 1999-04-19 2003-03-11 Microsoft Corporation Combined floating-point logic core and frame buffer
JP2001022950A (ja) * 1999-05-20 2001-01-26 Mitsubishi Electric Inf Technol Center America Inc ボリュームレンダリンググラフィックボード
US6407737B1 (en) * 1999-05-20 2002-06-18 Terarecon, Inc. Rendering a shear-warped partitioned volume data set
EP1054383A3 (de) * 1999-05-20 2003-05-02 TeraRecon, Inc., A Delaware Corporation Speicher für Voxeldaten mit einer Schnittstelle zu einem Pipeline-Darstellungssystem
EP1054384A3 (de) * 1999-05-20 2003-09-24 TeraRecon, Inc., A Delaware Corporation Verfahren und Einrichtung zur Übersetzung von und Zusammenwirkung mit Voxelspeicheradressen
US6304266B1 (en) * 1999-06-14 2001-10-16 Schlumberger Technology Corporation Method and apparatus for volume rendering
US6421057B1 (en) * 1999-07-15 2002-07-16 Terarecon, Inc. Configurable volume rendering pipeline
US6424346B1 (en) * 1999-07-15 2002-07-23 Tera Recon, Inc. Method and apparatus for mapping samples in a rendering pipeline
US6542154B1 (en) * 1999-08-07 2003-04-01 Hewlett-Packard Company Architectural extensions to 3D texturing units for accelerated volume rendering
US6556200B1 (en) * 1999-09-01 2003-04-29 Mitsubishi Electric Research Laboratories, Inc. Temporal and spatial coherent ray tracing for rendering scenes with sampled and geometry data
US6373487B1 (en) * 1999-09-17 2002-04-16 Hewlett-Packard Company Methods and apparatus for constructing a 3D model of a scene from calibrated images of the scene
US6621918B1 (en) 1999-11-05 2003-09-16 H Innovation, Inc. Teleradiology systems for rendering and visualizing remotely-located volume data sets
JP3254451B2 (ja) * 2000-03-06 2002-02-04 経済産業省産業技術総合研究所長 多チャンネルmri画像処理によるカラー化方法及び装置
AU2001247704A1 (en) * 2000-03-21 2001-10-15 Bechtel Bwxt Idaho, Llc Methods and computer readable medium for improved radiotherapy dosimetry planning
US20020039100A1 (en) 2000-06-08 2002-04-04 Stephen Morphet Memory management for systems for generating 3-dimensional computer images
JP2002024306A (ja) * 2000-07-05 2002-01-25 Suzuki Motor Corp 解析モデルデータ作成方法及び装置並びに解析モデルデータ作成用プログラムを記録した記録媒体。
CA2315302A1 (en) 2000-07-13 2002-01-13 Paul A. Halmshaw Three dimensional imaging system
US7405734B2 (en) * 2000-07-18 2008-07-29 Silicon Graphics, Inc. Method and system for presenting three-dimensional computer graphics images using multiple graphics processing units
JP2004523931A (ja) * 2000-09-02 2004-08-05 エマジェオン、インコーポレイテッド データ要素の発信元と受信側を通じてdicom画像をストリーミングする方法と装置
JP2002123530A (ja) * 2000-10-12 2002-04-26 Hitachi Ltd 多次元データの可視化方法及び装置
US6940507B2 (en) * 2000-12-18 2005-09-06 Dmitriy G. Repin Method and apparatus for visualization of 3D voxel data using lit opacity volumes with shading
US6664961B2 (en) 2000-12-20 2003-12-16 Rutgers, The State University Of Nj Resample and composite engine for real-time volume rendering
KR100392516B1 (ko) * 2001-01-02 2003-07-22 주식회사 인피니트테크놀로지 보간되지 않은 볼륨 데이터의 실시간 렌더링 방법
US6903737B2 (en) * 2001-01-23 2005-06-07 Hewlett-Packard Development Company, L.P. Method and apparatus for implementing spread memory layout
JP4688316B2 (ja) * 2001-02-28 2011-05-25 独立行政法人産業技術総合研究所 シミュレーション装置とシミュレーション方法、及び映像生成装置と映像生成方法
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US7170521B2 (en) 2001-04-03 2007-01-30 Ultravisual Medical Systems Corporation Method of and system for storing, communicating, and displaying image data
US20050114831A1 (en) * 2001-04-18 2005-05-26 Andres Callegari Volume body renderer
CA2443110C (en) * 2001-04-18 2014-02-11 Landmark Graphics Corporation, A Halliburton Company Volume body renderer
US7085406B2 (en) 2001-07-27 2006-08-01 General Electric Company Method and system for unsupervised transfer function generation for images of rendered volumes
US7039723B2 (en) 2001-08-31 2006-05-02 Hinnovation, Inc. On-line image processing and communication system
US20030086595A1 (en) * 2001-11-07 2003-05-08 Hui Hu Display parameter-dependent pre-transmission processing of image data
US7819806B2 (en) 2002-06-07 2010-10-26 Verathon Inc. System and method to identify and measure organ wall boundaries
GB2391625A (en) 2002-08-09 2004-02-11 Diagnostic Ultrasound Europ B Instantaneous ultrasonic echo measurement of bladder urine volume with a limited number of ultrasound beams
US8221321B2 (en) 2002-06-07 2012-07-17 Verathon Inc. Systems and methods for quantification and classification of fluids in human cavities in ultrasound images
US7520857B2 (en) * 2002-06-07 2009-04-21 Verathon Inc. 3D ultrasound-based instrument for non-invasive measurement of amniotic fluid volume
US8221322B2 (en) 2002-06-07 2012-07-17 Verathon Inc. Systems and methods to improve clarity in ultrasound images
US6825838B2 (en) * 2002-10-11 2004-11-30 Sonocine, Inc. 3D modeling system
JP3855053B2 (ja) * 2003-01-30 2006-12-06 国立大学法人 東京大学 画像処理装置、画像処理方法、及び画像処理プログラム
US6882148B2 (en) * 2003-07-09 2005-04-19 Catholic Healthcare West Split-blade data collection for propeller MRI
US8274517B2 (en) * 2003-11-14 2012-09-25 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
US20050110793A1 (en) * 2003-11-21 2005-05-26 Steen Erik N. Methods and systems for graphics processing in a medical imaging system
US20050143654A1 (en) * 2003-11-29 2005-06-30 Karel Zuiderveld Systems and methods for segmented volume rendering using a programmable graphics pipeline
US7250949B2 (en) * 2003-12-23 2007-07-31 General Electric Company Method and system for visualizing three-dimensional data
US7426318B2 (en) * 2004-06-30 2008-09-16 Accuray, Inc. Motion field generation for non-rigid image registration
US7327865B2 (en) * 2004-06-30 2008-02-05 Accuray, Inc. Fiducial-less tracking with non-rigid image registration
US7231076B2 (en) * 2004-06-30 2007-06-12 Accuray, Inc. ROI selection in image registration
US7366278B2 (en) * 2004-06-30 2008-04-29 Accuray, Inc. DRR generation using a non-linear attenuation model
US7522779B2 (en) * 2004-06-30 2009-04-21 Accuray, Inc. Image enhancement method and system for fiducial-less tracking of treatment targets
US8189002B1 (en) * 2004-10-29 2012-05-29 PME IP Australia Pty, Ltd. Method and apparatus for visualizing three-dimensional and higher-dimensional image data sets
US7970625B2 (en) 2004-11-04 2011-06-28 Dr Systems, Inc. Systems and methods for retrieval of medical data
US7920152B2 (en) 2004-11-04 2011-04-05 Dr Systems, Inc. Systems and methods for viewing medical 3D imaging volumes
US7885440B2 (en) 2004-11-04 2011-02-08 Dr Systems, Inc. Systems and methods for interleaving series of medical images
US7660488B2 (en) 2004-11-04 2010-02-09 Dr Systems, Inc. Systems and methods for viewing medical images
US7787672B2 (en) 2004-11-04 2010-08-31 Dr Systems, Inc. Systems and methods for matching, naming, and displaying medical images
JP2006185276A (ja) * 2004-12-28 2006-07-13 Fujitsu Ltd 解析データ作成装置,解析データ作成プログラム,同プログラムを記録したコンピュータ読取可能な記録媒体,解析データ作成方法及び解析装置
US20060177122A1 (en) * 2005-02-07 2006-08-10 Sony Computer Entertainment Inc. Method and apparatus for particle manipulation using graphics processing
US7739311B2 (en) * 2005-04-07 2010-06-15 Tibco Software Inc. Method and system for handling large data sets in a statistical language
US7755625B2 (en) * 2005-05-04 2010-07-13 Medison Co., Ltd. Apparatus and method for rendering volume data
US7532214B2 (en) * 2005-05-25 2009-05-12 Spectra Ab Automated medical image visualization using volume rendering with local histograms
US7692650B2 (en) * 2005-06-01 2010-04-06 Analogic Corporation Method of and system for 3D display of multi-energy computed tomography images
US7330578B2 (en) * 2005-06-23 2008-02-12 Accuray Inc. DRR generation and enhancement using a dedicated graphics device
DE102005040852A1 (de) * 2005-08-29 2007-03-01 Océ Document Technologies GmbH Scanner zum optischen und elektrischen Abtasten von Transponder-enthaltenden Dokumenten
DE102005044653A1 (de) * 2005-09-19 2007-03-29 Siemens Ag Verfahren und Vorrichtung zur Rekonstruktion eines dreidimensionalen Bildvolumens aus zweidimensionalen Projektionsbildern
US20070070063A1 (en) * 2005-09-29 2007-03-29 Siemens Medical Solutions Usa, Inc. Non-photorealistic volume rendering of ultrasonic data
US8400494B2 (en) * 2005-10-11 2013-03-19 Primesense Ltd. Method and system for object reconstruction
WO2007105205A2 (en) * 2006-03-14 2007-09-20 Prime Sense Ltd. Three-dimensional sensing using speckle patterns
US9330324B2 (en) 2005-10-11 2016-05-03 Apple Inc. Error compensation in three-dimensional mapping
US20110096182A1 (en) * 2009-10-25 2011-04-28 Prime Sense Ltd Error Compensation in Three-Dimensional Mapping
WO2007096893A2 (en) * 2006-02-27 2007-08-30 Prime Sense Ltd. Range mapping using speckle decorrelation
WO2007105215A2 (en) * 2006-03-14 2007-09-20 Prime Sense Ltd. Depth-varying light fields for three dimensional sensing
KR101408959B1 (ko) * 2006-03-14 2014-07-02 프라임센스 엘티디. 삼차원 감지를 위한 깊이 가변 광 필드
US20070255138A1 (en) * 2006-04-27 2007-11-01 General Electric Company Method and apparatus for 3D visualization of flow jets
US8041129B2 (en) 2006-05-16 2011-10-18 Sectra Ab Image data set compression based on viewing parameters for storing medical image data from multidimensional data sets, related systems, methods and computer products
JP5254958B2 (ja) 2006-05-17 2013-08-07 アメリカン・ダイ・ソース・インコーポレーテッド 平版印刷版コーティング用新規材料、それを含有する平版印刷版およびコーティング、調製方法ならびに使用
US20080037843A1 (en) * 2006-08-11 2008-02-14 Accuray Incorporated Image segmentation for DRR generation and image registration
KR100803220B1 (ko) 2006-11-20 2008-02-14 삼성전자주식회사 다중 파이프라인의 3차원 그래픽스 렌더링 방법 및 장치
US7953614B1 (en) 2006-11-22 2011-05-31 Dr Systems, Inc. Smart placement rules
US7830381B2 (en) * 2006-12-21 2010-11-09 Sectra Ab Systems for visualizing images using explicit quality prioritization of a feature(s) in multidimensional image data sets, related methods and computer products
AU2008205064B8 (en) * 2007-01-05 2014-01-09 Landmark Graphics Corporation Systems and methods for selectively imaging objects in a display of multiple three-dimensional data-objects
WO2008087652A2 (en) * 2007-01-21 2008-07-24 Prime Sense Ltd. Depth mapping using multi-beam illumination
JP4927580B2 (ja) * 2007-01-31 2012-05-09 株式会社日立メディコ 画像処理装置及びその方法
US20080232694A1 (en) * 2007-03-21 2008-09-25 Peter Sulatycke Fast imaging data classification method and apparatus
DE102007014647B4 (de) * 2007-03-27 2009-07-09 Siemens Ag Verfahren und Vorrichtung zur Farbwertanpassung für eine rauscharme Visualisierung volumetrischer Objekte
US8150142B2 (en) 2007-04-02 2012-04-03 Prime Sense Ltd. Depth mapping using projected patterns
US8493496B2 (en) * 2007-04-02 2013-07-23 Primesense Ltd. Depth mapping using projected patterns
US8167803B2 (en) 2007-05-16 2012-05-01 Verathon Inc. System and method for bladder detection using harmonic imaging
US8133181B2 (en) 2007-05-16 2012-03-13 Verathon Inc. Device, system and method to measure abdominal aortic aneurysm diameter
WO2008155770A2 (en) * 2007-06-19 2008-12-24 Prime Sense Ltd. Distance-varying illumination and imaging techniques for depth mapping
US8392529B2 (en) 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
JP5383014B2 (ja) * 2007-08-30 2014-01-08 キヤノン株式会社 放射線画像処理装置及び方法
US10311541B2 (en) 2007-11-23 2019-06-04 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
WO2011065929A1 (en) 2007-11-23 2011-06-03 Mercury Computer Systems, Inc. Multi-user multi-gpu render server apparatus and methods
WO2009067680A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Automatic image segmentation methods and apparartus
WO2009067675A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Client-server visualization system with hybrid data processing
US9904969B1 (en) 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
CA2703072C (en) 2007-12-13 2016-01-26 Exxonmobil Upstream Research Company Iterative reservoir surveillance
US8933876B2 (en) 2010-12-13 2015-01-13 Apple Inc. Three dimensional user interface session control
US9035876B2 (en) 2008-01-14 2015-05-19 Apple Inc. Three-dimensional user interface session control
US8166421B2 (en) * 2008-01-14 2012-04-24 Primesense Ltd. Three-dimensional user interface
JP4577386B2 (ja) * 2008-03-19 2010-11-10 株式会社デンソー 回転電機の回転子とその製造方法
AU2009238481B2 (en) * 2008-04-22 2014-01-30 Exxonmobil Upstream Research Company Functional-based knowledge analysis in a 2D and 3D visual environment
MX2010012490A (es) * 2008-06-06 2010-12-02 Landmark Graphics Corp Sistemas y metodos para formar la imagen de un volumen tridimensional de datos de rejilla geometricamente irregulares que representan un volumen de rejilla.
US8456517B2 (en) * 2008-07-09 2013-06-04 Primesense Ltd. Integrated processor for 3D mapping
JP5419404B2 (ja) * 2008-09-04 2014-02-19 キヤノン株式会社 光音響装置
US8380533B2 (en) 2008-11-19 2013-02-19 DR Systems Inc. System and method of providing dynamic and customizable medical examination forms
US8462207B2 (en) * 2009-02-12 2013-06-11 Primesense Ltd. Depth ranging with Moiré patterns
US8786682B2 (en) * 2009-03-05 2014-07-22 Primesense Ltd. Reference image techniques for three-dimensional sensing
WO2010103482A2 (en) * 2009-03-13 2010-09-16 Primesense Ltd. Enhanced 3d interfacing for remote devices
US8717417B2 (en) * 2009-04-16 2014-05-06 Primesense Ltd. Three-dimensional mapping and imaging
WO2011013079A1 (en) * 2009-07-30 2011-02-03 Primesense Ltd. Depth mapping based on pattern matching and stereoscopic information
US8712120B1 (en) 2009-09-28 2014-04-29 Dr Systems, Inc. Rules-based approach to transferring and/or viewing medical images
US8830227B2 (en) * 2009-12-06 2014-09-09 Primesense Ltd. Depth-based gain control
US20110164032A1 (en) * 2010-01-07 2011-07-07 Prime Sense Ltd. Three-Dimensional User Interface
US8564617B2 (en) * 2010-01-12 2013-10-22 International Business Machines Corporation Accelerated volume rendering
US20110187878A1 (en) * 2010-02-02 2011-08-04 Primesense Ltd. Synchronization of projected illumination with rolling shutter of image sensor
AU2010345083B2 (en) 2010-02-03 2016-03-10 Exxonmobil Upstream Research Company Method for using dynamic target region for well path/drill center optimization
US8982182B2 (en) * 2010-03-01 2015-03-17 Apple Inc. Non-uniform spatial resource allocation for depth mapping
US8787663B2 (en) * 2010-03-01 2014-07-22 Primesense Ltd. Tracking body parts by combined color image and depth processing
JP5791131B2 (ja) 2010-07-20 2015-10-07 アップル インコーポレイテッド 自然な相互作用のための相互作用的現実拡張
US9201501B2 (en) 2010-07-20 2015-12-01 Apple Inc. Adaptive projector
WO2012020380A1 (en) 2010-08-11 2012-02-16 Primesense Ltd. Scanning projectors and image capture modules for 3d mapping
EP2609540B1 (de) 2010-08-24 2020-07-22 Exxonmobil Upstream Research Company System und verfahren zur planung eines bohrlochpfades
US8959013B2 (en) 2010-09-27 2015-02-17 Apple Inc. Virtual keyboard for a non-tactile three dimensional user interface
EP2643659B1 (de) 2010-11-19 2019-12-25 Apple Inc. Tiefenkartierung mit zeitkodierter beleuchtung
US9131136B2 (en) 2010-12-06 2015-09-08 Apple Inc. Lens arrays for pattern projection and imaging
US8872762B2 (en) 2010-12-08 2014-10-28 Primesense Ltd. Three dimensional user interface cursor control
CA2823017A1 (en) 2011-01-26 2012-08-02 Exxonmobil Upstream Research Company Method of reservoir compartment analysis using topological structure in 3d earth model
CN106125921B (zh) 2011-02-09 2019-01-15 苹果公司 3d映射环境中的凝视检测
AU2011360212B2 (en) 2011-02-21 2017-02-02 Exxonmobil Upstream Research Company Reservoir connectivity analysis in a 3D earth model
US9030528B2 (en) 2011-04-04 2015-05-12 Apple Inc. Multi-zone imaging sensor and lens array
US9223594B2 (en) 2011-07-01 2015-12-29 Exxonmobil Upstream Research Company Plug-in installer framework
US8881051B2 (en) 2011-07-05 2014-11-04 Primesense Ltd Zoom-based gesture user interface
US9459758B2 (en) 2011-07-05 2016-10-04 Apple Inc. Gesture-based interface with enhanced features
US9377865B2 (en) 2011-07-05 2016-06-28 Apple Inc. Zoom-based gesture user interface
US9075899B1 (en) 2011-08-11 2015-07-07 D.R. Systems, Inc. Automated display settings for categories of items
US9030498B2 (en) 2011-08-15 2015-05-12 Apple Inc. Combining explicit select gestures and timeclick in a non-tactile three dimensional user interface
US9218063B2 (en) 2011-08-24 2015-12-22 Apple Inc. Sessionless pointing user interface
US9122311B2 (en) 2011-08-24 2015-09-01 Apple Inc. Visual feedback for tactile and non-tactile user interfaces
US9157790B2 (en) 2012-02-15 2015-10-13 Apple Inc. Integrated optoelectronic modules with transmitter, receiver and beam-combining optics for aligning a beam axis with a collection axis
US9229534B2 (en) 2012-02-28 2016-01-05 Apple Inc. Asymmetric mapping for tactile and non-tactile user interfaces
US11169611B2 (en) 2012-03-26 2021-11-09 Apple Inc. Enhanced virtual touchpad
WO2013169429A1 (en) 2012-05-08 2013-11-14 Exxonmobile Upstream Research Company Canvas control for 3d data volume processing
JP5954846B2 (ja) * 2012-08-24 2016-07-20 富士通株式会社 形状データ生成プログラム、形状データ生成方法及び形状データ生成装置
CN104602610B (zh) * 2012-08-30 2018-12-11 东芝医疗系统株式会社 超声波诊断装置、图像处理装置以及图像处理方法
CN103903220A (zh) * 2012-12-27 2014-07-02 中国辐射防护研究院 人体体素模型的混合邻域调整方法
US9495604B1 (en) 2013-01-09 2016-11-15 D.R. Systems, Inc. Intelligent management of computerized advanced processing
US11244495B2 (en) 2013-03-15 2022-02-08 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US9509802B1 (en) 2013-03-15 2016-11-29 PME IP Pty Ltd Method and system FPOR transferring data to improve responsiveness when sending large data sets
US8976190B1 (en) 2013-03-15 2015-03-10 Pme Ip Australia Pty Ltd Method and system for rule based display of sets of images
US10540803B2 (en) 2013-03-15 2020-01-21 PME IP Pty Ltd Method and system for rule-based display of sets of images
US11183292B2 (en) 2013-03-15 2021-11-23 PME IP Pty Ltd Method and system for rule-based anonymized display and data export
US10070839B2 (en) 2013-03-15 2018-09-11 PME IP Pty Ltd Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images
AU2014278645B2 (en) 2013-06-10 2016-07-28 Exxonmobil Upstream Research Company Interactively planning a well site
US9709512B2 (en) * 2013-08-29 2017-07-18 University Of Utah Research Foundation Multilevel computed tomography for radially-shifted focal spots
US9864098B2 (en) 2013-09-30 2018-01-09 Exxonmobil Upstream Research Company Method and system of interactive drill center and well planning evaluation and optimization
KR20160071774A (ko) * 2014-12-12 2016-06-22 삼성전자주식회사 영상 처리를 위한 영상 처리 장치, 방법 및 기록 매체
US10929508B2 (en) 2015-04-30 2021-02-23 Merge Healthcare Solutions Inc. Database systems and interactive user interfaces for dynamic interaction with, and indications of, digital medical image data
US10366534B2 (en) 2015-06-10 2019-07-30 Microsoft Technology Licensing, Llc Selective surface mesh regeneration for 3-dimensional renderings
US11599672B2 (en) 2015-07-31 2023-03-07 PME IP Pty Ltd Method and apparatus for anonymized display and data export
US9984478B2 (en) 2015-07-28 2018-05-29 PME IP Pty Ltd Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images
US20170323239A1 (en) 2016-05-06 2017-11-09 General Electric Company Constrained time computing control system to simulate and optimize aircraft operations with dynamic thermodynamic state and asset utilization attainment
WO2018064248A1 (en) * 2016-09-30 2018-04-05 University Hospitals Cleveland Medical Center Apparatus and method for constructing a virtual 3d model from a 2d ultrasound video
US10909679B2 (en) 2017-09-24 2021-02-02 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US11403803B2 (en) 2020-06-26 2022-08-02 Imagination Technologies Limited Hierarchical acceleration structures for use in ray tracing systems
US11335055B2 (en) 2020-06-26 2022-05-17 Imagination Technologies Limited Intersection testing in ray tracing systems with skipping of nodes in sub-trees of hierarchical acceleration structures
US11380042B2 (en) 2020-06-26 2022-07-05 Imagination Technologies Limited Intersection testing in ray tracing systems using hierarchical acceleration structures with implicitly represented nodes

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1258923A (en) * 1986-04-14 1989-08-29 Robert A. Drebin Methods and apparatus for imaging volume data
US5187660A (en) * 1989-12-01 1993-02-16 At&T Bell Laboratories Arrangement for displaying on a display volumetric data
US5201035A (en) * 1990-07-09 1993-04-06 The United States Of America As Represented By The Secretary Of The Air Force Dynamic algorithm selection for volume rendering, isocontour and body extraction within a multiple-instruction, multiple-data multiprocessor
EP0739513B1 (de) * 1991-08-13 1999-10-27 The Board Of Regents Of The University Of Washington Verfahren zur übertragung von daten
US5734384A (en) * 1991-11-29 1998-03-31 Picker International, Inc. Cross-referenced sectioning and reprojection of diagnostic image volumes
US5644689A (en) * 1992-01-13 1997-07-01 Hitachi, Ltd. Arbitrary viewpoint three-dimensional imaging method using compressed voxel data constructed by a directed search of voxel data representing an image of an object and an arbitrary viewpoint
IL102289A (en) * 1992-06-24 1997-08-14 R Technologies Ltd B V Method and system for processing moving images
US5361385A (en) * 1992-08-26 1994-11-01 Reuven Bakalash Parallel computing system for volumetric modeling, data processing and visualization
CN1164904A (zh) * 1994-09-06 1997-11-12 纽约州州立大学研究基金会 实时立体显象设备与方法
US5594842A (en) * 1994-09-06 1997-01-14 The Research Foundation Of State University Of New York Apparatus and method for real-time volume visualization
US5724493A (en) * 1994-12-13 1998-03-03 Nippon Telegraph & Telephone Corporation Method and apparatus for extracting 3D information of feature points
JP3203160B2 (ja) * 1995-08-09 2001-08-27 三菱電機株式会社 ボリューム・レンダリング装置及び方法
US5781194A (en) * 1996-08-29 1998-07-14 Animatek International, Inc. Real-time projection of voxel-based object
US6057847A (en) * 1996-12-20 2000-05-02 Jenkins; Barry System and method of image generation and encoding using primitive reprojection
US6014143A (en) * 1997-05-30 2000-01-11 Hewlett-Packard Company Ray transform method for a fast perspective view volume rendering

Also Published As

Publication number Publication date
US6262740B1 (en) 2001-07-17
JP4158167B2 (ja) 2008-10-01
EP1081652A3 (de) 2002-06-19
JP4158006B2 (ja) 2008-10-01
EP0903694A1 (de) 1999-03-24
JP3129701B2 (ja) 2001-01-31
DE69821848D1 (de) 2004-04-01
EP1081651A2 (de) 2001-03-07
EP0903694B1 (de) 2004-02-25
ATE260497T1 (de) 2004-03-15
EP1081653A2 (de) 2001-03-07
US6008813A (en) 1999-12-28
JP2001034782A (ja) 2001-02-09
EP1081653A3 (de) 2002-06-26
US6243098B1 (en) 2001-06-05
JPH11144078A (ja) 1999-05-28
EP1081651A3 (de) 2002-06-19
JP2001034781A (ja) 2001-02-09
US6219061B1 (en) 2001-04-17
JP2001034780A (ja) 2001-02-09
EP1081652A2 (de) 2001-03-07
JP4158007B2 (ja) 2008-10-01

Similar Documents

Publication Publication Date Title
DE69821848T2 (de) Echt-Zeit PC basiertes Volumendarstellungssystem
DE69233717T2 (de) Verbesserungen in sichtbarkeit-berechnungen fuer 3d-rechner
EP1227444B1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE69919497T2 (de) Verfahren und Gerät zur Volumendarstellung mit mehreren Tiefenpuffern
DE60133166T2 (de) Verfahren und Vorrichtung zur Volumendarstellung
DE60310226T2 (de) Verfahren zur linearen raumabtastung und vorrichtung zur erzeugung eines numerischen 3d modells
DE102005035012B4 (de) Hochleistungsschattierung von großen volumetrischen Daten unter Verwendung von partiellen Schirmraumableitungen
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
DE69737780T2 (de) Verfahren und Vorrichtung zur Bildverarbeitung
DE69924700T2 (de) Verfahren zur Darstellung von durch Oberflächenelemente repräsentierten grafischen Objekten
DE102019102821A1 (de) Verfahren zur behandlung von ungeordneten opak- und alphastrahl/primitiv-schnittpunkten
DE60107130T2 (de) Sichtbarkeitsprojektion und Bildrekonstruktion für Oberflächenelemente
DE69908966T2 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
DE102019103058A1 (de) Verfahren für fortgesetzte begrenzungsvolumenhierarchietraversierung auf schnittpunkte ohne shader-intervention
DE69924699T2 (de) Verfahren zur Schaffung von als Oberflächenelemente dargestellten grafischen Objekten
DE102005023964A1 (de) Volumenvisualisierung mittels Texturverschiebung
WO2005078665A1 (de) Vorrichtung zur photorealistischen darstellung von dynamischen komplexen dreidimensionalen szenen mittels des ray-tracing verfahrens
DE69924230T2 (de) Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten
DE102008050449A1 (de) Clipping Geometrien beim Raycasting
DE60100806T2 (de) Abbildung von volumendaten
DE102008050049B4 (de) Verfahren zur Bestimmung einer die Objektgrenze eines Objekts in einem digitalen 3D-Datensatz annähernden 3D-Oberfläche
DE102007050615B4 (de) Brick-basierter Fusionsrenderer
Wu et al. Shear-image order ray casting volume rendering
DE102020108526A1 (de) Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern

Legal Events

Date Code Title Description
8364 No opposition during term of opposition