Skip to main content
Log in

A Novel Method for Visualization of Entire Coronary Arterial Tree

  • Published:
Annals of Biomedical Engineering Aims and scope Submit manuscript

Abstract

The complexity of the coronary circulation especially in the deep layers largely evades experimental investigations. Hence, virtual/computational models depicting structure-function relation of the entire coronary vasculature including the deep layer are imperative. In order to interpret such anatomically based models, fast and efficient visualization algorithms are essential. The complexity of such models, which include vessels from the large proximal coronary arteries and veins down to the capillary level (3 orders of magnitude difference in diameter), is a challenging visualization problem since the resulting geometrical representation consists of millions of vessel segments. In this study, a novel method for rendering the entire porcine coronary arterial tree down to the first segments of capillaries interactively is described which employs geometry reduction and occlusion culling techniques. Due to the tree-shaped nature of the vasculature, these techniques exploit the geometrical topology of the object to achieve a faster rendering speed while still handling the full complexity of the data. We found a significant increase in performance combined with a more accurate, gap-less representation of the vessel segments resulting in a more interactive visualization and analysis tool for the entire coronary arterial tree. The proposed techniques can also be applied to similar data structures, such as neuronal trees, airway structures, bile ducts, and other tree-like structures. The utility and future applications of the proposed algorithms are explored.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Institutional subscriptions

Figure 1.
Figure 2.
Figure 3.
Figure 4.
Figure 5.
Figure 6.
Figure 7.

Similar content being viewed by others

References

  1. Andujar, C., C. Saona-Vazquez, I. Navazo and P. Brunet. Integrating occlusion culling and levels of details through hardly-visible sets. Computer Graphics Forum 19(3), 2000

  2. Bartz D., Meißner M., Hüttner T. 1999 OpenGL-assisted occlusion culling for large polygonal models. Computers Graphics 23(5):667–679

    Article  Google Scholar 

  3. Cohen-Or D., Chrysanthou Y., Silva C. T., Durand F. 2003 A survey of visibility for walkthrough applications. IEEE Trans. Visualization Computer Graphics 9(3):412–431

    Article  Google Scholar 

  4. Deussen O., Colditz C., Stamminger M., Drettakis G. 2002 Interactive Visualization of Complex Plant Ecosystems. IEEE Visualization 2002:219–226

    Google Scholar 

  5. El-Sana, J and A. Varshney. Generalized view-dependent simplification. In P. Brunet & R. Scopigno (eds.) Computer Graphics Forum (Eurographics 99), Vol. 18(3). The Eurographics Association and Blackwell Publishers: 83–94, 1999

  6. El-Sana J., Sokolovsky, C. T. Silva. 2001 Integrated occlusion culling with view-dependent rendering. IEEE Visualization 2001:371–378, 2001

  7. El-Sana J., Bachmat E. 2002 Optimized view-dependent rendering for large polygonial datasets. IEEE Visualization 2002:77–84 IEEE Computer Society

    Google Scholar 

  8. Felkel, P, A. L. Fuhrmann, A. Kanitasar, and R. Wegenkittel. Surface reconstruction of the branching vessels for augmented reality aided surgery, BIOSIGNAL, Vol. 1, VUTIUM Press: 252–254, 2002

  9. Gerig, G., T. Koller, G. Széhely, C. Brechbühler, O. Kübler. Symbolic description of 3-D structures applied to cerebral vessel tree obtained from MR angiography volume data, Information Processing in Medical Imaging, Springer, LNCS: 94–111, 1993

  10. Greene N. 1996 Hierarchical polygon tiling with coverage masks. ACM SIGGRAPH 1996:65–74

    Google Scholar 

  11. Gumhold, S. Splatting Illuminated Ellipsoids with Depth Correction. In Proceedings of 8th International Fall Workshop on Vision, Modelling and Visualization 2003: 245–252, 2003

  12. Hahn H. K., Preim B., Selle D., Peitgen H. O. 2001 Visualization and interaction techniques for the exploration of vascular structures. In IEEE Visualization 2001:395–402 IEEE, IEEE Computer Society Press

    Google Scholar 

  13. Hoppe H. 1996 Progressive meshes. ACM SIGGRAPH 1996:99–108

    Google Scholar 

  14. Hoppe H. 1998 Efficient implementation of progressive meshes. Computers Graphics, 22(1):27–36 ISSN 0097–8493

    Article  Google Scholar 

  15. Kaimovitz B., Lanir Y., Kassab G. S. 2005 Large-Scale 3-D Geometric Reconstruction of the Porcine Coronary Arterial Vasculature Based on Detailed Anatomical Data. Ann. Biomed. Eng. 33(11):1517–1535

    Article  PubMed  Google Scholar 

  16. Kassab G. S., Rider C. A., Tang N. J., Fung Y. C. 1993 Morphometry of pig coronary arterial trees. Am. J. Physiol. 265(Heart Circ. Physiol. 34):H350–H365

    PubMed  CAS  Google Scholar 

  17. Klosowski J. T., Silva C. T. 2001 Efficient conservative visibility culling using the prioritized-layered projection algorithm. IEEE Trans. Visualization Computer Graphics 7(4):365–379

    Article  Google Scholar 

  18. Linsen L., Karis B. J., McPherson E. G., Hamann B. 2005 Tree Growth Visualization. J. WSCG 13:81–88

    Google Scholar 

  19. Masutani, Y., K. Masamune and T. Dohi. Region-growing-based feature extraction algorithm for tree-like objects. Visualization in Biomedical Computing, Springer, LNCS: 161–171, 1996

  20. Nordsletten D. A., Blackett S., Bentley M. D., Ritman E. L., Smith N. P. 2006 Structural Morphology of Renal Vasculature. Am. J. Physiol. Heart Circ. Physiol. 291: H296–H309

    Article  PubMed  CAS  Google Scholar 

  21. Oeltze, S., B. Preim. Visualization of Anatomic Tree Structures with Convolution Surfaces, IEEE/Eurographics Symposium on Visualization: 311–320, 2004

  22. Oeltze S., Preim B. 2005 Visualization of Vasculature with Convolution Surfaces: Method, Validation and Evaluation. IEEE Trans. Medical Imaging 24(4):540–548

    Article  Google Scholar 

  23. Pajarola, R. FastMesh: efficient view-dependent meshing. In B. Werner (ed.) Proceedings of the ninth Pacific Conference on Computer Graphics and Applications (PACIFIC GRAPHICS-01). IEEE Computer Society, Los Alamitos, CA, Oct. 16–18: 22–30, 2001

  24. Puig A., Tost D., Navazo I. 1997 An interactive celebral blood vessel exploration system. IEEE Visualization 97:443–446

    Google Scholar 

  25. Reina, G. and T. Ertl. Hardware-Accelerated Glyphs for Mono- and Dipoles in Molecular Dynamics Visualization, Proceedings of EUROGRAPHICS – IEEE VGTC Symposium on Visualization 2005: 177–182, 2005

  26. Ritman E. L. 2004 Micro-computed tomography-current status and developments. Annu. Rev. Biomed. Eng. 6:185–208

    Article  PubMed  CAS  Google Scholar 

  27. Robb R. A. 2001 The Biomedical Imaging Resource at Mayo Clinic. Guest Editorial. IEEE Trans. Med. Imaging 20(9):854–867

    Article  PubMed  CAS  Google Scholar 

  28. Robb R. A., Barillot C. 1989 Interactive display and analysis of 3-D medical images. IEEE Trans Med Imaging 8(3):217–226

    Article  Google Scholar 

  29. Robb R. A., Hanson D., Karwoski R. A., Larson A. G., Workman E. L., Stacy M. C. 1989 ANALYZE: a comprehensive, operator-interactive software package for multidimensional medical image display and analysis. Computerized Med Imaging Graphics 13:433–454

    Article  CAS  Google Scholar 

  30. Segal, M. and K. Akeley. The OpenGL® Graphics System: A Specification (Version 2.0–October 22, 2004), http://www.opengl.org/documentation/specs/version2.0/glspec20.pdf

  31. Shaffer, E. and M. Garland. Efficient Adaptive Simplification of Massive Meshes. In IEEE Visualization 2001: 127–134, 2001

  32. Spaan J. A., ter Wee R., van Teeffelen J. W., Streekstra G., Siebes M., Kolyva C., Vink H., Fokkema D. S., VanBavel E. 2005 Visualization of intramural coronary vasculature by an imaging cryomicrotome suggests compartmentalization of myocardial perfusion areas. Med. Biol. Eng. Comput. 43(4):431–435

    Article  PubMed  CAS  Google Scholar 

  33. Stoll C., Gumhold S., Seidel H. 2005 Visualization with stylized line primitives. IEEE Visualization 2005:695–702

    Article  Google Scholar 

  34. Woo, M., J. Neider, and T. Davis. OpenGL Programming Guide. Addison Wesley, 3rd edn, 2003

  35. Xia J., El-Sana J., Varshney A. 1997 Adaptive real-time level-of-detail-based rendering for polygonial models. IEEE Trans. Visualization Computer Graphics 3(2):171–183

    Article  Google Scholar 

  36. Yoon, S. E., B. Salomon, and D. Manocha. Interactive view-dependent rendering with conservative occlusion culling in complex environments. IEEE Visualization 2003 Proceedings: 163–170, 2003

  37. Yoon, S. E., B. Salomon, R. Gayle, and D. Manocha. Quick-VDR: Interactive View-Dependent Rendering of Massive Models. In IEEE Visualization 2004 Proceedings: 131–138, 2004

  38. Zamir, M. Nonsymmetrical bifurcations in arterial branching. J. General Physiol. 72(6):837–845, 1978

    Google Scholar 

  39. Zhang H., Manocha D., Hudson T., Hoff III K. E. 1997 Visibility culling using hierarchical occlusion maps. Computer Graphics 31 (Annual Conference Series): 77–88

    Google Scholar 

Download references

Acknowledgments

The authors would like to thank Falko Kuester, UC Irvine, for providing the high-end PC system equipped with an Nvidia Quadro FX 4400. This work was supported in part by the National Institute of Health—National Heart, Lung, and Blood Institute Grant 2 R01 HL055554-06 (GSK), by the National Institute of Mental Health (NIMH) through a subcontract with the Center for Neuroscience at the University of California, Davis (5 P20 MH60975), by the National Partnership for Advanced Computational Infrastructure (NPACI), Interaction Environments (IE) Thrust (10195430 00120410).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Ghassan S. Kassab.

Appendix

Appendix

Rendering of Massive Tree-Like Structures

In order to analyze large-scale tree-like structures, appropriate visualization methods are necessary. Whenever the geometry data of such a structure exceed the amount of main memory of the computer, the application of several techniques to both be able to handle the data set as well as improve performance are required. This Appendix provides details about the data format and explains the different techniques that were applied to visualize the data on common desktop computers.

Visualizing Tree-Like Structures

The structure is given as a sequence of consecutive segments where one segment can have multiple daughter vessels (mostly two as bifurcations) as successors, forming a tree-shaped structure with a highly asymmetric branching pattern. Each segment in the tree is characterized by the coordinates and radii of its proximal and distal nodes. This data format is similar to the one provided by commercial software packages, such as Analyze.27,28,29 Since the radii of two consecutive nodes are not necessarily equal, a conic cylinder is defined based on the data representing each segment. All conic cylinders together then define a representation of the vasculature as prescribed by the model. For a coronary arterial tree, there exist three major branches in the data set representing the RCA, LAD and LCx arterial tree, respectively. Every branch includes a complete set of linked vessel segments from the macrovasculature down to the first capillary bifurcation.

In order to generate a visual representation of the vascular tree, OpenGL and computer graphics techniques are used. In computer graphics, a camera analogy is followed similar to taking a photograph. A virtual camera is placed next to the objects, in this case the arterial tree. The orientation of the camera identifies the view direction, while the view direction combined with the location of the camera define the view. Using this definition of a view, all objects are then projected onto a virtual image plane. One can think of this image plane as the film inside the camera that was just defined. This projected image is then displayed on the computer screen. Consequently, the view as defined here identifies exactly what parts of the objects are displayed on the computer screen.

Figure 8 shows an illustration of this configuration. Since current graphics hardware does not support the display of complex objects, simple, more universal primitives have to be used. Due to its universal nature, triangles are the most common primitives in computer graphics since every complex object can be approximated using a set of triangles. As can be seen in Fig. 8, the conic cylinders that are used to represent the arterial tree are broken down into a series of triangles as well. The triangles are arranged in such a way that they approximate a conic cylinder; i.e., two of the edges of each triangle run along the main direction of the conic cylinder while one edge is parallel to one of the end caps of the cylinders. Hence, circles are computed at the transition between vessel segments in a first step. Since cylindrical arteries are considered, these circles are perfectly round. The circles are connected along each vessel segment using triangles to approximate the conic cylinder. For this, the circles are approximated by a series of points by computing a fixed number of points at equidistant locations along the circle. A set of two points (one on the circle at the one end of the cylinder, the second on the opposite side) are then selected in such a way that they form the closest distance. This forms the first edge of the first triangle. By connecting the next points following the discretization of the circles in an alternating fashion, triangles are formed that approximate the conic cylinders. Figure 8 illustrates this by showing a sample triangle imposed on one of the conic cylinders.

Figure 8.
figure 8

Interface between two successive vessel segments shown as conic cylinders which consist of several triangles. Camera and view direction are also shown.

To increase performance, OpenGL provides so-called triangle strips that require less data to be transferred to the graphics hardware for image display. In this case, instead of specifying all three vertices for all triangles, only the vertices for the first triangle need to be specified completely. For the subsquent triangles, only one vertex is specified and the last two vertices of the previous triangle are re-used, forming a new triangle that is directly connected to its predecessor. Since the triangles approximating a conic cylinder (and therefore a vessel segment) are all attached to each other, a triangle strip can be used to reduce the number of vertices that need to be specified. As an additional performance increase, OpenGL vertex arrays are used. Vertex arrays require less function calls and hence can be processed by the hardware more efficiently. To use OpenGL vertex arrays, all vertices for a single triangle strip are stored in a consecutive memory area. This memory area can be passed onto OpenGL in a single function call which results in drawing the entire triangle strip. Hence, an entire vessel segment is represented by one vertex array.

To achieve a smooth transition between consecutive vessel segments, the circle at the end of each cylinder is not necessarily orthogonal to the cylinder itself. Instead, these circles are created in such a way that the plane in which the circle resides divides the angle between the center-lines of the two consecutive conic cylinders into two equal halves (Fig. 8). Using this approach, the center lines of two subsequent segments can form an angle of up to 180 degrees (reverse direction). However, the most common angles in the coronary arterial tree are much smaller. Rotation of the cylinder ends as previously described does not change the way it is approximated by a triangle strip.

For the smallest of the three branches (LCx arterial tree), the number of triangles that is required for visualization of all 1.8 million vessel segments is 25 million triangles. The entire coronary tree consisting of 10 million vessel segments is represented by 220 million triangles based on a discretization of each conic cylinder using sixteen triangles. The conic cylinder representing each segment is approximated by a single triangle strip which is constructed as follows: the two ends of the conic cylinder are discretized using a maximum of eight points. These points are then connected with triangles. Using a point on each end alternately, this results in a triangle strip. At full resolution, this triangle strip consists of 16 triangles rendered by 18 vertices. Due to the size and detail of the data set, the geometry of the vascular structure requires representation of the coordinates of the vertices using 32-bit floating-point numbers. Lower-precision representations result in truncated positions of the vertices and therefore can change the overall geometry significantly. For correct illumination of the geometry, normal vectors are included using another set of three 32-bit floating point values. These normal vectors are required for computing the correct reflection of light on top of the conic cylinders used as geometric representation of the vascular structure. The normal vectors are computed for every vertex based on the original geometry (the conic cylinders). This yields significantly better results and achieves an additional depth cue and therefore a more realistic image. In this way, a user is much better able to recognize the 3-D geometry in less time even from a projected 2-D image. Overall, for representing 220 million triangles using vertex coordinates and normal vectors, about 6 GB of memory is required in order for the entire geometric representation of the vascular structure to be stored. This entire information needs to be processed for every projected image that is used as visualization of the vascular structure.

Geometry Reduction

In order to increase performance, a common approach is to reduce the amount of geometry information that needs to be processed for a single image. Usually, this is achieved by using a simpler representation and/or removing parts of the data set that is either invisible or only visible to a small extent. Compared to arbitrary triangle meshes, tree-shaped data sets have special topological features that can be taken advantage of to speed up the visualization. First, the connectivity between different segments can be used to simplify the structure by skipping segments. This results in a simpler representation of the data. Secondly, the cylindrical shape of the segments can be used to identify backfacing triangles on a per-segment basis instead of determining this information for each triangle which removes data invisible due to the projection. Since the cylinders are rendered as single triangle strips, the connectivity information can also be exploited when rendering the model; e.g., for backface culling as described later. Different levels of detail can be defined based on the precision at which a conic cylinder is drawn by reducing the number of points for each delimiting circle of the cylinders.

In the current implementation, three levels of detail are used: a full resolution level where each conic cylinder is represented by 16 triangles, a reduced level with 8 triangles per cylinder, and a low level of detail that skips every other segment and renders each remaining cylinder with 8 triangles. Obviously, the low level-of-detail mode should only be used in areas far away from the view point and mostly occluded; i.e., covered by a multitude of other vessel segments and therefore almost invisible. However, since it is almost completely occluded, a user would need to rotate or zoom in order to inspect this part of the vasculature. Once such an area is rotated and therefore more visible, the system would automatically increase the level of detail. Similarly, cracks that occur at the transition between different levels of detail are not noticeable because these transitions occur sufficiently far from the view point and only in at least partly occluded areas.

In order to decide the resolution for a particular segment, one could determine the distance between the current camera position and the segment itself or determine the number of pixels that would be projected onto the screen to represent this segment. However, due to the enormous amount of segments, the computational effort is too costly which would slow down the rendering speed to several seconds per frame even for the LCx data set. In fact, computing the distances between all vessel segments and the camera would take longer than computing the projected image for the entire data set without any reduction techniques.

To remedy the situation, a spatial data structure is used. It is essential to the overall performance of the system that a simple data structure is used which requires only minimal computation. Hence, a simple subdivision scheme of the space covered by the data set is used. This space is equally divided in each dimension into sub-areas of the same size. Then, only the distance between the center of this sub-area and the camera needs to be calculated during the rendering process to determine the level of detail for the whole sub-area. Based on a set of thresholds provided by the user, all segments contained in each sub-area are rendered in full, reduced, or low level of detail, respectively. These thresholds describe the distance between the center of the sub-area and the camera at which the algorithm will automatically switch to a lower geometric resolution. Using this type of geometry reduction, the number of triangles (e.g., the LCx coronary artery) can be reduced from 25 million to about 20 million triangles without introducing noticeable artifacts.

Backface Culling

To reduce the number of triangles even further, all triangles that are located at the backside of the conic cylinders facing away from the camera can be removed since they are not visible. OpenGL is able to remove the backfacing triangles but then they still have to be transmitted to and processed by the graphics card. In order to avoid transmitting this amount of information, these triangles can be identified in software on the CPU. Of course, a particular vessel segment can be aligned at virtually any angle to the viewing direction with respect to the first triangle within the triangle strip. Therefore, the set of triangles facing backward can be different for each individual vessel segment. This implies that the computation has to be done for each vessel segment individually. Consequently, these computations have to be carried out in a very efficient way in order to avoid slowing down the rendering process. Again, the fact that the topology of a vessel segment is known can be exploited. Each vessel segment is represented by a conic cylinder. Consequently, usually one half of the cylinder is visible, while the other half is not. The triangles representing the invisible half can be identified using the normal vectors since these are computed in such a way that they are always pointing outwards with respect to the conic cylinder. One approach for identifying those triangles with normals facing away from the view point is to check the normals of every triangle individually. This would represent a computational burden and slow down the rendering process. Since the vessel segments are rendered as triangle strips, both the visible and the invisible halves are represented by two sets of consecutive triangles. Thus, in order to identify the set of back-facing triangles only, the transition from triangles with normals facing towards the camera and those pointing away from the camera has to be found which is significantly less expensive computationally. Consequently, only the triangles facing the camera which are visible triangles need to be drawn resulting in a significant reduction in the number of triangles that need to be sent to the graphics hardware.

Occlusion-Based Reduction

Another way of reducing the number of triangles required for a geometric representation of the vascular structure is to remove triangles that represent conic cylinders which are hidden behind a multitude of other vessel segments with respect to the current projection (referred to as occlusion). In a tree-shaped data set, complete occlusion is not likely to occur since a single segment does not significantly obstruct the geometry located behind it. Many of the segments need to be co-located and packed very densely in a particular area to occlude other parts of the vascular tree. However, complete occlusion is not likely to occur. Thus, those parts of the tree which are detected as (partly) occluded are still displayed using the lowest level of detail.

The present software system employs occlusion queries implemented in OpenGL 1.5.30 During such a query, the OpenGL library keeps track of whether the specified graphical primitives result in pixels actually drawn to the projected image. In contrast to the GL_HP-occlusion_test, which only returns a binary true or false result depending on whether pixels were drawn or not, the occlusion queries defined in OpenGL 1.5 allow the retrieval of the number of fragments (pixels) that contribute to the current projected image during the query. Assuming frame coherence (two consecutive projected images being similar), we can use these queries to check for occlusion. By drawing a bounding box of a sub-area, these queries allow the software to determine how much of a specific sub-area is visible based on the previous projected image. These sub-areas are identical to the ones defined by the spatial data structure used for the previously described geometry reduction; i.e., an equidistant sub-division into cubical areas. Based on a user-defined threshold describing the number of pixels that need to be visible, the present system can determine the level-of-detail to be used for the vessel segments contained in this sub-area. The smaller the threshold the less vessels are required to occlude a sub-area. Since the vessel segments are spread over the entire volume relatively evenly, a more sophisticated sub-division technique such as binary-space-partitioning (BSP) trees or k-d trees, which sub-divide space recursively at arbitrary planes instead of using a fixed scheme, would not result in a significant improvement. Also, a simpler sub-division scheme allows for faster processing of the individual sub-elements during testing for occlusion.

For each element of the sub-division, a hardware occlusion query is issued as described above to check how many fragments pass the depth test; i.e., contribute to the current projected image. This results in an estimate of how much of the specific sub-area contributes to the current projected image. To avoid actual drawing of the bounding boxes, the color mask is set to zero in OpenGL. Similarly, the OpenGL depth buffer is marked as read-only to prevent the bounding boxes from changing the depth values and therefore occluding each other.

Occlusion queries supported on GeForce 3 and subsequent NVidia GPUs allow many queries to be performed simultaneously. Therefore, all bounding boxes that are needed for the occlusion queries are drawn first. The result of each occlusion query is stored in the memory of the graphics hardware. To avoid stalling of the graphics pipeline, the result is read back only once for all sub-areas after all occlusion queries are finished. Each occlusion query returns the number of fragments of the bounding box that would actually pass the depth test and would have been drawn if the color mask would not have been set to zero. Consequently, an occlusion query provides a precise measure of how much of a certain sub-area is occluded. Based on a user-specified threshold, the rendering system can then decide whether to draw the vessel segments contained in that specific area at the full level or at a lower level of detail.

Out-of-Core Rendering

Since the whole data set representing the complete model of the arterial vascular tree does not fit into the main memory of regular desktop computers, an out-of-core method was implemented to support larger data sets. This technique uses hard drives as main storage medium, while main memory is only used for caching data. In this way, only the portion of the data set which the algorithm is currently using needs to be present in main memory. The system automatically updates this portion; i.e., the system loads another portion of the data set into main memory and removes another whenever necessary. This enables rendering of the entire model of the vasculature on current commodity hardware. In this approach, the geometry is determined in a pre-computational step. For each of the spatial sub-areas that are used during the rendering, the triangles needed for displaying all of the vessel segments contained in this specific sub-area are computed and then stored in a file. After that, the geometry data can be removed from main memory. Using such a streaming technique reduces the memory footprint significantly. In our experiments the memory consumption of the software implementation was less than 64 MB (as observed via the Windows task manager).

The geometric representation is pre-computed and written to a file in form of binary arrays in the same way it is used by OpenGL when rendered using vertex arrays. Note that only the full resolution needs to be stored in the out-of-core file since the lower levels-of-detail can be derived by masking elements within the vertex array. Offsets are stored at the beginning of the binary file as depicted by Fig. 9. This section of the file allows the system to determine where to find all vertex arrays within the file for each of the sub-areas used by the spatial data structure. With this information, the exact location within the file can be determined and mapped to memory resulting in a pointer to the base address of all vertex arrays representing the geometry of all vessel segments within a specific sub-area. From this starting point, all vertex arrays can be processed as if they were stored in memory.

Figure 9.
figure 9

Out-of-core data file structure reflecting each sub-area within the spatial data structure and their offsets.

Implementation Details

The visualization system is based on OpenGL. Occlusion queries as defined in OpenGL 1.5 are used for the occlusion culling. Figure 10 shows sample code to use occlusion queries in this context. Similar to display lists, vertex arrays, which are significantly faster than immediate mode rendering,34 are used for rendering the vessel segments. OpenGL allows selecting the vertices of a vertex array that are used during the rendering. Thus, a lower level of detail can be realized simply by providing OpenGL with a subset of indices that represents a lower level of detail. This index array can be pre-computed and then provided for every segment destined for lower resolution. Obviously, this index array is the same for each segment due to the fact that the conic cylinder representing a single segment is discretized in the same way for each segment. Figure 11 includes the source code used for rendering vessel segments using vertex arrays.

Figure 10.
figure 10

Sample code for OpenGL occlusion query to determine the number of fragments (pixels) that would contribute to the current image when drawing all vessel segments contained in a single octree element. The variable result will contain the exact number of pixels that would be drawn for the bounding box of this specific octree element (for the sake of simplicity only the drawing commands for the first face of the bounding box is shown).

Figure 11.
figure 11

Sample code for drawing all vessel segments within an octree element using OpenGL vertex arrays; the geometry data is retrieved from the memory mapped file. The starting location of the memory mapped area is indicated by the variable “base”.

The out-of-core rendering approach uses a single file that contains the pre-computed geometry describing the model. This file is accessed using memory mapping implemented in the Windows™ and Linux operating systems. Figure 12 outlines the necessary function calls for memory mapping the geometric representation of the vasculature for the Windows™ operating system. This has two major advantages. First, the file can be randomly accessed. File caching is handled entirely by the operating system. This approach utilizes the hardware capabilities of the memory management unit (MMU) within the CPU. Second, due to the file caching capabilities of the operating system, close-up views can be rendered at comparatively high frame rates. If the geometry that is needed for a close-up view fits into the file cache of the computer, no hard disk access is necessary making the rendering relatively fast. The out-of-core rendering mode has the advantage of handling data sets larger than the available main memory space.

Figure 12.
figure 12

Memory mapped reading of the header information from the out-of-core file; similarly the geometric information is read from the out-of-core file for every octree element.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Wischgoll, T., Meyer, J., Kaimovitz, B. et al. A Novel Method for Visualization of Entire Coronary Arterial Tree. Ann Biomed Eng 35, 694–710 (2007). https://doi.org/10.1007/s10439-007-9278-x

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10439-007-9278-x

Keywords

Navigation