DE19806986A1 - Fixed point method for fast and precise three-dimensional spatial transformations - Google Patents

Fixed point method for fast and precise three-dimensional spatial transformations

Info

Publication number
DE19806986A1
DE19806986A1 DE1998106986 DE19806986A DE19806986A1 DE 19806986 A1 DE19806986 A1 DE 19806986A1 DE 1998106986 DE1998106986 DE 1998106986 DE 19806986 A DE19806986 A DE 19806986A DE 19806986 A1 DE19806986 A1 DE 19806986A1
Authority
DE
Germany
Prior art keywords
value
point
coordinate value
inversely transformed
sampling point
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.)
Withdrawn
Application number
DE1998106986
Other languages
German (de)
Inventor
Hasan Shahzad Naqvi
Barthold Lichtenbelt
Russell Huonder
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE19806986A1 publication Critical patent/DE19806986A1/en
Withdrawn 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/10Geometric effects

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Description

Diese Erfindung bezieht sich auf Computersysteme und insbe­ sondere auf die graphische Anzeige diskreter Objekte in Com­ putersystemen. Noch spezieller bezieht sich die Erfindung auf eine Volumenaufbereitung zur graphischen Anzeige und ein Verfahren für schnelle und präzise dreidimensionale räumli­ che Transformationen von Volumendatensätzen.This invention relates to computer systems and in particular especially on the graphic display of discrete objects in Com computer systems. The invention relates even more specifically on a volume preparation for graphic display and a Process for fast and precise three-dimensional spatial che transformations of volume data sets.

Die Volumenaufbereitung ist ein wichtiger Zweig von Compu­ tergraphiken, die nach der Entwicklung der geometrischen Aufbereitung und der Pixelaufbereitung folgt. Volumenaufbe­ reitung bezieht sich auf die direkte Aufbereitung eines Vo­ lumendatensatzes, um die Charakteristik des Inneren eines körperlichen Objekts zu zeigen, wenn dasselbe auf einer zweidimensionalen Graphikvorrichtung angezeigt wird. Ein Vo­ lumendatensatz ist ein dreidimensionales Array von Voxeln. Voxel wurden als Abtastpunkte, die um einen finiten Abstand getrennt sind, definiert. Jedes Voxel weist eine Position und einen Wert auf. Die Voxelposition ist ein Drei-Tuppel, das eine x-, eine y- und eine z-Position in dem dreidimen­ sionalen Voxelarray spezifiziert. Der Voxelwert hängt von seinem Format ab. Beispielsweise kann ein Voxel ein Inten­ sitätselement und ein Indexelement aufweisen. Diese Elemente werden bei dem Volumenaufbereitungsverfahren üblicherweise unterschiedlich behandelt. Die Sammlung von Werten für alle Punkte in dem Volumen wird als ein Skalarfeld auf dem Volu­ men bezeichnet.Volume processing is an important part of Compu graphics after the development of the geometric Processing and pixel processing follows. Volume consumption Riding refers to the direct preparation of a vo lumens record to the characteristics of the inside of a physical object when showing the same thing on a two-dimensional graphics device is displayed. A vo Lumens record is a three-dimensional array of voxels. Voxels were used as sampling points around a finite distance are defined. Each voxel has a position and a value. The voxel position is a three-tuple, the one x, one y and one z position in the three dimes sional voxel array specified. The voxel value depends on its format. For example, a voxel can be an integer sity element and an index element. These elements are common in the volume conditioning process treated differently. The collection of values for everyone Points in the volume is called a scalar field on the volu called men.

Volumendatensätze können durch zahlreiche Einrichtungen er­ zeugt werden, jedoch üblicherweise durch bestimmte Verfahren einer dreidimensionalen Abtastung oder Probennahme und durch eine numerische Modellierung. Beispielsweise kann ein Volu­ mendatensatz durch eine Magnetresonanzbilderzeugung (Magne­ tic Resonance Imaging), oder MRI, erzeugt werden wobei die Dichte des menschlichen oder tierischen Gewebes an jedem Punkt eines dreidimensionalen Gitters berechnet wird. Eine Anzeige dieser Informationen könnte die Grenzen der ver­ schiedenen Gewebetypen, wie sie durch Dichteänderungen ange­ zeigt sind, anzeigen. Die Volumenaufbereitung ist das Ver­ fahren des Anzeigens dieser Daten auf einer zweidimensiona­ len Graphikvorrichtung.Volume records can be obtained through numerous facilities be produced, but usually by certain methods a three-dimensional scanning or sampling and through a numerical modeling. For example, a Volu magnetic data set by magnetic resonance imaging (Magne  tic resonance imaging), or MRI Density of human or animal tissue on each Point of a three-dimensional grid is calculated. A Displaying this information could limit the ver different types of tissue, as indicated by changes in density shows are, show. Volume preparation is the ver driving the display of this data on a two-dimensional len graphics device.

Das allererste Voxel in einem Volumendatensatz mit den Koor­ dinaten (0,0,0) wird als der Ursprung des Volumendatensatzes betrachtet. Die drei Koordinaten entsprechen der Reihe nach der Spalte, der Zeile und dem Schnitt des Bilds in dem Volu­ mendatensatz.The very first voxel in a volume data set with the Koor dinaten (0,0,0) is considered the origin of the volume data set considered. The three coordinates correspond in turn the column, row and section of the image in the volu human data record.

Volumendatensätze können ziemlich groß sein und folglich ei­ ne Belastung für die Systembetriebsmittel darstellen. Bei­ spielsweise kann ein typischer Volumendatensatz von einer MRI-Abtasteinrichtung 6,7 Millionen Voxel oder mehr enthal­ ten, wohingegen Polygondatensätze für eine geometrische Auf­ bereitung typischerweise weniger als eine halbe Million Po­ lygone enthalten. Folglich besteht bei der Aufbereitung von Volumen ein viel größerer Bedarf nach einer Hardwarebe­ schleunigung.Volume records can be quite large, and consequently egg represent a burden on the system resources. At for example, a typical volume data set can be from a MRI scanner includes 6.7 million voxels or more ten, whereas polygon data sets for a geometric expansion preparation typically less than half a million bottom lygone included. As a result, when processing Volume a much greater need for a hardware acceleration.

Bei der Volumenaufbereitung ist es häufig notwendig, in der Lage zu sein, das aufbereitete Bild aus verschiedenen Pro­ jektionen zu betrachten. Folglich ist ein Schlüsselschritt bei dem Volumenaufbereitungsverfahren die dreidimensionale räumliche Volumentransformation des ursprünglichen Volumen­ datensatzes. Typische erforderliche Transformationstypen können ein Zoomen, ein Schwenken, ein Drehen oder einen ge­ raden Schnitt des Eingangsvolumens zur Projektion in eine Ausgangsrastertyp-Anzeigevorrichtung umfassen. Sobald eine Transformation durchgeführt wurde, müssen verschiedene Um­ tastungstechniken verwendet werden, beispielsweise eine In­ terpolation des nächstliegenden Nachbarn oder eine trilinea­ re Interpolation, um Pixelwerte zur Aufbereitung zu bestim­ men.When processing volumes, it is often necessary in the Able to be the edited image from different pro to consider injections. Hence a key step in the volume preparation process the three-dimensional spatial volume transformation of the original volume record. Typical transformation types required can zoom, pan, rotate or ge straight section of the input volume for projection into one Output grid type display device. As soon as one Transformation has been carried out different order keying techniques are used, for example an In terpolation of the nearest neighbor or a trilinea re interpolation to determine pixel values for processing  men.

Zwei Abbildungslösungsansätze wurden für derartige Transfor­ mationen verwendet. Ein Vorwärtsabbildungslösungsansatz ver­ wendet den Quellenraum und transformiert denselben über eine Transformationsmatrix, um in den Bestimmungs- oder Betrach­ tungs-Raum zu passen. Bei einer Rückwärtsabbildung, oder ei­ nem inversen Transformationslösungsansatz, wird jeder Be­ stimmungspunkt über eine inverse Transformationsmatrix transformiert und aus dem Quellenraum umgetastet. Bei der Vorwärtsabbildung besteht das Risiko, das bei der Aufberei­ tung "Löcher" belassen werden, da der Quellenraum manchmal kleiner ist als der Bestimmungs- oder Betrachtungs-Raum. Die inverse Transformation stützt sich selbst auf die Technik des "Strahlwerfens", oder der Schrittgebung in die z-Rich­ tung, was das "Löcher"-Problem beseitigt, da Abtastpunkte von dem größeren Bestimmungsraum zurück zu dem kleineren Quellenraum verwendet werden.Two mapping approaches have been developed for such transfor mations used. A forward mapping solution approach ver turns the source space and transforms it over one Transformation matrix to get into the determination or contemplation room to fit. With a reverse image, or egg nin inverse transformation approach, every Be mood point about an inverse transformation matrix transformed and keyed from the source space. In the Forward mapping is the risk involved in editing "Holes" are left because the source space sometimes is smaller than the determination or viewing space. The inverse transformation is based on technology of "jet throwing", or stepping into the z-Rich tion, which eliminates the "hole" problem because of sampling points from the larger destination space back to the smaller one Source space can be used.

Eine typische inverse Transformation beginnt mit einem Be­ stimmungsraumvoxel, das (x,y,z)-Koordinaten aufweist. Das Voxel wird aus dem Bestimmungsraum, oder Betrachtungsraum, invers in den Quellenraum transformiert, was einen Abtast­ punkt mit (x',y',z')-Koordinaten in dem Quellenraum zur Fol­ ge hat. Dies wird erreicht, indem das Bestimmungsraumvoxel mit einer dreidimensionalen inversen Transformationsmatrix multipliziert wird. Die inverse Transformationsmatrix ist eine 4×3-Matrix mit Gleitkommawerten, die die gewünschte dreidimensionale räumliche Transformation beschreiben, wel­ che ein Zoomen, ein Schwenken, ein Drehen und/oder einen Schnitt einschließt. Punkte werden in homogene Koordinaten umgewandelt, um eine Matrixmultiplikation zu ermöglichen. Die Matrix wird folglich eine 4×4-Matrix, wie nachfolgend gezeigt ist:
A typical inverse transformation begins with a determination space voxel that has (x, y, z) coordinates. The voxel is inversely transformed from the determination space, or viewing space, into the source space, which results in a sampling point with (x ', y', z ') coordinates in the source space. This is achieved by multiplying the determination space voxel by a three-dimensional inverse transformation matrix. The inverse transformation matrix is a 4 × 3 matrix with floating point values that describe the desired three-dimensional spatial transformation, which includes zooming, panning, rotating and / or cutting. Points are converted to homogeneous coordinates to allow matrix multiplication. The matrix thus becomes a 4 × 4 matrix, as shown below:

Durch das Durchführen der Matrixmultiplikation werden die Werte für x', y' und z' hergeleitet, wie nachfolgend gezeigt ist:
By performing the matrix multiplication, the values for x ', y' and z 'are derived, as shown below:

x' = (a.x) + (e.y) + (i.z) + m
y' = (b.x) + (f.y) + (j.z) + n
z' = (c.x) + (g.y) + (k.z) + o.
x '= (ax) + (ey) + (iz) + m
y '= (bx) + (fy) + (jz) + n
z '= (cx) + (gy) + (kz) + o.

Als nächstes werden die acht Voxel, die einen Würfel defi­ nieren, der den transformierten (x',y',z')-Abtastpunkt in dem Quellenraum enthalten, bestimmt. Diese acht Punkte bil­ den die Nachbarschaft für den transformierten (x',y',z')-Ab­ tastpunkt. Quellenraum-Voxelorte werden typischerweise als vorzeichenlose ganze Zahl abgebildet.Next are the eight voxels that defi a cube kidney, which is the transformed (x ', y', z ') sampling point in contain the source space. These eight points bil the neighborhood for the transformed (x ', y', z ') - Ab touch point. Source space voxel locations are typically called Unsigned integer shown.

Wenn eine Umtastungstechnik des nächstliegenden Nachbarn zum Bestimmen der Pixelwerte für den inversen transformier­ ten realen (x',y',z')-Abtastpunkt verwendet wird, wird der Wert des nächstliegenden Voxels in der Nachbarschaft in dem Quellenraum zu dem Abtastpunkt verwendet, um das Pixel auf­ zubereiten.If a keying technique of the closest neighbor to determine the pixel values for the inverse transform th real (x ', y', z ') sampling point is used, the Value of the closest voxel in the neighborhood in the Source space used at the sampling point to set the pixel up prepare.

Eine Möglichkeit, um das nächstliegende Nachbarvoxel in dem Quellenraum zu bestimmen, besteht darin, den (x',y',z')-Ab­ tastwert auf ganzzahlige Werte zu runden. Wenn beispiels­ weise (8,2; 6,5; 9,6) Werte für (x',y',z') sind, werden die Werte nach dem Runden zu (8, 7, 10). Jedoch besteht eine ef­ fizientere Möglichkeit, um das nächstliegende Nachbarvoxel zu bestimmen, darin, 0,5 zu jeder x'-, y'- und z'-Komponente zu addieren und dann die resultierenden x'-, y'- und z'-Wer­ te abzuschneiden. Bei dem obigen Beispiel würde zu den ur­ sprünglichen Werten von (x',y',z') 0,5 addiert werden, was (8,7; 7,0; 10,1) ergibt. Das Abschneiden von jedem dieser Werte ergibt (8, 7, 10), wie vorher. Der Vorteil dieses Ver­ fahrens besteht darin, daß, statt jeden Abtastpunkt entlang eines Strahls in einer Rundungsoperation auszuwerten und vergleichen zu müssen, der erste räumliche Ort in einem Strahl um 0,5 versetzt wird. Alle anderen Punkte entlang des Strahls liegen relativ zu diesem ersten Punkt, da eine li­ neare Beziehung existiert. Dies ist eine effizientere Art und Weise, um die Bestimmung des nächstliegenden Nachbarn zu handhaben. Sobald die Addition von 0,5 durchgeführt wurde, wird der nächstliegende Nachbar bestimmt, indem einfach je­ weils die x'-, y'- und z'-Werte jedes aufeinanderfolgenden Abtastpunkts abgeschnitten werden. Die Werte für x', y' und z' werden durch dieses Verfahren wie nachfolgend gezeigt ist, hergeleitet:
One way to determine the closest neighboring voxel in the source space is to round the (x ', y', z ') sample to integer values. For example, if (8.2, 6.5, 9.6) are values for (x ', y', z '), the values after rounding become (8, 7, 10). However, a more efficient way to determine the closest neighboring voxel is to add 0.5 to each x'-, y'- and z'- component and then the resulting x'-, y'- and z'- Cut off values. In the example above, 0.5 would be added to the original values of (x ', y', z '), resulting in (8.7; 7.0; 10.1). Cutting off each of these values gives (8, 7, 10) as before. The advantage of this method is that instead of having to evaluate and compare each scanning point along a beam in a rounding operation, the first spatial location in a beam is offset by 0.5. All other points along the beam are relative to this first point because there is a linear relationship. This is a more efficient way to handle the nearest neighbor determination. Once the addition of 0.5 has been made, the closest neighbor is determined by simply cutting off the x ', y' and z 'values of each successive sample point. The values for x ', y' and z 'are derived by this method as shown below:

x' = (a.x) + (e.y) + (i.z) + m [+ 0,5]
y' = (b.x) + (f.y) + (j.z) + n [+ 0,5]
z' = (c.x) + (g.y) + (k.z) + o [+ 0,5].
x '= (ax) + (ey) + (iz) + m [+ 0.5]
y '= (bx) + (fy) + (jz) + n [+ 0.5]
z '= (cx) + (gy) + (kz) + o [+ 0.5].

Das nächstliegende Nachbarquellenraumvoxel wird bestimmt, indem die skalaren Komponenten des inversen transformierten (x',y',z')-Abtastpunkts verwendet werden. Die skalaren Kom­ ponenten werden erhalten, indem jeder der (x',y',z')-Werte abgeschnitten wird, was in einem 16,16-Format durch das Ver­ schieben der codierten Werte um 16 Bits nach rechts erreicht wird. Nach dem Fortschreiten in der z-Richtung zu dem näch­ sten Abtastpunkt wird dieses Verfahren wiederholt.The closest neighboring source space voxel is determined by transforming the scalar components of the inverse (x ', y', z ') - sampling point can be used. The scalar com Components are obtained by taking each of the (x ', y', z ') values is cut off what is in a 16.16 format by Ver shift the coded values to the right by 16 bits becomes. After advancing in the z direction to the next Most sampling point this process is repeated.

Für die trilineare Interpolationstechnik werden die acht Quellenraumvoxel, die die Nachbarschaft für den transfor­ mierten (x',y',z')-Abtastpunkt bilden, bestimmt. Dann wird der dx-, dy- und dz-Ort des transformierten (x',y',z')-Ab­ tastpunkts in der definierten Nachbarschaft bestimmt. Die Bruchkomponenten eines transformierten (x', y',z') -Abtast­ punkts beschreiben die dx-, dy- und dz-Beziehungen mit der Nachbarschaft. Werte von allen acht Nachbarschafts-Quellen­ raumvoxel werden unter Verwendung eines trilinearen Inter­ polationsverfahrens kombiniert, um den Pixelwert zu bestim­ men, der zur Aufbereitung des transformierten (x',y',z')- Punkts verwendet wird. Dieses Verfahren wird nach dem Fort­ schreiten in der z-Richtung zu dem nächsten Abtastpunkt wie­ derholt.For the trilinear interpolation technique, the eight Source space voxels that are the neighborhood for the transfor form (x ', y', z ') - sampling point, determined. Then it will be the dx, dy and dz location of the transformed (x ', y', z ') - Ab determined in the defined neighborhood. The Fractional components of a transformed (x ', y', z ') sample dots describe the dx, dy and dz relationships with the  Neighborhood. Values from all eight neighborhood sources space voxels are generated using a trilinear inter polishing process combined to determine the pixel value that is used to prepare the transformed (x ', y', z ') - Point is used. This procedure will continue after the fort proceed in the z-direction to the next sampling point like repeats.

Aufgrund der typischerweise großen Größe von Volumendaten­ sätzen, nehmen dreidimensionale räumliche Transformationen Systembetriebsmittel ziemlich stark in Anspruch. Eine Opti­ mierung des Verfahrens ist somit ein anhaltender und heraus­ fordernder Bedarf in der Technik. Sowohl Hardware- als auch Software-orientierte Optimierungslösungen sind vorteilhaft. Gegenwärtige Verfahren einer dreidimensionalen räumlichen Transformation, die Gleitkommazahlen verwenden, sind ziem­ lich aufwendig, insbesondere wenn eine Division und häufige Multiplikationen eingeschlossen sind. Wiederholte Berechnun­ gen für jeden Abtastpunkt sind ebenfalls sehr aufwendig be­ züglich der Aufbereitungszeit.Because of the typically large size of volume data set, take three-dimensional spatial transformations System resources fairly heavily used. An opti The process is therefore persistent and out demanding need in technology. Both hardware and Software-oriented optimization solutions are advantageous. Current method of a three-dimensional spatial Transformations that use floating point numbers are fair Lich complex, especially if a division and frequent Multiplications are included. Repeated calculations conditions for each sampling point are also very expensive regarding the preparation time.

In der Technik besteht somit ein Bedarf nach einem Verfahren für eine dreidimensionale räumliche Transformation, das die Anzahl von erforderlichen Gleitkommaberechnungen reduziert, speziell von Divisionen und Multiplikationen. In der Technik existiert ferner ein Bedarf danach, schnellere Berechnungen ganzer Zahlen zu verwenden, beispielsweise Additionen und Subtraktionen, und weiterer einfacher CPU-Befehle, bei­ spielsweise Verschiebungen und Maskierungen. Es existiert ein weiterer Bedarf in der Technik, wiederholte Berechnungen aus dem Verfahren zu beseitigen. Es existiert ferner ein Be­ darf in der Technik, sowohl Hardware- als auch Software-Op­ timierungstechniken zu verwenden. Es ist daher offensicht­ lich, daß ein Bedarf nach einem verbesserten Verfahren für schnelle und exakte dreidimensionale räumliche Transforma­ tionen existiert, das diese und weitere Anforderungen in der Technik erfüllt. There is therefore a need in the art for a method for a three-dimensional spatial transformation that the Reduced number of floating point calculations required, especially of divisions and multiplications. In technology there is also a need for faster calculations to use integers, such as additions and Subtractions, and other simple CPU commands for example, shifts and masking. It exists another need in engineering, repeated calculations to eliminate from the process. There is also a Be may in technology, both hardware and software op to use timing techniques. It is therefore obvious Lich that there is a need for an improved process for fast and precise three-dimensional spatial transforma tion exists that this and other requirements in the Technology fulfilled.  

Die Aufgabe der vorliegenden Erfindung besteht darin, ein schnelles und betriebsmittelschonendes Verfahren zur Durch­ führung exakter dreidimensionaler räumlicher Transformatio­ nen zu schaffen. Diese Aufgabe wird durch ein Verfahren ge­ mäß Anspruch 1 gelöst.The object of the present invention is a fast and resource-saving procedure for through leadership of exact three-dimensional spatial transformation to create one. This task is accomplished through a process solved according to claim 1.

Ein Vorteil der vorliegenden Erfindung besteht darin, ein 32-Bit-Festkommaformat, das 16 Skalar-Bits und 16 Bruch-Bits aufweist, das als ein 16,16-Format bezeichnet wird, zu ver­ wenden, und kein Gleitkommaformat, um Werte von einer inver­ sen Transformationsmatrix und Bestimmungsraum-Bildpunkte für dreidimensionale räumliche Transformationen zu codieren und zu speichern.An advantage of the present invention is a 32-bit fixed point format that has 16 scalar bits and 16 fractional bits ver, which is referred to as a 16.16 format and not a floating point format to convert values from an invert transformation matrix and determination space pixels for encode three-dimensional spatial transformations and save.

Ein weiterer Vorteil der Erfindung besteht darin, eine tri­ lineare Interpolation mit einfacheren CPU-Befehlen, bei­ spielsweise Verschiebungen und Maskierungen, zu unterstüt­ zen. Noch ein weiterer Vorteil der Erfindung besteht darin, den nächsten Abtastpunkt entlang eines Strahls durch das Um­ wandeln von z-Vektorwerten i, j und k in dem 16,16-Format in ganze Zahlen und einen Schritt in der z-Richtung durch das Durchführen ganzzahliger Additionen zu erhalten.Another advantage of the invention is a tri linear interpolation with simpler CPU instructions, at for example, displacements and masking Zen. Yet another advantage of the invention is the next sample point along a ray through the um convert z vector values i, j and k into the 16.16 format integers and one step in the z direction through that Perform integer additions.

Noch ein weiterer Vorteil der Erfindung besteht darin, die Anfangsnachbarschaftsorte in dem Quellenraum durch das Ver­ schieben der Werte der inversen Transformationsmatrix in dem 16,16-Format für (x',y',z') um 16 Bits nach rechts zu be­ stimmen, was den ganzzahligen Wert in dem Quellenraum er­ gibt, der die Anfangsnachbarschaftsorte darstellt.Yet another advantage of the invention is that Initial neighborhood locations in the source space through the Ver shift the values of the inverse transformation matrix into the 16.16 format for (x ', y', z ') to move 16 bits to the right agree on what the integer value in the source space is that represents the initial neighborhood locations.

Ein weiterer Vorteil der Erfindung besteht darin, eine Mas­ kierungsoperation auf einem Wert der inversen Transforma­ tionsmatrix in dem 16,16-Format zu verwenden, um die 16- Bit-Bruchkomponente als einen Index in eine vorberechnete Nachschlagtabelle, die den gebrochenen Gleitkommawert ent­ hält, zu benutzen.Another advantage of the invention is a mas operation on a value of the inverse transform tion matrix in the 16.16 format to use the 16- Bit fraction component as an index into a pre-calculated Lookup table that contains the fractional floating point value keeps using.

Ein noch weiterer Vorteil der Erfindung besteht darin, die größeren Cache-Speicher in heutigen CPUs auszunutzen, um Aufrufe zu Nachschlagtabellen zu verarbeiten und das Verhal­ ten zu optimieren.Yet another advantage of the invention is that  to take advantage of larger cache memory in today's CPUs Process calls to lookup tables and the behavior to optimize.

Ein weiterer Vorteil der Erfindung besteht darin, daß sowohl Integer- als auch Gleitkomma-Pipelines, die in heutigen CPUs verfügbar sind, durch die Benutzung eines mannigfaltigeren Lösungsansatzes für dreidimensionale räumliche Transforma­ tionen ausgenutzt werden können.Another advantage of the invention is that both Integer as well as floating point pipelines used in today's CPUs are available through the use of a more diverse Approach for three-dimensional spatial transforma ions can be exploited.

Die obigen und weitere Vorteile der Erfindung werden bei ei­ nem Festkommaverfahren für dreidimensionale räumliche Trans­ formationen erreicht. Das Verfahren verwendet die Rückwärts­ abbildung, oder den inversen Transformationslösungsansatz, gekoppelt mit einer Strahlverfolgung. Die Werte, die aus der inversen Transformationsmatrix resultieren, werden in einem 32-Bit-Festkommaformat codiert und gespeichert, das 16 Ska­ lar-Bits und 16 Bruch-Bits aufweist, das als 16,16-Format bezeichnet wird. Fachleute werden erkennen, daß ein 48-Bit- Festkommaformat mit 24 Skalar-Bits und 24 Bruch-Bits, oder ein 64-Bit-Festkommaformat mit 32 Skalar-Bits und 32 Bruch- Bits oder eine gemischte Kombination der obigen, beispiels­ weise 8/24, ebenfalls verwendet werden könnten. Das 16,16- Format ist unten dargestellt:
The above and other advantages of the invention are achieved in a fixed point method for three-dimensional spatial transformations. The method uses reverse mapping, or the inverse transformation approach, coupled with ray tracing. The values resulting from the inverse transform matrix are encoded and stored in a 32-bit fixed point format, which has 16 scalar bits and 16 fractional bits, referred to as the 16.16 format. Those skilled in the art will recognize that a 48-bit fixed point format with 24 scalar bits and 24 fractional bits, or a 64-bit fixed point format with 32 scalar bits and 32 fractional bits, or a mixed combination of the above, for example 8 / 24, could also be used. The 16.16 format is shown below:

Beispielsweise würde die Zahl 8,9 wie folgt codiert und ge­ speichert werden. 8,9 wird mit 65.536 multipliziert, abzüg­ lich eines beliebigen Bruchteils, und in dem 32-Bit-Register gespeichert. Bei diesem Beispiel würde der "0,9"-Teil als 0,9 × 65.536 = 58.982 codiert werden und würde in dem Bruch­ teilabschnitt der ganzen Zahl erscheinen.For example, the number 8.9 would be encoded and ge as follows be saved. 8.9 is multiplied by 65,536, less any fraction, and in the 32-bit register saved. In this example, the "0.9" part would be as 0.9 × 65.536 = 58.982 and would be encoded in the fraction sections of the whole number appear.

Für jeden inversen transformierten (x',y',z')-Punkt kann entweder die Umtastungstechnik des nächstliegenden Nachbars oder die trilineare Interpolations-Umtastungstechnik ausge­ wählt werden, um Pixelwerte zur Aufbereitung festzulegen. Bei jeder Technik besteht der erste Schritt darin, den An­ fangsnachbarschaftspunkt zu bestimmen, der durch (i, j, k) dargestellt ist. Die wird durch eine Verschiebungsoperation auf den x'-, y'- und z'-Werten von der inversen Transforma­ tionsmatrix und einer anfänglichen Punktberechnung erreicht. Die x'-, y'- und z'-Werte werden um 16 Bits nach rechts ver­ schoben, was den Bruchteilabschnitt des 16,16-Festkommafor­ mats abschneidet. Dies ergibt die ganzzahligen Werte in dem Quellenraum, die den Anfangsnachbarschaftspunkt darstellen.For each inverse transformed (x ', y', z ') point either the keying technique of the closest neighbor or the trilinear interpolation shift keying technique  can be selected to define pixel values for processing. With any technique, the first step is to do it to determine the catch neighborhood point by (i, j, k) is shown. That is through a move operation on the x ', y' and z 'values from the inverse transform tion matrix and an initial point calculation. The x ', y' and z 'values are shifted 16 bits to the right pushed what the fractional section of the 16.16 fixed point mats cuts off. This gives the integer values in the Source space that represents the starting neighborhood point.

Für die Technik des nächstliegenden Nachbars wird zuerst 0,5 zu jedem Wert addiert, bevor der Anfangsnachbarschaftspunkt bestimmt wird. Nachdem der Anfangsnachbarschaftspunkt be­ stimmt ist, werden die acht Quellenraumvoxel, die die Nach­ barschaft bilden, ausgewertet, um das Voxel zu erhalten, das dem Abtastpunkt am nächsten liegt. Die Werte, die diesem nächstliegenden Nachbarschaftsquellenraumvoxel zugeordnet sind, werden verwendet, um den Pixelwert zu bestimmen, der verwendet werden wird, um den ersten transformierten (x',y',z') -Abtastpunkt entlang eines Strahls auf zubereiten. Durch das Fortschreiten in der z-Richtung entlang des Strahls wird der nächste Abtastpunkt bestimmt. Dieses Fort­ schreitverfahren wird erreicht, indem zuerst die z-Vektor­ werte i, j und k aus der inversen Transformationsmatrix in dem 16,16-Format in ganze Zahlen umgewandelt werden, und nachfolgend diese ganzzahligen Werte zu dem ersten transfor­ mierten (x',y',z')-Abtastpunkt eines Strahls addiert werden. Dieses Verfahren des Addierens von ganzzahligen Werten zu dem gegenwärtigen Abtastpunkt wird wiederholt, um den Rest der aufeinanderfolgenden Abtastpunkte entlang des Strahls zu erhalten. Dann wird der Anfangspunkt des nächsten Strahls wie vorher ausgewertet. Auf die gleiche Weise werden alle Strahlen für das Volumen zur Aufbereitung verarbeitet.For the technology of the closest neighbor, 0.5 is first added to each value before the starting neighborhood point is determined. After the initial neighborhood point be is true, the eight source space voxels that the After forming a partnership, evaluated to obtain the voxel that is closest to the sampling point. The values that this assigned to the nearest neighborhood source space voxel are used to determine the pixel value that will be used to transform the first Prepare (x ', y', z ') scanning point along a beam. By advancing in the z direction along the The next sampling point is determined. This fort Stepping is achieved by first using the z vector values i, j and k from the inverse transformation matrix in the 16.16 format are converted to integers, and below these integer values for the first transfor mized (x ', y', z ') - scanning point of a beam can be added. This method of adding integer values to the current sample point is repeated to the rest of the successive sampling points along the beam receive. Then the starting point of the next ray as evaluated before. In the same way everyone Blasting for volume processed for processing.

Für die trilineare Interpolationstechnik werden die acht Quellenraumvoxel, die die Nachbarschaft, in der der inverse transformierte Punkt enthalten ist, bilden, bestimmt. Als nächstes werden die dx-, dy- und dz-Bruchkomponenten des in­ versen transformierten (x',y',z')-Punkts berechnet, indem der tiefere Bruchteilabschnitt des Werts, der in dem 16,16- Format gespeichert ist, maskiert wird und dann auf eine Bruchteil-Nachschlagtabelle zugegriffen wird. Nachfolgend werden Ankerwerte zur Verwendung bei einer Zeigerarithmetik, die die Optimierung der Verarbeitung unterstützt, berechnet. Schließlich wird ein trilineares Interpolationsverfahren verwendet, um die Werte von den acht Nachbarschafts-Quellen­ raumvoxeln, die den (x',y',z')-Abtastpunkt enthalten, zu kombinieren, um einen kombinierten Wert zu erhalten, der bei der Aufbereitung des ersten Abtastpunkts entlang eines Strahls verwendet werden soll. Durch das Fortschreiten in der z-Richtung entlang des Strahls wird der nächste Abtast­ punkt entsprechend dem gleichen Verfahren, das oben be­ schrieben ist, unter Verwendung ganzzahliger Additionen und der Anwendung des trilinearen Interpolationsverfahrens aus­ gewertet. Dieses Verfahren wird für den Rest der Abtastpunk­ te entlang des Strahls wiederholt. Danach wird der Anfangs­ punkt des nächsten Strahls wie vorher bestimmt. Die ganzzah­ ligen Additionen werden für den Rest der Abtastpunkte ent­ lang dieses zweiten Strahls benutzt. Auf diese gleiche Weise werden alle Strahlen für das Volumen für eine Aufbereitung verarbeitet.For the trilinear interpolation technique, the eight Source space voxel representing the neighborhood in which the inverse transformed point is included, form, determined. As  next, the dx, dy and dz fractional components of the in verse transformed (x ', y', z ') point calculated by the lower fraction of the value in the 16.16- Format is saved, masked and then onto a Fraction lookup table is accessed. Below become anchor values for use in pointer arithmetic, which supports the optimization of processing. Finally, a trilinear interpolation method used the values from the eight neighborhood sources space voxels containing the (x ', y', z ') sampling point combine to get a combined value at the preparation of the first sampling point along a Beam should be used. By progressing in the z-direction along the beam becomes the next scan point according to the same procedure as above is written, using integer additions and the application of the trilinear interpolation method rated. This procedure is used for the rest of the sampling point repeated along the beam. After that, the beginning point of the next beam as previously determined. The integer Any additions are made for the rest of the sampling points long of this second ray. The same way are all rays for volume for processing processed.

Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend bezugnehmend auf die beiliegenden Zeich­ nungen näher erläutert. Es zeigen:Preferred embodiments of the present invention are referred to below with reference to the attached drawing nations explained in more detail. Show it:

Fig. 1 ein Blockdiagramm eines Computersystems, das ein Volumenaufbereitungssystem, das die vorliegende Er­ findung verkörpert, aufweist; Fig. 1 is a block diagram of a computer system having a volume processing system which embodies the present invention He;

Fig. 2 ein Blockdiagramm eines dreidimensionalen räumli­ chen Transformationsverfahrens der vorliegenden Er­ findung; Fig. 2 is a block diagram of a three-dimensional räumli chen transformation method of the present invention;

Fig. 3 ein Blockdiagramm einer Nachschlagtabellen-Initia­ lisierung; Fig. 3 is a block diagram of a lookup table capitalization Initia;

Fig. 4 ein Blockdiagramm der Interpolationstechnik des nächstliegenden Nachbarn; Figure 4 is a block diagram of the nearest neighbor interpolation technique;

Fig. 5 ein Blockdiagramm der trilinearen Interpolations­ technik; Fig. 5 is a block diagram of the trilinear interpolation technique;

Fig. 6 eine zweidimensionale Darstellung eines Volumenda­ tensatzes in dem Quellenraum; Fig. 6 is a two dimensional representation of a Volumenda tensatzes in the source room;

Fig. 7 eine zweidimensionale Darstellung des Volumendaten­ satzes von Fig. 6 in dem Bestimmungsraum, oder Be­ trachtungsraum, nach der Transformation; Fig. 7 is a two-dimensional representation of the volume data set of Fig. 6 in the determination space, or viewing space, after the transformation;

Fig. 8 eine zweidimensionale Darstellung des Volumendaten­ satzes von Fig. 7 in dem Quellenraum nach der in­ versen Transformation; und Fig. 8 is a two-dimensional representation of the volume data set of Fig. 7 in the source space after the inverse transformation; and

Fig. 9 eine dreidimensionale Darstellung der trilinearen Interpolationstechnik zum Bestimmen von Pixelwerten zum Aufbereiten von Abtastpunkten nach einer drei­ dimensionalen räumlichen Transformation. Fig. 9 is a three-dimensional representation of the trilinear interpolation to determine pixel values for rendering a three-dimensional sampling by the spatial transformation.

Fig. 1 zeigt ein Blockdiagramm eines Computersystems, das ein Volumenaufbereitungssystem enthält, das die vorliegende Erfindung verkörpert. Bezugnehmend auf Fig. 1 enthält ein Computersystem 100 ein Verarbeitungselement 102. Das Verar­ beitungselement 102 steht über einen Systembus 104 mit an­ deren Elementen des Computersystems 100 in Verbindung. Eine Tastatur 106 ermöglicht, daß ein Benutzer Informationen in das Computersystem 100 eingibt, während eine Graphikanzeige 110 ermöglicht, daß das Computersystem 100 Informationen zu dem Benutzer ausgibt. Ferner ist eine Maus 108 verwendet, um Informationen einzugeben, während eine Speichervorrichtung 112 verwendet ist, um Daten und Programme in dem Computer­ system 100 zu speichern. Ein Speicher 116, der ebenfalls mit dem Systembus 104 verbunden ist, enthält ein Betriebssystem 118 und ein Volumenaufbereitungssystem 120 der vorliegenden Erfindung. Fig. 1 shows a block diagram of a computer system that includes a volume processing system embodying the present invention. Referring to Fig. 1, a computer system 100 includes a processing element 102. The processing element 102 is connected via a system bus 104 to other elements of the computer system 100 . A keyboard 106 allows a user to enter information into the computer system 100 , while a graphics display 110 allows the computer system 100 to output information about the user. A mouse 108 is also used to enter information while a storage device 112 is used to store data and programs in the computer system 100 . A memory 116 , which is also connected to the system bus 104 , contains an operating system 118 and a volume conditioning system 120 of the present invention.

Fig. 2 zeigt ein Blockdiagramm des dreidimensionalen räumli­ chen Transformationsverfahrens der vorliegenden Erfindung. Bezugnehmend nun auf Fig. 2 ruft nach dem Eintritt ein Block 202 Fig. 3 auf, gemäß der die Nachschlagtabellen, die durch die Erfindung verwendet werden, initialisiert werden. Ein Block 204 wandelt nachfolgend die z-Vektorwerte, die aus der inversen Transformationsmatrix hergeleitet werden, in ganze Zahlen um. Dies wird erreicht, indem die drei Vektorkompo­ nenten i, j und k in dem Gleitkommaformat mit 65.536 multi­ pliziert werden, was die Werte in ein 16,16-Format umwan­ delt. Diese Werte werden später verwendet, um in der z-Rich­ tung fortzuschreiten, indem ganzzahlige Additionen durchge­ führt werden. Fig. 2 is a block diagram of the three-dimensional räumli shows chen transformation method of the present invention. Referring now to FIG. 2, upon entry, block 202 calls FIG. 3, according to which the lookup tables used by the invention are initialized. A block 204 subsequently converts the z-vector values, which are derived from the inverse transformation matrix, into integers. This is achieved by multiplying the three vector components i, j and k in the floating point format with 65,536 multiples, which converts the values into a 16.16 format. These values are used later to advance in the z direction by performing integer additions.

In einem Block 206 wählt der Benutzer aus, welche Interpola­ tionstechnik beim Bestimmen von Pixelwerten verwendet werden soll. Wenn der Benutzer die Technik des nächstliegenden Nachbarn auswählt, springt die Steuerung zu einem Block 208, in dem der erste Strahl, der ausgewertet werden soll, erhal­ ten wird. In einem Block 210 wird dann der erste Abtastpunkt entlang des ersten Strahls, der in dem Block 208 ausgewählt wurde, erhalten. Ein Block 212 ruft nachfolgend Fig. 4 auf, um die Interpolationstechnik des nächstliegenden Nachbarn durchzuführen. Ein Block 214 bestimmt dann, ob weitere Strahlen ausgewertet werden sollen. Wenn dies der Fall ist, kehrt die Steuerung zu dem Block 208 zurück, um den nächsten Strahl zu erhalten, wobei die Schritte in den Blöcken 210 und 212 wiederholt werden. Wenn die Antwort in dem Block 214 negativ ist, kehrt die Steuerung zu dem Volumenaufberei­ tungssystem 120 (Fig. 1) zurück.In block 206 , the user selects which interpolation technique is to be used when determining pixel values. If the user selects the closest neighbor technique, control jumps to block 208 where the first beam to be evaluated is obtained. The first sampling point along the first beam, which was selected in block 208 , is then obtained in a block 210 . A block 212 subsequently calls Fig. 4 to perform the nearest neighbor interpolation technique. Block 214 then determines whether additional beams should be evaluated. If so, control returns to block 208 to obtain the next beam with the steps in blocks 210 and 212 repeated. If the answer in block 214 is negative, control returns to volume conditioning system 120 ( FIG. 1).

Wenn die Interpolationstechnik, die in dem Block 206 aus­ gewählt wird, die trilineare Interpolation ist, springt die Steuerung zu einem Block 216, in dem der erste Strahl, der ausgewertet werden soll, erhalten wird. In einem Block 218 wird dann der erste Abtastpunkt entlang des ersten Strahls, der in dem Block 216 ausgewählt wurde, erhalten. Ein Block 220 ruft dann Fig. 5 auf, um die trilineare Interpolations­ technik durchzuführen. Ein Block 222 bestimmt dann, ob wei­ tere Strahlen existieren, die ausgewertet werden sollen. Wenn dies der Fall ist, springt die Steuerung zu dem Block 216 zurück, um den nächsten Strahl zu erhalten, wobei die Schritte in den Blöcken 218 und 220 wiederholt werden. Wenn die Antwort in dem Block 222 negativ ist, springt die Steue­ rung zu dem Volumenaufbereitungssystem 120 (Fig. 1) zurück.If the interpolation technique selected in block 206 is trilinear interpolation, control jumps to block 216 in which the first beam to be evaluated is obtained. In block 218 , the first sampling point along the first beam selected in block 216 is then obtained. A block 220 then calls FIG. 5 to perform the trilinear interpolation technique. Block 222 then determines whether there are other rays to be evaluated. If so, control loops back to block 216 to obtain the next beam with the steps in blocks 218 and 220 repeated. If the answer in block 222 is negative, control returns to volume conditioning system 120 ( FIG. 1).

Fig. 3 zeigt ein Blockdiagramm einer Nachschlagtabellen-Ini­ tialisierung. Bezugnehmend nun auf Fig. 3 initialisiert ein Block 302 eine Bruchteilnachschlagtabelle, die bei der Be­ rechnung von dx-, dy- und dz-Werten durch das Volumenaufbe­ reitungssystem (Fig. 1) verwendet werden soll. Die Tabelle wird aus dem folgenden Programmiercode in der "C"-Program­ miersprache abgeleitet:
Figure 3 shows a block diagram of a lookup table initialization. Referring now to FIG. 3, block 302 initializes a fraction lookup table to be used in the calculation of dx, dy, and dz values by the volume conditioning system ( FIG. 1). The table is derived from the following programming code in the "C" programming language:

for(i = 0; i < 65536; i++)
fixedPointLUT[i] = (float) i/65536.0.
for (i = 0; i <65536; i ++)
fixedPointLUT [i] = (float) i / 65536.0.

Beispielsweise würde für i = 1 der Wert, der in der Bruch­ teilnachschlagtabelle gespeichert wird, 1/65.536 = 0,0000 lauten. Für i = 32.768 würde der Wert, der in der Bruchteil­ nachschlagtabelle gespeichert wird, 32.768/65.536 = 0,5000 lauten. Für i = 65.535 würde der Wert, der in der Bruchteil­ nachschlagtabelle gespeichert wird, 65.535/65.536 = 0,9999 lauten.For example, for i = 1 the value would be that in the fraction partial lookup table is saved, 1 / 65,536 = 0.0000 ring. For i = 32.768 the value would be that in the fraction lookup table is saved, 32,768 / 65,536 = 0.5000 ring. For i = 65,535 the value would be that in the fraction lookup table is saved, 65,535 / 65,536 = 0.9999 ring.

Ein Block 304 initialisiert eine y-Richtung-Nachschlagtabel­ le, die bei Pixelortberechnungen verwendet werden soll. Die Tabelle wird aus dem folgenden Programmiercode in der "C"- Programmiersprache abgeleitet:
Block 304 initializes a y-direction lookup table le to be used in pixel location calculations. The table is derived from the following programming code in the "C" programming language:

for(i = 0; i < HEIGHT; i++)
yStrideLUT[i] = i.WIDTH.
for (i = 0; i <HEIGHT; i ++)
yStrideLUT [i] = i.WIDTH.

Wenn ein Volumendatensatz beispielsweise 256 Voxel breit mal 128 Voxel hoch mal 64 Voxel tief war, würde für i = 1 der Wert, der in der y-Nachschlagtabelle gespeichert wird, 1.256 = 256 lauten. Für i = 64 würde der gespeicherte Wert 64. 256 = 16.384 lauten. Für i = 127 würde der gespeicherte Wert 127.256 = 32.512 lauten.For example, if a volume record is 256 voxels wide times Was 128 voxels high times 64 voxels deep, for i = 1 the Value stored in the y lookup table, 1,256 = 256 ring. For i = 64, the stored value would be 64. 256 = 16,384. For i = 127 the saved one Value 127,256 = 32,512.

Ein Block 306 initialisiert eine z-Richtung-Nachschlagtabel­ le, die bei Pixelortberechnungen verwendet werden soll. Die Tabelle wird aus dem folgenden Programmiercode in der "C"- Programmiersprache hergeleitet:
Block 306 initializes a z-direction lookup table le to be used in pixel location calculations. The table is derived from the following programming code in the "C" programming language:

for(i = 0; i < DEPTH; i++)
zStrideLUT[i] = i.WIDTH.HEIGHT.
for (i = 0; i <DEPTH; i ++)
zStrideLUT [i] = i.WIDTH.HEIGHT.

Wenn ein Volumendatensatz beispielsweise 256 Voxel breit mal 128 Voxel hoch mal 64 Voxel tief war, würde für i = 1 der Wert, der in der z-Nachschlagtabelle gespeichert wird, 1. 256.128 = 32.768 lauten. Für i = 32 würde der gespeicherte Wert 32.256.128 = 1.048.576 lauten. Für i = 65 würde der gespeicherte Wert 65.256.128 = 2.129.920 lauten. Nachdem die Initialisierung abgeschlossen ist, springt die Steuerung von Fig. 3 zu Fig. 2 zurück.For example, if a volume record was 256 voxels wide by 128 voxels high by 64 voxels deep, for i = 1 the value stored in the z lookup table would be 1. 256.128 = 32.768. For i = 32, the stored value would be 32.256.128 = 1.048.576. For i = 65, the stored value would be 65.256.128 = 2.129.920. After initialization is complete, control jumps back from FIG. 3 to FIG. 2.

Fig. 4 zeigt ein Blockdiagramm der Interpolationstechnik des nächstliegenden Nachbarn. Bezugnehmend auf Fig. 4 ist ein Block 402 ein Initialisierungsschritt, in dem eine in­ verse Transformationsmatrix verwendet wird, um einen ersten (x',y',z')-Abtastpunkt eines Strahls in dem Quellenraum aus einem (x,y,z)-Voxelpunkt in dem Bestimmungsraum, oder Be­ trachtungsraum, zu berechnen. Zu jedem x'-, y'- und z'-Kom­ ponentenwert wird 0,5 addiert, um nicht alle aufeinanderfol­ genden Abtastpunkte entlang des Strahls runden zu müssen, um Anfangsnachbarschaftspunkte zu bestimmen. Jeder Komponenten­ wert wird ferner durch Multiplizieren des Komponentenwerts mit 65.536 in das 16,16-Format umgewandelt. Figure 4 shows a block diagram of the nearest neighbor interpolation technique. . Referring to Figure 4 is a block 402, an initialization step, in which a is used in shipping transformation matrix to obtain a first (x ', y', z ') - scanning a beam in the source space of a (x, y, z) -Voxel point to be calculated in the determination space, or viewing space. 0.5 is added to each x'-, y'- and z'-component value in order not to have to round all successive sampling points along the beam in order to determine initial neighborhood points. Each component value is also converted to the 16.16 format by multiplying the component value by 65,536.

Ein Block 404 findet den Anfangsnachbarschaftspunkt (i,j,k) in dem Quellenraum durch Abschneiden des Bruchteils der x'-, y'- und z'-Werte des Abtastpunkts. Dies wird erreicht, indem die 16,16-Format-Werte um 16 Bits nach rechts verschoben werden.Block 404 finds the initial neighborhood point (i, j, k) in the source space by truncating the fraction of the x ', y', and z 'values of the sample point. This is achieved by shifting the 16.16 format values to the right by 16 bits.

Ein Block 406 bestimmt das nächstliegende Quellenraumvoxel bezüglich des Abtastpunkts aus einer Gruppe von acht Nach­ barschafts-Quellenraumvoxeln. Dies wird erreicht, indem für den Wert von k auf die y-Richtung-Nachschlagtabelle, für den Wert von j auf die z-Richtung-Nachschlagtabelle zugegriffen wird, und der berechnete Wert von i für die x-Komponente verwendet wird, sowie ein Zeiger auf den Quellenvolumenda­ tensatz gemäß dem folgenden Programmiercode in der "C"-Pro­ grammiersprache:
Block 406 determines the closest source space voxel with respect to the sampling point from a group of eight neighborhood source space voxels. This is accomplished by accessing the y-direction look-up table for the value of k, the z-direction look-up table for the value of j, and using the calculated value of i for the x component, and a pointer on the source volume record according to the following programming code in the "C" programming language:

result = srcVolume[zStrideLUT[k] + yStrideLUT[j] + i].result = srcVolume [zStrideLUT [k] + yStrideLUT [j] + i].

Der Wert des nächstliegenden Quellenraumvoxels wird bei der Aufbereitung des Abtastpunkts verwendet. Ein Block 408 führt ein Zusammensetzverfahren auf dem Ergebnis, das für diesen Abtastpunkt erhalten wird, durch, um die Pixelwerte zu be­ stimmen, die verwendet werden, um diesen (x,y)-Pixelort, der diesem Abtastpunkt entspricht, aufzubereiten. Fachleute wer­ den erkennen, daß die Zusammensetzung durchgeführt werden kann, nachdem alle Abtastpunkte auf einem Strahl ausgewertet wurden, im Gegensatz zu der Zusammensetzung jedes Abtast­ punkts, während der Abtastpunkt verarbeitet wird. Ein Block 410 bestimmt, ob weitere Abtastpunkte entlang des Strahls existieren, die ausgewertet werden sollen. Wenn dies der Fall ist, wird in einem Block 412 der nächste Abtastpunkt entlang des Strahls, der ausgewertet werden soll, erhalten. Ein Fortschreiten von Abtastpunkt zu Abtastpunkt entlang des Strahls wird durch einfache ganzzahlige Additionen unter Verwendung der Werte, die in dem Block 204 bestimmt werden, erreicht. Die Steuerung springt zu dem Block 404 zurück und die Schritte in den Blöcken 404 bis 408 werden wiederholt. Wenn die Antwort in dem Block 410 negativ ist, springt die Steuerung zu Fig. 2 zurück. The value of the closest source space voxel is used in the preparation of the sampling point. Block 408 performs a composing process on the result obtained for that sample point to determine the pixel values used to render that (x, y) pixel location corresponding to that sample point. Those skilled in the art will recognize that the composition can be performed after all sample points on a beam have been evaluated, as opposed to the composition of each sample point while the sample point is being processed. Block 410 determines whether there are other sample points along the beam that are to be evaluated. If so, the next sample point along the beam to be evaluated is obtained in block 412 . Progress from sample point to sample point along the beam is accomplished by simple integer additions using the values determined in block 204 . Control loops back to block 404 and the steps in blocks 404 through 408 are repeated. If the answer in block 410 is negative, control loops back to FIG. 2.

Fig. 5 zeigt ein Blockdiagramm der trilinearen Interpola­ tionstechnik. Bezugnehmend auf Fig. 5 ist ein Block 502 ein Initialisierungsschritt, indem eine inverse Transformations­ matrix verwendet wird, um einen ersten (x',y',z')-Abtast­ punkt eines Strahls in dem Quellenraum aus einem (x,y,z)-Vo­ xelpunkt in dem Bestimmungsraum, oder Betrachtungsraum, zu berechnen. Jeder Komponentenwert wird ferner durch Multipli­ zieren des Komponentenwerts mit 65.536 in das 16,16-Format umgewandelt. Fig. 5 shows a block diagram of the trilinear interpolation technique. . Referring to Figure 5 is a block 502, an initialization step, by an inverse transformation matrix is used to form a first (x ', y', z ') - sample point of a beam in the source space of a (x, y, z) - Calculate the xel point in the determination space, or viewing space. Each component value is also converted to 16.16 format by multiplying the component value by 65,536.

Ein Block 504 findet den Anfangsnachbarschaftspunkt (i,j,k) in dem Quellenraum durch das Abschneiden des Bruchteils der x'-, y'- und z'-Werte des Abtastpunkts. Dies wird erreicht, indem die 16,16-Format-Werte um 16 Bits nach rechts gescho­ ben werden.Block 504 finds the initial neighborhood point (i, j, k) in the source space by cutting off the fraction of the x ', y', and z 'values of the sample point. This is achieved by shifting the 16.16 format values to the right by 16 bits.

Ein Block 506 berechnet die Werte von dx, dy und dz, die Delta-Werte sind, die die Änderung in der x-, der y- und der z-Richtung des Abtastpunkts in der Nachbarschaft der acht Quellenraumvoxel darstellen. Diese Werte werden durch eine Maskierung des tieferen Bruchteils des 16,16-Formatwerts mit einer "und"-Operation und das nachfolgende Zugreifen auf die Bruchteilnachschlagtabelle wie folgt berechnet:
Block 506 computes the values of dx, dy, and dz, which are delta values that represent the change in the x, y, and z directions of the sampling point in the vicinity of the eight source space voxels. These values are calculated by masking the lower fraction of the 16.16 format value with an "and" operation and then accessing the fraction lookup table as follows:

dx = fixedPointLUT[x' & Oxffff];
dy = fixedPointLUT[y' & Oxffff];
dz = fixedPointLUT[z' & Oxffff].
dx = fixedPointLUT [x '&Oxffff];
dy = fixedPointLUT [y '&Oxffff];
dz = fixedPointLUT [z '& Oxffff].

Ein Block 508 berechnet Ankerwerte, die auf Daten in dem ur­ sprünglichen Volumendatensatz zeigen. Diese Ankerwerte wer­ den in einer Zeigerarithmetik verwendet, um die Berechnungen zu optimieren und ferner eine einfachere Compilierung zu er­ möglichen.Block 508 computes anchor values that point to data in the original volume data set. These anchor values are used in pointer arithmetic in order to optimize the calculations and also to enable easier compilation.

Ein Block 510 wendet das Verfahren einer trilinearen Opera­ tion an, wie es graphisch in Fig. 9 dargestellt ist. Werte von den Nachbarschafts-Quellenraumvoxeln, die den (x',y',z')-Abtastpunkt enthalten, werden trilinear interpo­ liert, um einen kombinierten Quellenwert herzuleiten, der verwendet wird, um das (x,y)-Pixel, das dem (x',y',z')-Ab­ tastpunkt für den Strahl entspricht, aufzubereiten. Ein Block 512 führt ein Zusammensetzverfahren auf dem Ergebnis, das für diesen Abtastpunkt erhalten wird, durch, um die Pi­ xelwerte zu bestimmen, die verwendet werden, um diesen (x,y)-Pixelort, der diesem Abtastpunkt entspricht, aufzube­ reiten. Fachleute werden erkennen, daß die Zusammensetzung durchgeführt werden kann, nachdem alle Abtastpunkte auf ei­ nem Strahl ausgewertet wurden, im Gegensatz zu dem Zusammen­ setzen jedes Abtastpunkts, während jeder Abtastpunkt verar­ beitet wird. Ein Block 514 bestimmt, ob weitere Abtastpunkte entlang des Strahls, der ausgewertet werden soll, existie­ ren. Wenn dies der Fall ist, wird in einem Block 516 der nächste Abtastpunkt entlang des Strahls, der ausgewertet werden soll, erhalten. Ein Fortschreiten von Abtastpunkt zu Abtastpunkt entlang des Strahls wird durch einfache ganzzah­ lige Additionen unter Verwendung der Werte, die in dem Block 204 bestimmt werden, erreicht. Die Steuerung springt zu dem Block 504 zurück und die Schritte in den Blöcken 504 bis 512 werden wiederholt. Wenn die Antwort in dem Block 514 negativ ist, kehrt die Steuerung zur Fig. 2 zurück.Block 510 applies the trilinear operation method as graphically illustrated in FIG. 9. Values from the neighborhood source space voxels containing the (x ', y', z ') sample point are trilinearly interpolated to derive a combined source value used to compute the (x, y) pixel corresponding to the (x ', y', z ') - Corresponds to the scanning point for the beam. Block 512 performs a composing process on the result obtained for that sample point to determine the pixel values used to render that (x, y) pixel location corresponding to that sample point. Those skilled in the art will recognize that the composition can be performed after all of the sample points on a beam have been evaluated, as opposed to the assembly of each sample point while each sample point is being processed. Block 514 determines whether there are more sample points along the beam to be evaluated. If so, then the next sample point along the beam to be evaluated is obtained in block 516 . Progress from sample point to sample point along the beam is accomplished by simple integer additions using the values determined in block 204 . Control loops back to block 504 and the steps in blocks 504 through 512 are repeated. If the answer in block 514 is negative, control returns to FIG. 2.

Fig. 6 zeigt eine zweidimensionale Darstellung eines Volu­ mendatensatzes in dem Quellenraum. Bezugnehmend nun auf Fig. 6 wird eine vereinfachte zweidimensionale Darstellung eines Volumendatensatzes in dem Quellenraum verwendet, um die Be­ ziehung der inversen Transformationsmatrix zwischen Voxeln und Abtastpunkten zu veranschaulichen. Ein Bezugszeichen 602 stellt die i-, die j- und die k-Richtung in dem Quellenraum dar, wobei sich die j-Richtung senkrecht aus der Papierebene erstreckt. Ein Volumendatensatz 604 in dem Quellenraum weist Voxel auf, die an den Schnittpunkten der Gitterlinien ange­ ordnet sind. Ein Voxel 606 ist veranschaulichend für alle Voxel in dem Volumendatensatz 604. Fig. 6 shows a two-dimensional representation of a Volu mendatensatzes in the source room. Referring now to FIG. 6, a simplified two-dimensional representation of a volume data set in the source space is used to illustrate the relationship of the inverse transformation matrix between voxels and sample points. A reference numeral 602 represents the i, j and k directions in the source space, the j direction extending perpendicularly from the paper plane. A volume data set 604 in the source space has voxels that are arranged at the intersections of the grid lines. A voxel 606 is illustrative of all voxels in the volume data set 604 .

Fig. 7 zeigt eine zweidimensionale Darstellung des Volumen­ datensatzes von Fig. 6 in dem Bestimmungsraum, oder Betrach­ tungsraum, nach der Transformation. Bezugnehmend nun auf Fig. 7 wurde ein Transformationsmatrixoperator auf den Vo­ lumendatensatz 604 (Fig. 6) angewendet, was die Änderung der Ausrichtung, die für den Volumendatensatz 604 in dem Be­ stimmungsraum, oder Betrachtungsraum, gezeigt ist, zur Folge hat. Ein Bezugszeichen 702 stellt die x-, die y- und die z-Richtung in dem Bestimmungsraum, oder Betrachtungsraum, dar, wobei sich die y-Richtung senkrecht aus der Papierebene erstreckt. Ein Betrachtungsvektor 708 stellt die Betrach­ tungsrichtung, die durch den Benutzer gewünscht ist, dar, die sich senkrecht aus der Bildebene 710 erstreckt. Die Bildebene 710 erstreckt sich ebenfalls senkrecht aus der Pa­ pierebene. FIG. 7 shows a two-dimensional representation of the volume data set from FIG. 6 in the determination space, or viewing space, after the transformation. Referring now to FIG. 7, a transform matrix operator has been applied to volume data set 604 ( FIG. 6), resulting in the change in orientation shown for volume data set 604 in the determination space, or viewing space. Reference numeral 702 represents the x, y and z directions in the determination space, or viewing space, with the y direction extending perpendicularly from the paper plane. A viewing vector 708 represents the viewing direction desired by the user that extends perpendicularly from the image plane 710 . The image plane 710 also extends perpendicularly from the paper plane.

Fig. 8 zeigt eine zweidimensionale Darstellung des Volumen­ datensatzes von Fig. 6 zurück in den Quellenraum nach der inversen Transformation. Bezugnehmend nun auf Fig. 8 wurde ein Inverstransformationsmatrix-Operator auf den Volumenda­ tensatz 604 angewendet. Die Bildebene 710 (Fig. 7) wurde ebenfalls in den Quellenraum gebracht, wobei die Beziehung, die dieselbe mit dem Volumendatensatz 604 in dem Bestim­ mungsraum, oder Betrachtungsraum, hatte, bewahrt wird. Strahlen werden senkrecht von Pixelorten entlang der Bild­ ebene 710 geworfen. Ein Pixel 812 und ein Strahl 814 sind veranschaulichend für die Pixel entlang der Bildebene 710 und die Strahlen, die senkrecht von denselben geworfen sind. FIG. 8 shows a two-dimensional representation of the volume data set from FIG. 6 back into the source space after the inverse transformation. Referring now to FIG. 8, an inverse transformation matrix operator has been applied to volume record 604 . Image plane 710 ( FIG. 7) was also brought into the source space, maintaining the relationship it had with volume data set 604 in the determination space, or viewing space. Rays are thrown perpendicularly from pixel locations along the image plane 710 . A pixel 812 and a ray 814 are illustrative of the pixels along the image plane 710 and the rays thrown perpendicularly therefrom.

Entlang des Strahls 814 sind Abtastpunkte 816, 818, 820, 822 und 824 angeordnet, die in den Volumendatensatz 604 fallen. Eine Interpolationstechnik einer bestimmten Art muß ange­ wendet werden, um Werte für die Abtastpunkte 816, 818, 820, 822 und 824 aus den Nachbarschaftsvoxeln, die jeden Abtast­ punkt umgeben, abzuleiten. Eine Interpolation des nächstlie­ genden Nachbarn oder eine trilineare Interpolation sind zwei derartige Techniken, die für dreidimensionale räumliche Transformationen verwendet werden können. Abtastpunkte ent­ lang weiterer Strahlen werden in gleicher Weise verarbeitet. Sampling points 816 , 818 , 820 , 822 and 824 , which fall into the volume data record 604 , are arranged along the beam 814 . A certain type of interpolation technique must be used to derive values for sample points 816 , 818 , 820 , 822 and 824 from the neighborhood voxels surrounding each sample point. Interpolation of the nearest neighbor or trilinear interpolation are two such techniques that can be used for three-dimensional spatial transformations. Sampling points along other rays are processed in the same way.

Fachleute werden erkennen, daß die Grundsätze, die in den Fig. 6 bis 8 in einer zweidimensionalen Darstellung darge­ stellt sind, ebensogut in drei Dimensionen gelten.Skilled persons will appreciate that the principles that are situated in Figs. 6 to 8 in a two-dimensional representation Darge equally well apply in three dimensions.

Fig. 9 zeigte eine dreidimensionale Darstellung der trili­ nearen Interpolationstechnik zum Bestimmen von Pixelwerten zur Aufbereitung von Abtastpunkten nach einer dreidimensio­ nalen räumlichen Transformation. Bezugnehmend nun auf Fig. 9 stellt ein Bezugszeichen 132 die i-, die j- und die k-Rich­ tung in dem Quellenraum dar. Ein inverser transformierter Abtastpunkt 918 ist ein (x,'y',z')-Abtastpunkt in dem Quel­ lenraum. 902, 904, 906, 908, 910, 912, 914 und 916 stellen acht Voxel in dem Quellenraum dar, die den Inverstransforma­ tions-Abtastpunkt 918 enthalten. Der Abstand dx 934 wird durch Maskieren des tieferen Bruchteils des 16,16-Format­ werts x' und das Zugreifen auf die Bruchteilnachschlagtabel­ le 302 (Fig. 3) bestimmt. Der Abstand dy 936 wird durch das Maskieren des tieferen Bruchteils des 16,16-Formatwerts y' und das Zugreifen auf die Bruchteilnachschlagtabelle 302 (Fig. 3) bestimmt. Der Abstand dz 938 wird durch das Maskie­ ren des tieferen Bruchteils des 16,16-Formatwerts z' und das Zugreifen der Bruchteilnachschlagtabelle 302 (Fig. 3) be­ stimmt. FIG. 9 shows a three-dimensional representation of the trilateral interpolation technique for determining pixel values for the preparation of sampling points after a three-dimensional spatial transformation. Referring now to FIG. 9, reference numeral 132 represents the i, j and k directions in the source space. An inverse transformed sample point 918 is an (x, 'y', z ') sample point in the source lenraum. 902 , 904 , 906 , 908 , 910 , 912 , 914 and 916 represent eight voxels in the source space that contain the inverse transform sample point 918 . The distance dx 934 is determined by masking the lower fraction of the 16.16 format value x 'and accessing the fraction lookup table le 302 ( FIG. 3). The distance dy 936 is determined by masking the lower fraction of the 16,16 format value y 'and accessing the fraction lookup table 302 ( FIG. 3). The distance dz 938 is determined by masking the lower fraction of the 16.16 format value z 'and accessing the fraction lookup table 302 ( FIG. 3).

Die Interpolation beginnt durch das Auswerten eines ersten Schnitts, der durch die Ebene definiert ist, die die Voxel 902, 904, 906 und 908 enthält. Der Wert des Punkts 920 wird interpoliert, indem die Differenz zwischen den Voxeln 904 und 902 verwendet wird, mit dem Wert des Abstands dx 934 multipliziert wird, und nachfolgend dieses Produkt zu dem Wert des Voxels 902 addiert wird, was durch die folgende Gleichung dargestellt ist, wobei P920, P904, usw., den Wert jedes Voxels an diesem Ort darstellen:
The interpolation begins by evaluating a first slice defined by the plane containing the voxels 902 , 904 , 906 and 908 . The value of point 920 is interpolated using the difference between voxels 904 and 902 , multiplied by the value of distance dx 934, and subsequently adding this product to the value of voxel 902 , which is represented by the following equation , where P920, P904, etc. represent the value of each voxel at that location:

P 920 = ((P904 - P902).dx) + P902.P 920 = ((P904 - P902) .dx) + P902.

In gleicher Weise wird der Wert des Punkts 922 bestimmt, in­ dem die Differenz zwischen den Voxeln 906 und 908 verwendet wird, mit dem Wert des Abstands dx 934 multipliziert wird und nachfolgend dieses Produkt zu dem Wert des Voxels 908 addiert wird.Similarly, the value of point 922 is determined, using the difference between voxels 906 and 908 , multiplied by the value of distance dx 934, and then adding this product to the value of voxel 908 .

Auf eine gleichartige Art und Weise wird der Wert des Punkts 924 bestimmt, indem die Differenz zwischen den Punkten 922 und 920 verwendet wird, mit dem Wert des Abstands dy 936 multipliziert wird und nachfolgend dieses Produkt zu dem Wert des Punkts 920 addiert wird.In a similar manner, the value of point 924 is determined by using the difference between points 922 and 920 , multiplying by the value of distance dy 936 and subsequently adding this product to the value of point 920 .

Der gleichen obigen Prozedur wird für den nächsten Schnitt gefolgt, der durch die Ebene definiert ist, die die Voxel 910, 912, 914 und 916 enthält. Die Werte der Punkte 926, 928 und 930 werden auf die gleiche Weise bestimmt, wie für die Punkte 920, 922 und 924 oben angezeigt wurde. Der schließli­ che kombinierte Wert, der verwendet wird, um das Pixel auf­ zubereiten, das dem Inverstransformations-Abtastpunkt 918 entspricht, wird bestimmt, indem der Unterschied zwischen den Punkten 930 und 924 verwendet wird, mit dem Wert des Ab­ stands dz 938 multipliziert wird und nachfolgend dieses Pro­ dukt zu dem Wert des Punkts 924 addiert wird. Dieses Verfah­ ren wird für jeden Abtastpunkt entlang eines Strahls und für alle Strahlen in dem Volumen, das aufbereitet werden soll, wiederholt.The same procedure above is followed for the next cut defined by the plane containing voxels 910 , 912 , 914 and 916 . The values of points 926 , 928 and 930 are determined in the same manner as indicated for points 920 , 922 and 924 above. The final combined value used to render the pixel corresponding to the inverse transform sample point 918 is determined using the difference between points 930 and 924 , multiplied by the value of distance dz 938 and subsequently this product is added to the value of point 924 . This process is repeated for each sample point along a beam and for all beams in the volume to be processed.

Claims (10)

1. Verfahren zur dreidimensionalen räumlichen Transforma­ tion eines Volumendatensatzes (604) zum aufbereiteten Anzeigen des Volumendatensatzes auf einer zweidimensio­ nalen Graphikanzeige (110) eines Computersystems (100), wobei das Verfahren folgende Schritte aufweist:
  • (a) Ausdrücken eines Anfangsbestimmungsraumvoxels ei­ nes Strahls (814) in homogenen Koordinaten;
  • (b) Erzeugen einer inversen Transformationsmatrix, wo­ bei die inverse Transformationsmatrix homogene Ko­ ordinaten aufweist;
  • (c) Multiplizieren (402, 502) des Anfangsbestimmungs­ raumvoxels des Strahls (814), ausgedrückt in homo­ genen Koordinaten, mit der inversen Transforma­ tionsmatrix, was einen invers transformierten Ab­ tastpunkt (918) ergibt, wobei der invers transfor­ mierte Abtastpunkt einen x-Koordinatenwert, einen y-Koordinatenwert und einen z-Koordinatenwert auf­ weist;
  • (d) Bestimmen eines Werts für den invers transformier­ ten Abtastpunkt (918) mit folgenden Schritten:
    • (d1) Addieren (402) von 0,5 zu sowohl dem x-Koor­ dinatenwert, dem y-Koordinatenwert als auch dem z-Koordinatenwert des invers transfor­ mierten Abtastpunkts (918);
    • (d2) Codieren des x-Koordinatenwerts, des y-Koor­ dinatenwerts und des z-Koordinatenwerts des invers transformierten Abtastpunkts (918) in ein Festkommaformat, wobei das Festkommafor­ mat einen Skalarabschnitt mit einer ersten vorbestimmten Anzahl von Bits und einen Bruchteilabschnitt mit einer zweiten vorbe­ stimmten Anzahl von Bits aufweist;
    • (d3) Verschieben (404) sowohl des x-Koordinaten­ werts, des y-Koordinatenwerts als auch des z-Koordinatenwerts des invers transformier­ ten Abtastpunkts (918) um die vorbestimmte Anzahl von Bits nach rechts, was einen An­ fangsnachbarschaftspunkt ergibt, wobei der Anfangsnachbarschaftspunkt eine ganzzahlige Komponente i, eine ganzzahlige Komponente j und eine ganzzahlige Komponente k aufweist, wobei der Anfangsnachbarschaftspunkt von ei­ ner Nachbarschaft von acht Quellenraumvoxeln (902 bis 916) umgeben ist;
    • (d4) Bestimmen (406) eines nächstliegenden Nach­ barschaftsquellenraumvoxels relativ zu dem Anfangsnachbarschaftspunkt aus der Nachbar­ schaft von acht Quellenraumvoxeln (902 bis 916), wobei das nächstliegende Nachbar­ schaftsquellenraumvoxel einen Quellenwert aufweist; und
    • (d5) Zuweisen (406) des Quellenwerts des nächst­ liegenden Nachbarschaftsquellenraumvoxels als der Wert für den invers transformierten Abtastpunkt (918), wobei der Wert bei dem weiteren Aufbereitungsverfahren für den in­ vers transformierten Abtastpunkt verwendet wird.
1. A method for three-dimensional spatial transformation of a volume data set ( 604 ) for the edited display of the volume data set on a two-dimensional graphic display ( 110 ) of a computer system ( 100 ), the method comprising the following steps:
  • (a) expressing an initial determination space voxel of a beam ( 814 ) in homogeneous coordinates;
  • (b) generating an inverse transformation matrix where the inverse transformation matrix has homogeneous coordinates;
  • (c) multiplying ( 402 , 502 ) the initial determination space voxel of the beam ( 814 ), expressed in homogeneous coordinates, by the inverse transformation matrix, which gives an inversely transformed sampling point ( 918 ), the inversely transformed sampling point having an x- Coordinate value, a y coordinate value and a z coordinate value;
  • (d) determining a value for the inversely transformed sampling point ( 918 ) with the following steps:
    • (d1) adding ( 402 ) 0.5 to both the x coordinate value, the y coordinate value and the z coordinate value of the inversely transformed sampling point ( 918 );
    • (d2) encoding the x coordinate value, the y coordinate value and the z coordinate value of the inversely transformed sampling point ( 918 ) into a fixed point format, the fixed point format passing a scalar section with a first predetermined number of bits and a fraction section with a second has the right number of bits;
    • (d3) Shifting ( 404 ) both the x coordinate value, the y coordinate value and the z coordinate value of the inversely transformed sampling point ( 918 ) to the right by the predetermined number of bits, giving an initial neighborhood point, the initial neighborhood point has an integer component i, an integer component j and an integer component k, the initial neighborhood point being surrounded by eight neighborhood space voxels ( 902 to 916 );
    • (d4) determining (406) barschaftsquellenraumvoxels of eight Quellenraumvoxeln (902-916), wherein the nearest neighbor schaftsquellenraumvoxel having a nearest After relative to the initial neighborhood point from the neighboring shaft has a source value; and
    • (d5) assigning ( 406 ) the source value of the closest neighborhood source space voxel as the value for the inversely transformed sample point ( 918 ), which value is used in the further processing method for the inverted sample point.
2. Verfahren gemäß Anspruch 1, bei dem die Schritte (d1) bis (d5) durch folgende Schritte (d1) bis (d6) ersetzt sind:
  • (d1) Codieren des x-Koordinatenwerts, des y-Koordina­ tenwerts und des z-Koordinatenwerts des invers transformierten Abtastpunkts (918) in ein Fest­ kommaformat, wobei das Festkommaformat einen ska­ laren Abschnitt mit einer ersten vorbestimmten An­ zahl von Bits und einen Bruchteilabschnitt mit ei­ ner zweiten vorbestimmten Anzahl von Bits auf­ weist;
  • (d2) Verschieben (504) sowohl des x-Koordinatenwerts, des y-Koordinatenwerts als auch des z-Koordinaten­ werts des inversen transformierten Abtastpunkts (918) um die vorbestimmte Anzahl von Bits nach rechts, was einen Anfangsnachbarschaftspunkt er­ gibt, wobei der Anfangsnachbarschaftspunkt eine ganzzahlige Komponente i, eine ganzzahlige Kompo­ nente j und eine ganzzahlige Komponente k auf­ weist, wobei der Anfangsnachbarschaftspunkt von einer Nachbarschaft von acht Quellenraumvoxeln (902 bis 916) umgeben ist, wobei jedes Voxel der Nachbarschaft von acht Quellenraumvoxeln einen Quellenwert aufweist;
  • (d3) Bestimmen (506) eines Delta-x-Werts;
  • (d4) Bestimmen (506) eines Delta-y-Werts;
  • (d5) Bestimmen (506) eines Delta-z-Werts; und
  • (d6) Bestimmen (510) eines kombinierten Quellenwerts
    für den invers transformierten Abtastpunkt (918) durch eine trilineare Interpolation des Quellen­ werts der Nachbarschaft von acht Quellenraumvoxeln (902 bis 916), des Delta-x-Werts, der Delta-y- Werts und des Delta-z-Werts, und Zuweisen des kom­ binierten Quellenwerts als dem Wert für den invers transformierten Abtastpunkt, wobei der Wert bei dem weiteren Aufbereitungsverfahren für den invers transformierten Abtastpunkt verwendet wird.
2. The method according to claim 1, in which steps (d1) to (d5) are replaced by the following steps (d1) to (d6):
  • (d1) encoding the x coordinate value, the y coordinate value and the z coordinate value of the inversely transformed sampling point ( 918 ) into a fixed point format, the fixed point format including a scaled section with a first predetermined number of bits and a fractional section a second predetermined number of bits;
  • (d2) shifting ( 504 ) both the x coordinate value, the y coordinate value and the z coordinate value of the inverse transformed sample point ( 918 ) to the right by the predetermined number of bits, giving an initial neighborhood point, the initial neighborhood point being one has integer component i, an integer component j and an integer component k, the initial neighborhood point being surrounded by a neighborhood of eight source space voxels ( 902 to 916 ), each voxel of the neighborhood having eight source space voxels having a source value;
  • (d3) determining ( 506 ) a delta x value;
  • (d4) determining ( 506 ) a delta y value;
  • (d5) determining ( 506 ) a delta z value; and
  • (d6) determining ( 510 ) a combined source value
    for the inversely transformed sampling point ( 918 ) by trilinear interpolation of the source value of the neighborhood of eight source space voxels ( 902 to 916 ), the delta x value, the delta y value and the delta z value, and assigning the combined source value as the value for the inversely transformed sampling point, the value being used in the further processing method for the inversely transformed sampling point.
3. Verfahren gemäß Anspruch 1 oder 2, bei dem die erste vorbestimmte Anzahl von Bits und die zweite vorbestimm­ te Anzahl von Bits 16 ist.3. The method according to claim 1 or 2, wherein the first predetermined number of bits and the second predetermined te number of bits is 16. 4. Verfahren gemäß Anspruch 1, das ferner folgenden Schritt (a1), der vor dem Schritt (a) durchgeführt wird, aufweist:
  • (a1) Erzeugen (202) einer y-Richtung-Nachschlagtabelle und einer z-Richtung-Nachschlagtabelle.
4. The method according to claim 1, further comprising the following step (a1), which is carried out before step (a):
  • (a1) Generate ( 202 ) a y-direction look-up table and a z-direction look-up table.
5. Verfahren gemäß Anspruch 2, das ferner den folgenden Schritt (a1) , der vor dem Schritt (a) durchgeführt wird, und den folgenden Schritt (d7), der nach dem Schritt (d6) durchgeführt wird, aufweist:
  • (a1) Erzeugen (202) einer Bruchteilnachschlagtabelle, einer y-Richtung-Nachschlagtabelle und einer z- Richtung-Nachschlagtabelle; und
  • (d7) Zusammensetzen (512) des Werts für den invers transformierten Abtastpunkt (918).
5. The method according to claim 2, further comprising the following step (a1) which is carried out before step (a) and the following step (d7) which is carried out after step (d6):
  • (a1) creating ( 202 ) a fraction lookup table, a y direction lookup table, and a z direction lookup table; and
  • (d7) assembling ( 512 ) the value for the inversely transformed sampling point ( 918 ).
6. Verfahren gemäß Anspruch 4, bei dem der Schritt (d4) ferner folgenden Schritt (d4a) aufweist:
  • (d4a) Bestimmen (406) eines nächstliegenden Nachbar­ quellenraumvoxels durch das Zugreifen auf die y-Richtung-Nachschlagtabelle und die z-Richtung- Nachschlagtabelle.
6. The method according to claim 4, wherein step (d4) further comprises the following step (d4a):
  • (d4a) determining ( 406 ) a closest neighbor source space voxel by accessing the y-direction look-up table and the z-direction look-up table.
7. Verfahren gemäß Anspruch 5, bei dem die Schritte (d3), (d4), (d5) und (d6) ferner folgende Schritte (d3a), (d4a), (d5a) und (d6a) aufweisen:
  • (d3a) Bestimmen (506) des Delta-x-Werts durch Maskieren des Bruchteilabschnitts des x-Koordinatenwerts des invers transformierten Abtastpunktes (918) und Zugreifen auf die Bruchteilnachschlagtabelle;
  • (d4a) Bestimmen (506) des Delta-y-Werts durch Maskieren des Bruchteilabschnitts des y-Koordinatenwerts des invers transformierten Abtastpunktes (918) und Zugreifen auf die Bruchteilnachschlagtabelle;
  • (d5a) Bestimmen (506) des Delta-z-Werts durch Maskieren des Bruchteilabschnitts des z-Koordinatenwerts des invers transformierten Abtastpunktes (918) und Zugreifen auf die Bruchteilnachschlagtabelle; und
  • (d6a) Bestimmen des kombinierten Quellenwerts durch Zu­ greifen auf die y-Richtung-Nachschlagtabelle und die z-Richtung-Nachschlagtabelle, um die trili­ neare Interpolation zu unterstützen.
7. The method according to claim 5, wherein steps (d3), (d4), (d5) and (d6) further comprise the following steps (d3a), (d4a), (d5a) and (d6a):
  • (d3a) determining ( 506 ) the delta x value by masking the fractional portion of the x coordinate value of the inverse transformed sample point ( 918 ) and accessing the fractional lookup table;
  • (d4a) determining ( 506 ) the delta y value by masking the fractional portion of the y coordinate value of the inverse transformed sample point ( 918 ) and accessing the fractional lookup table;
  • (d5a) determining ( 506 ) the delta z value by masking the fractional portion of the z coordinate value of the inverse transformed sample point ( 918 ) and accessing the fractional lookup table; and
  • (d6a) Determine the combined source value by accessing the y-direction look-up table and the z-direction look-up table to aid in trilinear interpolation.
8. Verfahren gemäß Anspruch 1, das ferner folgende Schrit­ te (e), (f), (g)' (h) und (i) aufweist:
  • (e) Umwandeln (204) einer z-Vektor-Komponente der in­ versen Transformationsmatrix, wobei die z-Vek­ tor-Komponente einen iM-Wert, einen jM-Wert und einen kM-Wert aufweist, durch das Multiplizieren von jedem des iM-Werts, des jM-Werts und des kM- Werts mit 65.536 in ganzzahlige Werte, was einen iF-Wert, einen jF-Wert und einen kF-Wert ergibt;
  • (f) Ableiten (412) eines nächsten invers transfor­ mierten Abtastpunkts entlang des Strahls (814) durch Addieren des iF-Werts zu dem x-Koordinaten­ wert, Addieren des jF-Werts zu dem y-Koordinaten­ wert und Addieren des kF-Werts zu dem z-Koordina­ tenwert;
  • (g) Wiederholen der Schritte (c) und (d) für den nächsten invers transformierten Abtastpunkt;
  • (h) Wiederholen der Schritte (f) und (g) bis alle nächsten invers transformierten Abtastpunkte ent­ lang des Strahls verarbeitet wurden; und
  • (i) Erhalten eines nächsten Anfangsbestimmungsraumvo­ xels eines nächsten Strahls und Wiederholen der Schritte (a) bis (h) bis alle nächsten Strahlen verarbeitet wurden.
8. The method of claim 1, further comprising the steps (e), (f), (g) '(h) and (i):
  • (e) converting ( 204 ) a z-vector component of the inverse transformation matrix, the z-vector component having an iM value, a jM value and a kM value by multiplying each of the iM Value, the jM value and the kM value with 65,536 in integer values, which gives an iF value, a jF value and a kF value;
  • (f) deriving ( 412 ) a next inversely transformed sampling point along the beam ( 814 ) by adding the iF value to the x coordinate value, adding the jF value to the y coordinate value and adding the kF value to the z coordinate value;
  • (g) repeating steps (c) and (d) for the next inversely transformed sampling point;
  • (h) repeating steps (f) and (g) until all next inversely transformed sample points along the beam have been processed; and
  • (i) obtaining a next initial determination space voxel of a next ray and repeating steps (a) through (h) until all next rays have been processed.
9. Verfahren gemäß Anspruch 2, das ferner folgende Schrit­ te (e), (f), (g), (h) und (i) aufweist:
  • (e) Umwandeln (204) einer z-Vektor-Komponente der in­ versen Transformationsmatrix, wobei die z-Vektor­ komponente einen iM-Wert, einen jM-Wert und einen kM-Wert aufweist, durch Multiplizieren von jedem des iM-Werts, des jM-Werts und des kM-Werts mit 65.536 in ganzzahlige Werte, was einen iF-Wert, einen jF-Wert und einen kF-Wert ergibt;
  • (f) Ableiten (516) eines nächsten invers transfor­ mierten Abtastpunkts entlang des Strahls (814) durch Addieren des iF-Werts zu dem x-Koordinaten­ wert, Addieren des jF-Werts zu dem y-Koordinaten­ wert und Addieren des kF-Werts zu dem z-Koordina­ tenwert;
  • (g) Wiederholen der Schritte (d2) und (d6) für den nächsten invers transformierten Abtastpunkt;
  • (h) Wiederholen der Schritte (f) und (g), bis alle nächsten invers transformierten Abtastpunkte ent­ lang des Strahls (814) verarbeitet wurden; und
  • (i) Erhalten (222) eines nächsten Anfangsbestimmungs­ raumvoxels eines nächsten Strahls und Wiederholen der Schritte (a) bis (h) bis alle nächsten Strah­ len verarbeitet wurden.
9. The method of claim 2, further comprising the steps (e), (f), (g), (h) and (i):
  • (e) converting ( 204 ) a z-vector component of the inverse transformation matrix, the z-vector component having an iM value, a jM value and a kM value by multiplying each of the iM value, the jM value and the kM value with 65,536 in integer values, which results in an iF value, a jF value and a kF value;
  • (f) deriving ( 516 ) a next inversely transformed sampling point along the beam ( 814 ) by adding the iF value to the x coordinate value, adding the jF value to the y coordinate value and adding the kF value to the z coordinate value;
  • (g) repeating steps (d2) and (d6) for the next inversely transformed sampling point;
  • (h) repeating steps (f) and (g) until all next inversely transformed sample points along the beam ( 814 ) have been processed; and
  • (i) obtaining ( 222 ) a next initial determination space voxel of a next ray and repeating steps (a) through (h) until all next rays have been processed.
10. Verfahren gemäß Anspruch 1, bei dem der Schritt (d5) ferner folgenden Schritt (d6) aufweist:
  • (d6) Zusammensetzen (408) des Werts für den invers transformierten Abtastpunkt (918).
10. The method of claim 1, wherein step (d5) further comprises step (d6):
  • (d6) Composing ( 408 ) the value for the inversely transformed sampling point ( 918 ).
DE1998106986 1997-05-30 1998-02-19 Fixed point method for fast and precise three-dimensional spatial transformations Withdrawn DE19806986A1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US86685997A 1997-05-30 1997-05-30

Publications (1)

Publication Number Publication Date
DE19806986A1 true DE19806986A1 (en) 1998-12-03

Family

ID=25348583

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1998106986 Withdrawn DE19806986A1 (en) 1997-05-30 1998-02-19 Fixed point method for fast and precise three-dimensional spatial transformations

Country Status (3)

Country Link
JP (1) JPH117542A (en)
DE (1) DE19806986A1 (en)
GB (1) GB2325837B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7822289B2 (en) 2006-07-25 2010-10-26 Microsoft Corporation Locally adapted hierarchical basis preconditioning
JP6418344B1 (en) * 2018-02-23 2018-11-07 大日本印刷株式会社 Computer program, image processing apparatus, and image processing method

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2270243B (en) * 1992-08-26 1996-02-28 Namco Ltd Image synthesizing system
US5519401A (en) * 1993-11-01 1996-05-21 Loral Corporation Programmed radar coordinate scan conversion

Also Published As

Publication number Publication date
GB9810152D0 (en) 1998-07-08
GB2325837B (en) 2001-08-15
JPH117542A (en) 1999-01-12
GB2325837A (en) 1998-12-02

Similar Documents

Publication Publication Date Title
DE19807053B4 (en) Beam transformation method for rapid volume preparation for perspective viewing
DE69811050T2 (en) Reconstruction method, device and decoding system for three-dimensional scenes.
DE69129712T2 (en) Workspace displays
DE68927471T2 (en) Process for shading a graphic image
DE69406306T2 (en) METHOD FOR SCALING AND FILTERING WITH DISCRETE COSINUS TRANSFORMATION
DE69830767T2 (en) Method and apparatus for assembling layered synthetic graphic filters
DE69014392T2 (en) Drawing method with a computer.
DE69301308T2 (en) IMAGE TEXTURING SYSTEM WITH THEME CELLS.
DE69428491T2 (en) image lens
DE69224499T2 (en) Three-dimensional graphic processing
DE3689271T2 (en) Image display procedure.
DE3650129T2 (en) Edge smoothing method for computer imaging system.
DE19646194B4 (en) Real-time rendering method for selectively performing bump mapping and phong shading processes and associated apparatus
DE19807013B4 (en) Volumetric pre-truncation method that ensures a minimum number of sample points by one volume
DE69716877T2 (en) System and method for accurate gradient calculation for texture mapping in a computer graphics system
DE68923227T2 (en) Vector to raster conversion process.
DE69428482T2 (en) Image processing method and apparatus
DE69423129T2 (en) System and method for displaying curves
DE3022454A1 (en) OPTICAL IMAGE SYSTEM WITH COMPUTER GENERATED IMAGE FOR A FLOOR-RESISTANT FLIGHT SIMULATOR
DE69120407T2 (en) IMAGE GENERATOR
DE19713654B4 (en) Progressive outline script and method for generating, transmitting and displaying the same
DE19806985B4 (en) Volumetric data organization method that enables efficient cache rendering accelerations and efficient graphics hardware design
DE69331419T2 (en) Image data processing
DE69427809T2 (en) Device and method for graphic display
DE69130958T2 (en) GRAPHIC EXIT SYSTEM AND METHOD.

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: HEWLETT-PACKARD CO. (N.D.GES.D.STAATES DELAWARE),

8130 Withdrawal