|Please use this identifier to cite or link to this publication: http://hdl.handle.net/1926/303|
VoxBo is written in C++, and it is escentially a fair translation of some SPM functionality, originally written in Matlab. Along with the software, VoxBo defines two new image formats:
1) .cub, a 3D image format, used for anatomical data and single EPI frames. It is important to notice that this format defines a proper origin field, lacking, for instance, in Analyze.
2) .tes, a 4D image format, designed to contain the temporal EPI information. It is worth noticing that this format organizes the voxels in such a way to optimize longitudinal (temporal) voxel access.
Furthermore, the tes format is compressed through encoding of the functional voxels alone, i.e., background voxels are not stored for each frame, but only for the first one.
In this work we present the necessary IO classes that allow ImageFileReader and ImageFileWriter to properly identify, read and write .cub files only. We will provide .tes support in a subsequent work.
This effort is carried out with the purpose of letting VoxBo implementors to take advantage of ITK's power and overcome the limitations currently afflicting VoxBo.
itkVoxBoCUBImageIO_article.pdf (75Kb) [view paper]
This work is an itk file reader for the VoxBo CUB image format. It supports compressed and uncompressed
files using zlib. An imageIO class and IO factory are provided, along with a test .cub file and a simple test
program. The code conforms to ITK style guidelines, follows the ITK Image IO design pattern and passes
the supplied tests. Some additional work on the testing and documentation might be worth considering.
Both the source code and test data are provided. Revision 2 of this submission includes a CMakeLists.txt file.
The code provided compiled without errors on 64-bit SUSE Linux
under gcc 4.1.0 and ITK 2.8.1. I was able to run the test examples given in
the paper without error. Unfortunately I do not have any way to validate the
files produced (see Additional Comments for some suggestions). I did not find
inputTestImage.cub.gz included with the submission. Should the line from page
3 reading "convertImage inputTestImage.cub.gz outputTestImage2.cub" be edited
to read "convertImage outputTestImage1.cub.gz outputTestImage2.cub" instead?
Open Source Contributions:
This code is certainly a valuable contribution for users of the VoxBo software, which is itself an open-source
The code is written to conform to the ITK style guidelines and is easy to read. If this code is to be considered
for inclusion in ITK, the comment field for the itk::VoxBoCUBImageIO class should be expanded. A
short paragraph that summarizes the Background section of the paper would probably suffice.
Note that ITK distributes a version of zlib, so you could use this one instead of relying on the system zlib.
For a more robust test that would be supported by the ITK Dartboard image diff system, you might consider
extracting a 2D slice from the output of convertImage to compare against a known reference image.
Alternatively, you could compute a checksum from the output image data that you compare to a known value.
|Categories:||Data, Data Representation, Programming, Programming, Programming|
|Keywords:||Image file format, VoxBo, cub|
|Toolkits:||ITK (moved into the sandbox), CMake|
Linked Publications more
ITK in Biomedical Research and Commercial Applications
by McCormick M., Aylward S., Johnson H., Lowekamp B.
Laplacian Mesh Deformation
by Gelas A.
Send a message to the author