Alternative Memory Models for ITK Images

Mueller, Dan1*
1.Philips Healthcare
Abstract
Alternative Memory Models for ITK Images

Abstract

By default ITK images use a contiguous memory model. This means pixel elements are stored in a single 1-D array, where each element is adjacent in memory to the previous element. However in some situations it is not desirable to use this memory model. This document describes three alternative memory models: slice contiguous, sparse, and single-bit binary images. Slice contiguous images are three-dimensional images, in which each slice is stored in a contiguous 1-D array, but the slices are not necessarily adjacent in memory. Slice contiguous images are well suited for interoperability with applications representing images using DICOM. Sparse images are n-dimensional images, in which each pixel is stored in a hash table data structure. This memory model is well suited for images with very large dimensions, but few pixels which are actually relevant. Single-bit binary images internally represent each pixel as a single-bit, in contrast to eight-bits required to represent a boolean. Single-bit binary images allow very compact representations for on-off masks. Source code, tests, and examples are provided to allow easy reproduction and use.

Keywords

imageITKsparsebinary imageslice contiguousmemory
Manuscript
Source Code and Data

Source Code and Data

ArticleInsightArticle.cls4.1 KBalgorithm.sty2.2 KBInsightJournal.sty35.2 KBalgorithmic.sty5.4 KBamssymb.sty14.9 KBarticle.aux3.1 KBarticle.bblarticle.bib856 Barticle.brfarticle.blg520 Barticle.log20.2 KBarticle.dvi54.8 KBarticle.out459 Barticle.pdf73.3 KBarticle.tcp202 Barticle.tex15.6 KBarticle.toc614 Barticle.tps860 Bboundingbox.exe20 KBcontiguous-memory-model.eps.bb26 Bcontiguous-memory-model.eps8.8 KBfancyhdr.sty14.4 KBcontiguous-memory-model.svg14.6 KBfloatflt.sty10.8 KBfncychap.sty10.1 KBlistcode.tex14.8 KBslice-contiguous-memory-model.eps8.6 KBslice-contiguous-memory-model.eps.bb26 Btimes.sty857 Bslice-contiguous-memory-model.svg14.7 KBCMakeLists.txt496 BSourceCMakeLists.txt447 BitkImportSliceContiguousImageContainer.h6.3 KBitkImportSliceContiguousImageContainer.txx7.9 KBitkSingleBitBinaryImage.h11.1 KBitkSingleBitBinaryImage.txx3.7 KBitkSingleBitBinaryImageNeighborhoodAccessorFunctor.h4.6 KBitkSingleBitBinaryImagePixelAccessorFunctor.h3 KBitkSingleBitBinaryImagePixelAccessor.h2.9 KBitkSliceContiguousImage.h12.2 KBitkSliceContiguousImage.txx3.7 KBitkSliceContiguousImageContainer.h6.4 KBitkSliceContiguousImageContainer.txx7.8 KBitkSliceContiguousImageNeighborhoodAccessorFunctor.h5 KBitkSliceContiguousImagePixelAccessor.h3.1 KBitkSliceContiguousImagePixelAccessorFunctor.h3.2 KBitkSparseImage.h12 KBitkSparseImage.txx3.5 KBitkSparseImageContainer.h4.1 KBitkSparseImageContainer.txx2.6 KBitkSparseImageNeighborhoodAccessorFunctor.h4.8 KBitkSparseImagePixelAccessor.h2.8 KBitkSparseImagePixelAccessorFunctor.h3.2 KBperf01.cxx8.9 KBTestingCMakeLists.txt667 BSingleBitBinaryImageTest01.cxx4.2 KBSliceContiguousImageTest01.cxx7.4 KBSparseImageTest01.cxx4.9 KB

Select a file to preview