Available online at www.sciencedirect.com ScienceDirect

SoftwareX ( ) – www.elsevier.com/locate/softx

LatticeLibrary and BccFccRaycaster: Software for processing and viewing 3D data on optimal sampling lattices

Elisabeth Schold Linner´ ∗, Max Moren,´ Karl-Oskar Smed, Johan Nysjo,¨ Robin Strand

Div. of Visual Information and Interaction, Department of Information Technology, Uppsala University, Box 337, 751 05 Uppsala, Sweden Received 15 October 2015; received in revised form 21 January 2016; accepted 22 January 2016

Abstract In this paper, we present LatticeLibrary, a C++ library for general processing of 2D and 3D images sampled on arbitrary lattices. The current implementation supports the Cartesian Cubic (CC), Body-Centered Cubic (BCC) and Face-Centered Cubic (FCC) lattices, and is designed to facilitate of other sampling lattices. We also introduce BccFccRaycaster, a plugin for the existing volume renderer , making it possible to view CC, BCC and FCC data, using different interpolation methods, with the same application. The plugin supports nearest neighbor and trilinear interpolation at interactive frame rates. These tools will enable further studies of the possible advantages of non-Cartesian lattices in a wide range of research areas. ⃝c 2016 The Authors. Published by Elsevier B.V. This is an open access article under the CC BY license (http://creativecommons.org/licenses/ by/4.0/).

Keywords: Optimal sampling lattices; Image processing; Volume raycasting; C++; GLSL

Code metadata

Current code version v1.0 Permanent link to code/repository used for this code version https://github.com/ElsevierSoftwareX/SOFTX-D-15-00071 Legal Code License GNU Lesser General Public Licence 2.1 Code versioning system used git Software code languages, tools, and services used C++ Compilation requirements, operating environments & dependencies CMake, GCC or Clang with C++11 support If available Link to developer documentation/manual https://github.com/ElsevierSoftwareX/SOFTX-D-15-00071 Support email for questions [email protected] Current code version v1.0 Permanent link to code/repository used for this code version https://github.com/ElsevierSoftwareX/SOFTX-D-15-00071 Legal Code License GNU General Public Licence Code versioning system used git Software code languages, tools, and services used GLSL, C++, Python Compilation requirements, operating environments & dependencies Voreen 3.0.1, Qt 4.5, GLEW 1.5, DevIL If available Link to developer documentation/manual Support email for questions [email protected]

1. Motivation and significance

1.1. Scientific background

Since the introduction of the digital camera, digital images ∗ Corresponding author. have become a very valuable medium for studies in a wide E-mail address: [email protected] (E.S. Linner).´ range of fields, such as medicine, quality control, surveillance, http://dx.doi.org/10.1016/j.softx.2016.01.002 2352-7110/⃝c 2016 The Authors. Published by Elsevier B.V. This is an open access article under the CC BY license (http://creativecommons.org/licenses/by/4.0/). 2 E.S. Linner´ et al. / SoftwareX ( ) – robotics, and more. A digital image consists of so-called spa- edge detector, described in [3,4], to extract object surfaces tial elements (spels), usually referred to as pixels in 2D, and with sub-spel precision, in order to produce more accurate voxels in 3D. Each spel has the characteristics of position and surface gradients for, for example, shading. The raycasting is intensity, and approximates a part of the imaged object. From performed by tracing discrete lines through the volume. Code these characteristics, we may derive information about the ob- outlining the functionality of this renderer is available through ject from the collection of spels that makes up its image. It is the authors. important to keep in mind that it is usually the actual object, Another method, called splatting, ex- and not the image, that we are interested in. Thus, it is also im- plained in [5], is adapted to BCC data in [1]. This paper also portant to understand what kind of information we can expect introduces methods for gradient reconstruction on a BCC lat- to derive from a digital image. tice, seemingly comparable to central differences on a CC lat- Real life objects can be assumed to be continuous, and of tice. A similar method is applied in [6]. Unfortunately, none of infinite resolution, while digital images are discrete, andof the renderers described in these publications is available today. finite resolution. A digital image may thus not capture allthe The interpolation methods for BCC and FCC lattices details of an object, sometimes resulting in amplification or described in [7–10] are implemented in the volume raycaster suppression of some object details, as well as other image vuVolume [11]. This volume renderer features both a command artifacts. This effect is referred to as aliasing, and is, for non- line interface (CLI) and a graphical user interface (GUI). It is, bandlimited signals, inversely proportional to the number of however, a CPU implementation, and does not reach interactive spels per unit area or volume; the denser the object is sampled, frame rates. Moreover, due to dependencies on third party the smaller is the aliasing effect. In two or more dimensions, libraries that are no longer maintained, it does not compile in sampling density is direction dependent. As a consequence, the a modern environment. Some papers, like [12], features code resolution, as well as the amount of aliasing, is different in snippets that can be used to implement the proposed methods, different directions in the image. In practice, this means that but do not reference a complete volume renderer. for objects of a size that is distinguishable at the resolution Further interpolation methods are introduced and compared in one direction, but not in another, it is their orientation, to the former ones in [13–15]. The implementations used in rather than their actual size, that determines their visibility in [14,15] reach interactive frame rates, but do not seem to be the image. The actual level of detail in the image, meaning available online or through the authors. the size of the smallest object that is visible independent of To our knowledge, there is no software, other than LatticeLi- its orientation, is determined by the direction with the lowest brary, available for image processing or analysis on the BCC resolution. However, smaller objects may still be visible, if their and FCC lattices. orientation corresponds to a direction of higher resolution. This kind of small details are therefore unreliable, and redundant, but 1.3. Our contribution the data representing them must be processed all the same for a certain general minimum resolution to be guaranteed in the 1.3.1. LatticeLibrary image. The redundancy for a specific sampling lattice lattice type The main purpose of LatticeLibrary is to provide a frame- is calculated in frequency domain as work where any processing or analysis method can be applied 1 to data sampled on any lattice. The software architecture is de- lattice type = , ηlattice type signed to facilitate the addition of new methods as well as new lattices. As our research interest is the behavior of various im- where ηlattice type is the packing density in frequency domain of the replicated image spectra, derived in, for example, [1]. age processing methods applied to data sampled on the BCC This redundancy is ∼21% for square spels, and ∼48% for cu- and FCC lattices, we use this area to demonstrate the usage of bic spels. It can be minimized by using a sampling lattice with LatticeLibrary, and include these methods in the release. How- as little direction dependency as possible. In 2D, this is the ever, LatticeLibrary may serve as a foundation for other appli- hexagonal lattice, with a redundancy of ∼9%, while in 3D, it cations as well. is the body-centered cubic (BCC) lattice, with a redundancy of LatticeLibrary is written by the first author of this paper, ∼26%. The reduction of redundancy comes at a cost, though, as under supervision by the last author. the optimal lattices lack the dimensional separability possessed by the square and cubic lattices, resulting in less intuitive, al- 1.3.2. BccFccRaycaster though not necessarily less efficient, data structures and algo- To visualize the data being processed using the BCC and rithms, making the learning threshold higher for new users. It FCC support in LatticeLibrary, we introduce a plugin for the is this threshold that we wish to lower by introducing software volume raycaster Voreen 3.0.1 [16]. Our implementation sup- for processing, analyzing and viewing data sampled using these ports nearest neighbor interpolation and trilinear interpolation lattices. at interactive frame rates. To the best of our knowledge, it is the first open-source rendering tool that supports interactive frame 1.2. Related work rates for BCC and FCC volumes. The first volume renderer for data sampled on BCC and BccFccRaycaster is written by the second and third authors FCC lattices is the raycaster introduced in [2]. It applies an of this paper, under supervision by the other three. E.S. Linner´ et al. / SoftwareX ( ) – 3

2. Software description 2.1.3. Sample code snippets Listing 1, featured in the Appendix A, shows a minimal ex- 2.1. LatticeLibrary ample of how to initialize Image objects, and Listing 2, also in 2.1.1. Software description Appendix A shows an example of how fuzzy image segmenta- LatticeLibrary is a C++ framework for processing sampled tion can be applied using LatticeLibrary. data. The data is treated as an undirected mathematical graph, as explained in, for example, [17]. The connectivity of the graph 2.2. BccFccRaycaster is easily defined using the given interface, enabling the appli- 2.2.1. Software description cation of all implemented processing methods to data sampled on any lattice. As our field of research is image processing, the BccFccRaycaster is an extension of the volume raycaster functionality featured in this release is focused in this area. Voreen 3.0.1 [16], that enables viewing of volume data sam- pled on BCC and FCC lattices using nearest neighbor and tri- 2.1.2. Software functionality linear interpolation. For image data sampled on BCC lattices, The core of LatticeLibrary is the Lattice abstract base BccFccRaycaster supports DC-splines [33], linear box-splines class. A Lattice object contains the dimensionality and spatial [34,12], and cosine-weighted B-splines [15] for trilinear inter- distribution of a dataset, stored in the form of a one-dimensional polation. For data sampled on FCC lattices, DC-spline inter- data array. It does not, however, contain the actual data. If the polation [33] is supported. Nearest neighbor interpolation is user wishes to study the behavior of a particular lattice, a cor- supported for data sampled on CC, BCC, and FCC lattices. responding class is derived from the Lattice base class. The Renderings of the Marschner–Lobb test volume, introduced derived class implements methods for conversion between data in [35], are shown in Fig. 1 as examples of nearest neighbor indices and point coordinates, extraction of neighbors of a lat- and trilinear interpolation on the CC, BCC, and FCC sampling tice point, and approximations of physical measurements based lattices. Fig. 2(a) shows the frame rates achieved using near- on the shape of the associated Voronoi cell. All other LatticeLi- est neighbor interpolation, and Fig. 2(b) those achieved us- brary classes are required to access the data using this interface, ing trilinear interpolation. The results are obtained using an making all functionality implemented in LatticeLibrary appli- Intel⃝R CoreTMi5-3570K CPU @ 3.40 GHz, and GeForce GTX cable to any lattice. 650 Ti Boost (GK106) 2048 MB. While it is difficult to define a The Image class is an example of how the Lattice class border between interactive and non-interactive frame rates, Bc- can be applied. An Image object contains a reference to a cFccRaycaster is evidently able to render objects of up to 107 Lattice object, defining how to interpret the data in a featured voxels at ∼24 frames per second, which is a common frame one-dimensional data array. To simplify usage, it supports rate for video display. wrappers of some of the Lattice methods, along with some functionality specific to Image objects. Our release features 2.2.2. Software functionality numerous other classes, demonstrating how the Lattice As the purpose of the software presented in this paper is to interface can be used to implement various image processing facilitate application of alternative sampling lattices to a wide methods. At the point of publication, LatticeLibrary supports range of research areas, the target is diverse with respect the following methods: to computer experience, and the learning threshold should be • Basic image arithmetic, for example addition and subtrac- low. Thus, we choose to base BccFccRaycaster on an existing tion of two images. renderer with a GUI, as GUIs are considered to be more usable • Spatial template filtering, that can be used for weighted for inexperienced and infrequent users. For tasks related to average filters (for example, mean, Gaussian and Laplacian , [36] indicates that a GUI may also be filters), as well as sequence based filters (for example, beneficial for experienced programmers, further justifying our median filters). choice. However, a CLI, or equivalent, may be necessary for • Seeded intensity-weighted distance transforms, more specif- time consuming or repetitive tasks. Voreen 3.0.1 has a CLI in ically, the minimum barrier distance [18], the approximate the sense that it can be used as a library in combination with minimum barrier distance [19,20], fuzzy connectedness GLUT. It also incorporates a Python interpreter. [21,22], fuzzy distance transform [23,24], and geodesic dis- BccFccRaycaster supports several different storage formats tance transform [25–27], the implementations of which are for volumes sampled on BCC and FCC lattices. The separate used to produce the results published in [28]. storage model is based on dividing the BCC and FCC lattices • Crisp and fuzzy segmentation, based on the output of into two and four CC sublattices, respectively, as shown in seeded intensity-weighted distance transforms, also used Fig. 3. Each sublattice is stored in a separate file. At rendering, in [28]. The fuzzy segmentation is an implementation of the the intensity value of a spel is stored in the A channel of a algorithm introduced in [29]. texture element, and the RGB-channels are used for gradient • Anti-aliased Euclidean distance transform [30], used to information. The interleaved storage model allows for a BCC produce the results of [31] and [32]. Applicable to, for or FCC volume to be stored in a single file, but does not example, fuzzy segmented images. support inclusion of gradient information. For BCC volumes, For further details, please see the Doxygen documentation for the intensity values of the first sublattice are stored in the LatticeLibrary. R channel, and those of the second sublattice are stored in 4 E.S. Linner´ et al. / SoftwareX ( ) –

(a) CC lattice, 80 × 80 × 80 spels, nearest (b) CC lattice, 80 × 80 × 80 spels, trilinear (c) BCC lattice, 2 × 63 × 63 × 63 spels, neighbor interpolation. interpolation. nearest neighbor interpolation.

(d) BCC lattice, 2 × 63 × 63 × 63 spels, (e) FCC lattice, 4 × 50 × 50 × 50 spels, (f) FCC lattice, 4 × 50 × 50 × 50 spels, cosine-weighted B-splines with λ = 0.1. nearest neighbor interpolation. DC-spline interpolation.

Fig. 1. Rendering examples, produced by BccFccRaycaster.

(a) Frame rates, nearest neighbor. The difference between (b) Frame rates, trilinear interpolation. The difference the two storage models is explained in Section 2.2.2. between the two storage models is explained in Section 2.2.2.

Fig. 2. Frame rates achieved by BccFccRaycaster, using different kinds of interpolation. These frame rates are obtained using an Intel⃝R CoreTM i5-3570K CPU @ 3.40 GHz, and GeForce GTX 650 Ti Boost (GK106) 2048 MB. E.S. Linner´ et al. / SoftwareX ( ) – 5

(a) The two CC sublattices of a BCC lattice, (b) The four CC sublattices of an FCC lattice, labeled as black and white. labeled as black, white, black dot, and white dot.

Fig. 3. The division of BCC and FCC lattices into CC sublattices. The gray dots are intermediate interpolation locations, and are not part of the lattice.

Fig. 5. Example of a setup for rendering of data sampled on a BCC lattice. Please note the two different volume sources, representing the two CC Fig. 4. Example of a setup for rendering of data sampled on a CC lattice. This sublattices of the BCC lattice. functionality is part of Voreen, and the image is provided for reference. the G channel. For FCC volumes, the R-, G-, B-, and A- volume, using modules, so-called processors, native to Voreen. channels contain the intensity values for one sublattice each. The VolumeSource processor contains the volume data, The implementation of both formats are explained in detail the CubeMeshProxyGeometry and MeshEntryExitPoints in [37]. The so-called z-interleaved storage model is introduced processors performs pre-processing, and the SingleVolume in [12], and allows for storing a BCC volume in a single texture, Raycaster processor carries out the raycasting process. The including gradient information. It is optimized for linear box- Background processor defines the background of the rendered spline interpolation, but is not compatible with DC-spline image, which is plotted by the Canvas processor, named CC interpolation. The implementation is described in detail in [38]. in this particular example. Examples of rendering setups for BCC and FCC data are shown in Figs. 5 and6, respectively. 2.2.3. Examples of rendering setups Each VolumeSource processor in the BCC and FCC setups BccFccRaycaster makes use of the GUI provided by Voreen represents a sublattice in the data, as defined in the references for rendering setups. Fig. 4 shows a basic setup for a CC describing the interpolation methods. 6 E.S. Linner´ et al. / SoftwareX ( ) –

Fig. 6. Example of a setup for rendering of data sampled on a FCC lattice. Please note the four different volume sources, representing the four CC sublattices of the FCC lattice. 3. Impact 4. Future work

As explained in Section 1.1, the hexagonal, BCC and FCC While our aim at present is to provide readable, main- lattices yield less redundancy, when used as sampling lattices, tainable, and well documented software for handling data than the two- and three-dimensional Cartesian lattices. This can sampled on different lattices, we are also interested in im- be exploited in two obvious ways: proving the computational efficiency of the software, to fur- ther encourage its being used. The filtering and morphological • Keeping the number of sample points constant, better reso- operations in LatticeLibrary are easily parallelized, and may lution can be reached using the same amount of resources. even be moved to the GPU to optimize performance. Apart This approach is explored in [39], where it is shown that from that, more image processing and analysis methods can be phantoms of small tumors or lesions are indeed more visible added, image registration being an obvious application of the in an image sampled on a BCC lattice, than on a CC lattice already implemented distance transforms. We also look forward with the same number of points. to seeing LatticeLibrary being used in fields other than image • A given resolution may be achieved using less resources, processing. as in [40,6,41]. This could mean, for example, lower radi- BccFccRaycaster should be ported to Voreen 4.0 [42], as all ation dosage in computer tomography, and shorter acquisi- work on Voreen 3.0 seem to have ceased. We also wish to add tion time in magnetic resonance . Moreover, fewer higher order interpolation methods, such as [43], and [44], to data points correspond to shorter processing times and less facilitate separation of pre-aliasing errors in the data and post- memory usage for volume images. aliasing caused by the rendering process. Naturally, as new interpolation methods are being developed for BCC and FCC Despite these advantages, there is very little active research in lattices, these should be added to the software. image processing and analysis on optimal sampling lattices. LatticeLibrary has already been used to produce the results Acknowledgments presented in [31,32,28]. We hope that by making this software framework public, we will lower the threshold for other The authors would like to thank Fredrik Nysjo,¨ for reviewing researchers to explore the advantages of alternative sampling part of the BccFccRaycaster code, and Luis Iba´nes,˜ for lattices and their applications. Improving and optimizing providing code samples for volume rendering on optimal existing data processing methods may save time, financial and sampling lattices. We would also like to thank the reviewers natural resources, and, ultimately, even lives. for their efforts and insightful comments. E.S. Linner´ et al. / SoftwareX ( ) – 7

Appendix. Code snippets

Listing 1: Minimal example of image initialization on the supported sampling lattices. #include "cclattice.h" #include "bcclattice.h" #include "fcclattice.h" #include "image.h" using namespace LatticeLib; int main(int argc, char *argv[]) {

int exitValue = 0; double *imageDataCC, *imageDataBCC, *imageDataFCC; int nRowsCC, nColumnsCC, nLayersCC, nRowsBCC, nColumnsBCC, nLayersBCC, nRowsFCC, nColumnsFCC, nLayersFCC, nBands; double samplingDensity;

/* Load image data with method of choice, and set the variables declared above. */

CCLattice latticeCC(nRowsCC, nColumnsCC, nLayersCC, samplingDensity); BCCLattice latticeBCC(nRowsBCC, nColumnsBCC, nLayersBCC, samplingDensity); FCCLattice latticeFCC(nRowsFCC, nColumnsFCC, nLayersFCC, samplingDensity);

Image volumeImageCC(imageDataCC, latticeCC, nBands); Image volumeImageBCC(imageDataBCC, latticeBCC, nBands); Image volumeImageFCC(imageDataFCC, latticeFCC, nBands);

return exitValue; }

Listing 2: Example of image segmentation applied on the BCC sampling lattice. #include "image.h" #include "bcclattice.h" #include "intensityworkset.h" #include "approximateminimumbarrierdistance.h" #include "pnorm.h" #include "seededdistancetransform.h" #include "seed.h" #include "segmentation.h" #include using namespace LatticeLib; int main(int argc, char *argv[]) {

int exitValue = 0; 8 E.S. Linner´ et al. / SoftwareX ( ) –

// Initialize the input image. int nRows, nColumns, nLayers, nBands; double samplingDensity; double *volumeData; /* Load image data with method of choice, and set the variables declared above. */ BCCLattice lattice( nRows, nColumns, nLayers, inputDensity); Image inputImage( volumeData, lattice, nBands); int neighborhoodSize = 14;

// Set the seed points for the distance transform. int nSegmentationClasses; vector > seedPoints; /* For each segmentation class, seedPoints contains a vector of Seed objects, providing seed points for that class. Initialize by method of choice.*/

// Distance transform. PNorm norm(2); ApproximateMinimumBarrierDistance distanceMeasure(norm); SeededDistanceTransform distanceTransform; double *distanceTransformData = new double[ nRows * nColumns * nLayers * nLabels]; Image distanceImage( distanceTransformData, lattice, nLabels); int *rootData = new int[ nRows * nColumns * nLayers * nLabels]; Image rootImage( rootData, lattice, nLabels); seededDistanceTransform.apply( inputImage, seedPoints, distanceMeasure, neighborhoodSize, distanceImage, rootImage);

// Segmentation Segmentation segmentation; double *fuzzySegmentationData = new double[ nRows * nColumns * nLayers * nLabels]; Image fuzzySegmentationImage( fuzzySegmentationData, lattice, nLabels); IntensityWorkset fuzzySegmentation( fuzzySegmentationImage, 0, 1); segmentation.fuzzy( distanceImage, neighborhoodSize, fuzzySegmentation);

delete volumeData; delete distanceTransformData; delete rootData; delete fuzzySegmentationData;

return exitValue; } E.S. Linner´ et al. / SoftwareX ( ) – 9

References [22] Udupa JK, Saha P. Fuzzy connectedness and image segmentation. In: Pro- ceedings of the IEEE, vol. 91. 2003. p. 1649–69. [1] Theußl T, Moller¨ T, Groller¨ ME, Optimal regular volume sampling. In: [23] Saha PK, Wehrli FW, Gomberg BR. Fuzzy distance transform: Theory, Proceedings of the conference on ; 2001. pp. 91–546. algorithms, and applications. Comput Vis Image Underst 2002;86(3): [2] Iba´nez˜ L, Hamitouche C, Roux C. Ray-tracing and 3-D objects represen- 171–90. [24] Svensson S. Aspects on the reverse fuzzy distance transform. Pattern tation in the BCC and FCC grids. In: Ahronovitz E, Fiorio C, editors. Recognit Lett 2008;29(7):888–96. Discrete for computer imagery, vol. 1347. Berlin, Heidelberg: [25] Toivanen PJ. New geodosic distance transforms for gray-scale images. Springer; 1997. p. 235–41. Pattern Recognit Lett 1996;17(5):437–50. [3] Li ML, Hamitouche C, Dillenseger JL, Coatrieux JL. A moment-based [26] Ikonen L. Pixel queue algorithm for geodesic distance transforms. three-dimensional edge operator. IEEE Trans Biomed Eng 1993;40(7): In: Discrete geometry for computer imagery. LNCS, Berlin, Heidelberg: 693–703. [4] Iba´nez˜ L, Hamitouche C, Roux C. Moment-based operator for sub-voxel Springer; 2005. p. 228–39. [27] Criminisi A, Sharp T, Blake A. GeoS: Geodesic image segmentation. surface extraction in . In: International conference on im- In: Computer vision—european conference on computer vision 2008. age processing, vol. 1. 1996. p. 227–80. Springer; 2008. p. 99–112. [5] Westover L. Footprint evaluation for volume rendering. In: SIGGRAPH; [28] Schold Linner´ E, Strand R, Fuzzy segmentation of synthetic and MRI vol- 1990. p. 367–76. ume data sampled on optimal lattices. 2015 [submitted for publication]. [6] Neophytos N, Mueller K. Space–time points: 4D splatting on efficient [29] Malmberg F, Lindblad J, Sladoje N, Nystrom¨ I. A graph-based framework grids. In: Volume visualization and graphics. IEEE; 2002. p. 97–106. for sub-pixel image segmentation. Theoret Comput Sci 2011;412(15): [7] Entezari A, Dyer R, Moller¨ T. Linear and cubic box splines for the body 1338–49. centered cubic lattice. In: Visualization, 2004. IEEE; 2004. p. 11–8. [30] Gustavson S, Strand R. Anti-aliased Euclidean distance transform. Pattern [8] Meng T, Smith B, Entezari A, Kirkpatrick AE, Weiskopf D, Kalan- Recognit Lett 2011;32(2):252–7. tari L, et al. On visual quality of optimal 3D sampling and reconstruction. [31] Linner´ E, Strand R, A graph-based implementation of the anti-aliased Eu- In: Proceedings of Graphics Interface; 2007. p. 265–72. clidean distance transform. In: International conference on pattern recog- [9] Kim M, Entezari A, Peters J. Box spline reconstruction on the face- nition; 2014. pp. 1025–30. centered cubic lattice. IEEE Trans Vis Comput Graphics 2008;14(6): [32] Linner´ E, Strand R. Anti-aliased euclidean distance transform on 3D sam- 1523–30. pling lattices. In: Barcucci E, Frosini A, Rinaldi S, editors. Discrete ge- [10] Entezari A, Van De Ville D, Moller¨ T. Practical box splines for reconstruc- ometry for computer imagery. vol. 8668; 2014. p. 88–98. tion on the body centered cubic lattice. IEEE Trans Vis Comput Graphics [33] Domonkos B, Csebfalvi´ B, DC-splines: Revisiting the trilinear interpola- 2008;14(2):313–28. tion on the body-centered cubic lattice. In: Proceedings of the 15th vision, [11] Dagenais E, Moller¨ T, Bergner S, vuVolume [cited June 26 2015]. URL modeling, and visualization workshop (VMV); 2010. pp. 275–82. http://sourceforge.net/projects/vuvolume/. [34] Finkbeiner B, Alim UR, Van De Ville D, Moller¨ T. High-quality volumet- [12] Finkbeiner B, Entezari A, Van De Ville D, Moller¨ T. Efficient volume ric reconstruction on optimal lattices for computed tomography. Comput rendering on the body centered cubic lattice using box splines. Comput Graph Forum 2009;28(3):1023–30. Graph 2010;34:409–23. [35] Marschner SR, Lobb RJ. An evaluation of reconstruction filters for vol- [13] Csebfalvi´ B, Domonkos B. 3D frequency-domain analysis of non- ume rendering. In: Proceedings of the conference on visualization; 1994. separable reconstruction schemes by using direct volume rendering. [36] Fellman T, Kavakli M. A command line interface versus a graphical user In: Proceedings of the 26th spring conference on computer graphics. 2010. interface in coding VR systems. In: Cunliffe D, editor. Proceedings of the p. 51–60. second IASTED international conference on human computer interaction. [14] Domonkos B, Csebfalvi´ B. Evaluation of the linear box-spline filter ACTA Press Anaheim; 2007. p. 142–7. from trilinear texture samples: a feasibility study. J WSCG 2011;19(1–3): [37] Moren´ M. Efficient volume rendering on the face centered and body cen- 77–84. tered cubic grids [Master’s thesis], Sweden: Uppsala University, Centre [15] Csebfalvi´ B. Cosine-weighted b-spline interpolation: A fast and high- for Image Analysis, Box 337, SE-751 05 Uppsala: June, 2012. quality reconstruction scheme for the body-centered cubic lattice. IEEE [38] Smed K-O. Efficient and accurate volume rendering on the face centered Trans Vis Comput Graphics 2013;19(9):1455–66. and body centered cubic grids [Master’s thesis], Sweden: Uppsala Uni- [16] R T, et al. voreen 3.0. URL www.voreen.org. versity, Centre for Image Analysis, Box 337, SE-751 05 Uppsala: June, [17] Trudeau RJ. Introduction to graph theory. 2nd ed. Dover Publications Inc.; 2015. 1994. [39] Xu F, Mueller K. Applications of optimal sampling lattices for volume ac- [18] Ciesielski KC, Strand R, Malmberg F, Saha P. Efficient algorithm for find- quisition via 3D computed tomography. In: Volume graphics symposium. ing the exact minimum barrier distance. Comput Vis Image Underst 2014; 2007. p. 57–64. 123:53–64. [40] Ehrhardt JC. MR data acquisition and reconstruction using efficient sam- [19] Strand R, Ciesielski KC, Malmberg F. The minimum barrier distance. pling schemes. IEEE Trans Med Imaging 1990;9(3):305–9. Comput Vis Image Underst 2013;117(4):429–37. [41] Saranathan M, Ramanan V, Gulati R, Venkatesan R. ANTHEM: anatomi- [20]K arsn˚ as¨ A, Strand R, Saha PK. The vectorial minimum barrier distance. cally tailored hexagonal MRI. Magn Reson Imaging 2007;25(7):1039–47. In: 21st international conference on pattern recognition. IEEE; 2012. [42] voreen 4.0. URL http://www.uni-muenster.de/Voreen/index.html. p. 792–5. [43] Mirzargar M, Entezari A. Voronoi splines. IEEE Trans Signal Process [21] Udupa JK, Samarasekera S. Fuzzy connectedness and object definition: 2010;58(9):4572–82. Theory, algorithms and applications in image segmentation. Graph Mod- [44] Ye W, Entezari A. A geometric construction of multivariate sinc functions. els Image Process 1996;58(3):246–61. IEEE Trans Image Process 2012;21(6):2969–79.