A portion of the disclosure of this document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawings that form a part of this document: Copyright 2003, Vital Images, Inc. All Rights Reserved.
This document pertains generally to computerized systems and methods for processing and displaying three dimensional imaging data, and more particularly, but not by way of limitation, to computerized systems and methods for segmented volume rendering using a programmable graphics pipeline.
Because of the increasingly fast processing power of modern-day computers, users have turned to computers to assist them in the examination and analysis of images of real-world data. For example, within the medical community, radiologists and other professionals who once examined x-rays hung on a light screen now use computers to examine volume data obtained using various technologies. Such technologies include imaging devices such as ultrasound, computed tomography (CT), magnetic resonance (MR), positron emission tomography (PET), single photon emission computed tomography (SPECT), and other such image acquisition technologies. Many more image acquisition techniques, technologies, and devices will likely arise as medical imaging technology evolves.
Each of these imaging procedures uses its particular technology to generate volume data. For example, CT uses an x-ray source that rapidly rotates around a patient. This typically obtains hundreds or thousands of electronically stored pictures of the patient. As another example, MR uses radio-frequency waves to cause hydrogen atoms in the water content of a patient's body to move and release energy, which is then detected and translated into an image. Because each of these techniques records data from inside the body of a patient to obtain and reconstruct data, and because the body is three-dimensional, the resulting data represents a three-dimensional image, or volume. In particular, CT and MR both typically provide three-dimensional (3D) data.
3D representations of imaged structures have typically been produced through the use of techniques such as surface rendering and other geometric-based techniques. Because of known deficiencies of such techniques, volume-rendering techniques have been developed as a more accurate way to render images based on real-world data. Volume rendering is a direct representation of a three-dimensional data set. However, volume rendering typically uses and processes a huge amount of volumetric data. Because of the huge amount of data involved, efficient storage and processing techniques are needed to provide a useful tool for the user.
One technique for processing the large amount of data includes segmenting the data into segmentation regions (also referred to as “segments”) that are of interest to the user. Segmenting data is useful both from a user perspective and a system perspective. From a user perspective, segmenting data narrows the amount of data to be viewed by the user to a subset that is of particular interest to the user. In addition, segmentation can also be used to highlight specific anatomical regions in a dataset, for example, by assigning different coloring schemes or rendering algorithms to individual segments. From a system perspective, data segmentation can reduce the amount of data that undergoes further processing, storage, and display. This increases the system's efficiency, which, in turn, increases the speed at which useful images can be provided to the user. There exist many data segmentation techniques that accommodate various structures of interest in the volumetric data. There is a need to provide volume rendering techniques that efficiently use the segmented data to accurately produce rendered 3D representations of imaged structures.
In the drawings, which are not necessarily drawn to scale, like numerals describe substantially similar components throughout the several views. Like numerals having different letter suffixes represent different instances of substantially similar components. The drawings illustrate generally, by way of example, but not by way of limitation, various embodiments discussed in the present document.
In the following detailed description, reference is made to the accompanying drawings which form a part hereof, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. These embodiments, which are also referred to herein as “examples,” are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that the embodiments may be combined, or that other embodiments may be utilized and that structural, logical and electrical changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims and their equivalents.
In this document, the terms “a” or “an” are used, as is common in patent documents, to include one or more than one. In this document, the term “or” is used to refer to a nonexclusive or, unless otherwise indicated. Furthermore, all publications, patents, and patent documents referred to in this document are incorporated by reference herein in their entirety, as though individually incorporated by reference. In the event of inconsistent usages between this documents and those documents so incorporated by reference, the usage in the incorporated reference(s) should be considered supplementary to that of this document; for irreconcilable inconsistencies, the usage in this document controls.
Some portions of the detailed descriptions which follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the ways used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussions, terms such as “processing” or “computing” or “calculating” or “determining” or “displaying ” or the like, refer to the action and processes of a computer system, or similar computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
System Environment Overview
The imaging device 102 outputs volumetric (3 dimensional) imaging data. The 3D imaging data is provided as a rectilinear array of volume elements called voxels. Each voxel has an associated intensity value, referred to as a gray value. The different intensity values provide imaging information. For example, for CT images, the different intensity values represent the different densities of the underlying structures being imaged. For example, bone voxel values typically exceed 600 Hounsfield units, tissue voxel values are typically less than 100 Hounsfield units, and contrast-enhanced blood vessel voxel values fall somewhere between that of tissue and bone.
Hardware Environment Overview
In the example of
In this example, one or more computer processors 108 are coupled to the memory device 104 through the communications link 106 or otherwise. The processor 108 is capable of accessing the volumetric data that is stored in the memory device 104. The processor 108 executes a segmentation algorithm that classifies each of the individual voxels from the volumetric dataset into identifies imaging data voxels pertaining to one or more segments of interest. The term “segmenting” refers to separating the volumetric data associated with a particular property from other volumetric data. In one illustrative example, but not by way of limitation, the data segmentation algorithm identifies and labels voxels associated with vessels or other tubular structures. Then, segmented volume rendering creates a visual depiction using the voxels that were segmented into one or more segmentation regions. The visual depiction is displayed, such as on a computer monitor screen or other two-dimensional planar display.
In one example, the system 100 optionally includes one or more local user interfaces 110A, which are locally coupled to the processor 108, and/or optionally includes one or more remote user interfaces 110B-N, which are remotely coupled to the processor 108, such as by using the communications link 106. Thus, in one example, the user interface 110A and the processor 108 form an integrated imaging visualization system 100. In another example, the imaging visualization system 100 implements a client-server architecture with the processor(s) 108 acting as a server for processing the volumetric data for visualization, and communicating graphic display data over the at least one communications link 106 for display on one or more of the remote user interfaces 110B-N. In either example, the user interface 110 includes one or more user input devices (such as a keyboard, mouse, web browser, etc.) for interactively controlling the data segmentation and/or volume rendering being performed by the processor(s) 108 and the graphics data being displayed.
Hardware Environment Example
The system 300 includes software 310 operable on the processor 304 to obtain volumetric (3D) data, comprising voxels, such as from one or more of a networked or hardwired medical imaging device 102, a networked data repository 104 (such as a computer database), a computer readable medium 342 readable by a media reader 326 coupled to the bus 312, and/or a hard drive 314 internal or external to the computer 108.
The software 310 is further operable on the processor 304 to execute a segmentation algorithm to classify the 3D data into separate objects of interest. The result of this segmentation algorithm is a segmentation mask that can have an arbitrary number of objects. In the segmentation mask, each voxel is associated with only one object. This process is also referred to herein as segmenting a volume dataset into one or more regions of interest.
In one example, the software 310 sends the volumetric data, the segmentation mask, a multichannel transfer function table, and a fragment program over the bus 312 to the video card 316. The transfer function table includes a separate channel corresponding to each segmentation region.
The fragment program is operable on the video card 316 to process sample points within the volumetric data. Operating the fragment program on the video card 316 also derives segmentation weights using trilinear interpolation for each individual sample point value. The fragment program also multiplies a visualization value from each transfer function channel by its corresponding segmentation weight to obtain a contribution of each transfer function channel to a final composite fragment value. Fragment values are aggregated to form a final composite image output from the video output port 324, such for display, storage, or archiving.
In one example, the computer 108 includes a network interface card (NIC) 328. The NIC 328 may include a readily available 10/100 Ethernet compatible card or a higher speed network card such as a gigabit Ethernet or fiber optic enabled card. Other examples include wireless network cards that operate at one or more transmission speeds, or multiple NICs 328 to increase the speed at which data can be exchanged over a network 106.
In another example, the computer 108 includes at least one port 327. Examples of the port(s) 327, include a Universal Serial Bus (USB) port, an I.E.E.E. 1394 enabled ports, a serial port, an infrared port, audio ports, and/or any other input or output port 327. The port 327 is capable connection with one or more devices 329. Examples of device(s) 329 include a keyboard, a mouse, a camera, a pen computing device, a printer, a speaker, a USB or other connection type enabled network card, a video capture device, a video display device, a storage device, a Personal Digital Assistant (PDA), or the like.
The software 310 may be available to the system 300 from various locations, such as a memory 310, a hard disk 314, a computer readable medium 342, a network 106 location, the internet, or any other such location that a computer 108 executing the software 310 has access to.
Video Card Hardware Example
The video card 316 is capable of producing 3D images. Because the video card 316 is programmable, a fragment (or other) program can be executed on the video card 316 for performing custom processing.
In general, a video card typically operates by drawing geometric primitives in 3D (such as triangles defined by three vertices). A rasterizer projects the geometric primitives into a 2D frame buffer for eventual display. The frame buffer includes a 2D array of pixels. The rasterization determines which pixels are altered by the projected triangle. For example, if the triangle is red, the rasterization turns all of the pixels under the projected triangle red. This causes a red triangle to be displayed on the screen. However, for each pixel that is covered by the projected triangle, the video card can do more calculations to compute the color and other characteristics of those pixels. For instance, instead of just having a red triangle, the triangle may include a red vertex, blue vertex, and a green vertex. The video card is capable of processing the colors of the triangle to provide a smooth blend of colors across the triangle. The triangle can be further processed using texture maps. A texture map essentially pastes a 2D image onto a surface of a triangle. This technique is typical in video games, such as to give walls certain appearances such as brick or stone and also to give characters faces and clothing.
The VPU 402 processes 3D vertices of triangles or like geometric primitives. The VPU 402 typically independently manipulates the vertex positions of these geometric primitives. However, the VPU 402 can also be used manipulate additional attributes or data associated with a vertex, such as 3D texture index coordinates (e.g., (x, y, z) coordinates) for indexing a 3D position of a voxel within a volumetric intensity dataset or a corresponding segmentation mask volume.
The rasterizer 404 receives data output from the VPU 402. The rasterizer 404 rasterizes the geometric primitive to determine which pixels on a display 202 of the output device 202 are contributed to by the geometric primitive. This information is output to the FPU 406. The FPU 406 executes one or more fragment programs, as discussed above. The fragment programs are received from the video memory 320, along with 3D intensity data and segmentation mask volume data and a multichannel transfer function table. The FPU 406 outputs fragments to a blending unit 408. The blending unit 408 combines multiple layers of fragments into a pixel that is stored in the frame buffer 410.
Image Acquisition, Rendering and Visualization Overview
At 512, a user performs hand-drawn sculpting, such as by using the mouse 206 to draw an ellipse or curve on the displayed 3D view. This is projected through the volumetric data. A resulting cone or like 3D shape is formed, which can be used to specify a desired segmentation of data inside (or, alternatively, outside) the cone or like 3D shape. This produces a segmentation mask at 514. Segmentation may also involve a combination of hand-drawn sculpting at 512 and performing an automated segmentation algorithm at 510.
After the segmentation mask is produced at 514, the segmented data is redisplayed at 504. In one example, the act of displaying the segmented data at 504 includes displaying the segmented data (e.g., with color highlighting or other emphasis) along with the non-segmented data. In another example, the act of displaying the segmented data at 504 includes displaying only the segmented data (e.g., hiding the non-segmented data). In a further example, whether the segmented data is displayed alone or together with the non-segmented data is a parameter that is user-selectable, such as by using a web browser or other user input device portion of the user interface 110.
After the segmentation mask is produced at 514, the then-current segmentation mask can be archived, such as to a memory device 104. The archived segmentation mask(s) can then later be restored, if desired.
Volume Rendering Overview
At 606, the interpolated intensity value for the sample point is used to calculate the visualization values to be assigned to the sample point. This calculation is performed for each of the segmented regions contained in the segmentation mask. In one example, there is a separate transfer function that is received at 608 for each of the segmented regions. The interpolated intensity value then serves as an index into the individual transfer functions that are received at 608. Therefore, using the intensity value as an index, and with each transfer function contributing a separate RGBA visualization value, a particular sample point obtains a number of RGBA. The number of the RGBA visualization values corresponds to the number of segmentation regions.
At 610, a segmentation mask for the sample point is interpolated (or otherwise computed) using segmentation mask volume data that is received at 612. The segmentation mask volume data includes a segmentation mask vector assigned to each voxel that defines which one of the segmentation regions the voxel was segmented into. Again, because the sample points do not necessarily exhibit a one-to-one correspondence to the voxels, interpolation (or a like filtering or combination technique) is performed. At 610, the interpolation yields segmentation weights for the sample point. The segmentation weights indicate to which degree a particular sample point belongs to the various sample regions (thus, although a voxel belongs to a single segmentation region, a sample point can belong to more than one segmentation region, to varying degrees). The segmentation mask value of voxels that are closer to the sample point affect the segmentation weights assigned to the sample point more than the segmentation mask values of voxels that are more distant from the sample point.
At 614, each segmentation weight is multiplied by the corresponding RGBA visualization value obtained from the corresponding transfer function. At 616, these products are summed to produce an output value for this fragment. The operations at 614 and 616 may be combined into a single “multiply-and-accumulate” operation, as is typically available on a digital signal processing (DSP) oriented processor, and are illustrated separately in
In one example, the interpolation (e.g., at 602 and 610) uses a command in the fragment program that is native to the video card 316 to cause a trilinear interpolation to occur. For example, in the OpenGL ARB_FRAGMENT_PROGRAM extension a “TEX” command with a “3D” parameter causes the video card to perform a texture lookup with a trilinear interpolation as part of the lookup, assuming that the OpenGL state was previously configured for trilinear interpolation. The output of such a command includes results that are trilinearly interpolated. However, the trilinear interpolation need not be performed using a native video card command. A trilinear interpolation can be included in the code of the fragment program itself. An example of a trilinear interpolation algorithm in pseudo code is as follows:
An example of a portion of a fragment program in the OpenGL ARB_FRAGMENT_PROGRAM syntax as described above is as follows:
The fragment program resides in the video card memory, but is supplied by the application. The volumetric data may be sent, at 604, in various forms. In one example, the volumetric data is sent as 8-bit unsigned values. In another example, the volumetric data is sent as 16-bit unsigned values. The segmentation mask can be sent at 612 in various forms. In one example, the format is RGBA2, which is an 8-bit format where each of the Red, Blue, Green, and Alpha components use two bits. In another example, the format is RGBA4, a 16-bit format where each of the color components uses 4 bits. In a third example, the format is a compressed texture format that uses one bit per color component. In a fourth example, the format at 612 depends on the number of segmentation regions that are present in predefined subregions of the volume. If only one segmentation region is present in the subregion, it is not necessary to associate segmentation mask volume for the voxels in that subregion because all samples will belong to the same segmentation region.
This conceptualization of volume rendering uses various rays 705. Each ray 705 is drawn from the virtual eye position 704 through the center of each pixel (e.g., center of a pixel 703) on the screen 702. The rays 705 extend toward the voxel array 700. Some of the rays 705 pass through the voxel array 700. Each voxel through which a ray 705 passes makes a contribution toward the visual characteristics of the pixel 703 corresponding to that particular ray 705. This use of rays 705 is generally known as ray-casting. However, this is only one approach to volume rendering. The present systems and methods are also applicable to other rendering approaches. An example of another such rendering approach used by the present systems and methods includes object-order rendering using texture compositing.
Each voxel point 802 includes an intensity value (also referred to as a gray value) that defines the intensity of that voxel point 802. Each voxel point 802 also includes a segmentation mask vector that defines which one of the mutually exclusive segmentation regions to which that particular voxel point 802 belongs. Because the sample points 706 do not necessarily coincide with the voxel points 802, the fragment program is used to calculate (e.g., using trilinear interpolation) the intensity (i.e., gray level) contribution of each of the voxel points 802 in the neighborhood box 800 to a particular sample point 706, such as the sample point 706D. For example, a sample point 706 that is located closer to one corner of the neighborhood box 800 will receive a greater intensity contribution from that nearby corner's voxel point 802 than from more distant voxel points 802 in the neighborhood box 800. The programmable video card graphics pipeline also combines the resulting sample point 706 fragment results on a particular ray 705. This produces an aggregate RGBA value for the pixel corresponding to that particular ray 705.
Although, in
As an illustrative example, suppose that Segmentation Region 0 includes segmented voxel data that was deemed “uninteresting” by a segmentation algorithm or manually. Also suppose that Segmentation Region 1 includes segmented voxel data that a segmentation algorithm deemed to be associated with vessels in the imaged structure, which are of particular interest to a user. This might be the case, for example, in an application in which a cardiologist is interested in assessing the degree of stenosis in a coronary blood vessel, for example. (Alternatively, segmentation may be used for segregating voxel data associated with another tubular structure, such as a colon, or another organ, such as a liver, etc.) Continuing with the coronary vessels illustrative example, suppose that Segmentation Region 2 includes segmented voxel data that a segmentation algorithm deemed to be associated with a heart (other than blood vessels associated with the heart, which would be in Segmentation Region 1).
In one example, each transfer function 900 is represented by a mathematical function that calculates visualization values for a given input intensity value and/or other values (e.g., gradient, magnitude, etc.). As an example, such a function may be implemented as additional instructions within the same fragment program as described above.
In this example, each transfer function 900 includes an array of N visualization values. The number N of visualization values in each array typically derives from the resolution of the voxel intensity values of the acquired imaging dataset. In one example, each voxel intensity value is represented as a 16-bit unsigned integer. This yields N=216=65,536 possible different intensity levels for each voxel. Therefore, in this example, each transfer function array includes 65,536 elements. Another example provides that, for the same 65,536 possible different intensity levels for each voxel each transfer function array includes only 211=2,048 different entries. Thus, in this example, the transfer function table is compressed; one transfer function table entry can correspond to multiple intensity values.
Another example uses 2D transfer function tables, as in pre-integrated volume rendering. In such a 2D table, one axis represents the sampled point intensity value going into a thin slab of volumetric data along a ray, and the other axis represents the sampled point intensity value coming out of the thin volumetric slab. Another example uses N-dimensional transfer function tables that are indexed by various multiple values including intensity, gradient magnitude, etc.
One technique represents the visualization values as RGBA values (each RGBA value is itself a vector that includes 4 elements, each element describing a respective one of a Red color level, a Green color level, a Blue color level, and an Opacity (or, its inverse, Transparency) level). A particular voxel's intensity value is used as an index 1002 (described further with respect to
In the illustrative example of
In this same example, the transfer function 900B maps every intensity level of the “blood vessel” data of Segmentation Region 1 to an opaque red RGBA value. An opaque red RGBA value is specified by the RGBA vector (1, 0, 0, 1). Since every intensity level is being mapped to opaque red for Segmentation Region 1, each element in the array of the transfer function 900B contains the opaque red RGBA vector (1, 0, 0, 1).
In this same example, the transfer function 900C maps various different intensity levels of the “heart” data of Segmentation Region 2 to various different RGBA values. In this illustrative example (which corresponds to a CT imaging example), low intensity levels corresponding to low density air (such as contained in voxels corresponding to the nearby lungs) are mapped to a transparent RGBA value of (0, 0, 0, 0). Similarly, in this example, the slightly higher intensity levels of slightly higher density skin are mapped to a partially transparent tan RGBA value of (1, 0.8, 0.4, 0.4). The even slightly higher intensity levels of even slightly higher density tissue are mapped to a partially transparent red RGBA value of (1, 0.2, 0.2, 0.4). The even higher intensity levels of even higher density bone are mapped to an opaque white RGBA value of (1, 1, 1, 1). An ultra high intensity level of ultra high density metal (e.g., an implanted pacemaker lead, etc.) is mapped to an opaque gray RGBA value of (0.7, 0.7, 0.7, 1). In this fashion, the segmented heart data will have different visual characteristics for different structures within the segmented heart data.
In
The exemplary data format 1102 illustrates storing a segmentation mask vector having four channels of 4-bit segmentation data, such as where it is convenient to do so. A voxel in Segmentation Region 0 has only the first element (i.e., Segmentation Region 0 weight 1007A) asserted, yielding a segmentation vector 1004A that is characterized by a bit string of “1111 0000 0000 0000.” A voxel in Segmentation Region 1 has only the second element (i.e., Segmentation Region 1 weight 1007B) asserted, yielding a segmentation vector that is characterized by a bit string of “0000 1111 0000 0000.” A voxel in Segmentation Region 2 has only the third element (i.e., Segmentation Region 2 weight 1007C) asserted, yielding a segmentation vector 1004C that is characterized by a bit string of “0000 0000 1111 0000.” Since there are only three segmentation regions, in this example, the fourth field (i.e., 1007D) of the segmentation vector 1004 is not used.
The exemplary data format 1104 illustrates storing each RGBA visualization data value 1008 as 32 bits. For example, a completely white opaque RGBA value 1008D is stored as the bit string “1111 1111 1111 1111 1111 1111 1111 1111.” A completely red opaque RGBA value 1008E is stored as the bit string “1111 1111 0000 0000 0000 0000 1111 1111.” A completely invisible RGBA value 1008F is stored as the bit string “0000 0000 0000 0000 0000 0000 0000 0000.” A semi-transparent pink RGBA value 1008G is stored as the bit string “1111 1001 1010 1001 1100 1011 1000 1100.”
Although the examples discussed above have focused on medical imaging, the present systems and methods will find many other applications. For example, such systems and methods could also be implemented in a video game or other system that includes rendering of volumetric data, such as that describing smoke, clouds, or other volumetric phenomenon.
Among other things, the present systems and methods are both storage and computationally efficient on commodity video cards and graphics programming APIs. These systems and methods allow for lower cost volumetric data image rendering systems while providing higher resolution images.
Among other things, the present systems and methods leverage the computational efficiency of commodity programmable video cards to determine accurately subsampled partial contribution weights of multiple segmented data regions to allow correct per-fragment contributions of segment-specific characteristics such as color and opacity suitable for applications including volume rendering.
It is to be understood that the above description is intended to be illustrative, and not restrictive. For example, the above-described examples (and/or aspects thereof) may be used in combination with each other. Many other examples will be apparent to those of skill in the art upon reviewing the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. Functions described or claimed in this document may be performed by any means, including, but not limited to, the particular structures described in the specification of this document. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein.” Moreover, in the following claims, the terms “first,” “second,” and “third,” etc. are used merely as labels, and are not intended to impose numerical requirements on their objects.
This application claims priority to U.S. Provisional Application No. 60/525,791, filed Nov. 29, 2003 which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60525791 | Nov 2003 | US |