DE19806986A1 - Fixed point method for fast and precise three-dimensional spatial transformations - Google Patents
Fixed point method for fast and precise three-dimensional spatial transformationsInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric 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)
- (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.
- (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.
- (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.
- (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.
- (a1) Erzeugen (202) einer y-Richtung-Nachschlagtabelle und einer z-Richtung-Nachschlagtabelle.
- (a1) Generate ( 202 ) a y-direction look-up table and a z-direction look-up table.
- (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).
- (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 ).
- (d4a) Bestimmen (406) eines nächstliegenden Nachbar quellenraumvoxels durch das Zugreifen auf die y-Richtung-Nachschlagtabelle und die z-Richtung- Nachschlagtabelle.
- (d4a) determining ( 406 ) a closest neighbor source space voxel by accessing the y-direction look-up table and the z-direction look-up table.
- (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.
- (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.
- (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.
- (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.
- (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.
- (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.
- (d6) Zusammensetzen (408) des Werts für den invers transformierten Abtastpunkt (918).
- (d6) Composing ( 408 ) the value for the inversely transformed sampling point ( 918 ).
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)
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)
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 |
-
1998
- 1998-02-19 DE DE1998106986 patent/DE19806986A1/en not_active Withdrawn
- 1998-05-12 GB GB9810152A patent/GB2325837B/en not_active Expired - Fee Related
- 1998-05-28 JP JP10147410A patent/JPH117542A/en active Pending
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 |