Shape-based Interpolation of a Set of 2D Slices
logo

Please use this identifier to cite or link to this publication: http://hdl.handle.net/10380/3390
We implemented the shape-based interpolation method described by Raya and Udupa in 1990 for three-dimensional images, and created two standalone filters using the Insight Toolkit ITK. The image to be interpolated must be a 3D binary image which represents an object as a series of 2D slices with pixel values at 1 inside the object and 0 outside by convention. The first filter takes as input a 3D binary image wherein the object of interest is represented in full, that is, on all contiguous slices that comprise it. Such filter yields an upsampled 3D binary image. The second filter takes as input a 3D binary image wherein the object of interest is represented only on certain slices that are regularly spaced. It yields a 3D binary image of the same size as that of the input and wherein the object is represented on all contiguous slices that comprise it. This paper is provided with the source code as well as the data used for validation.
Data
minus 1 Dataset (225Kb)
Code
minus Automatic Testing Results by Insight-Journal Dashboard on Tue Jan 29 17:05:17 2013 for revision #1
starstarstarstarstar expertise: 5 sensitivity: 4.5
yellow This project had trouble building: 21 errors, 1 warnings
Click here for more details.

Go here to access the main testing dashboard.

Reviews
minus Review of Shape-based Interpolation of a Set of 2D Slices by Rupert Brooks on 2013-01-07 10:40:36 for revision #1
starstarstarstarstar expertise: 3 sensitivity: 4.5
yellow
Summary:

The authors implement a shape based interpolation method from (Raya and Udupa, 1990) in the form of two ITK filters.  This shape based interpolation method interpolates between two binary images, by interpolating the signed distance maps of each image, and then finding the zero crossing of the result.


This is a useful contribution, which does not currently exist in ITK as far as I know.

Hypothesis:

The authors propose to implement the Raya and Udupa algorithm.

Evidence:

The authors provide binary executables (linux, 64bit) and code, as well as the data.  They show a couple example runs on a geometric structure and an anatomical structure.

Open Science:

The authors provide code and data to reproduce the work.

Reproducibility:

I did not extensively check that their results are as reported, but it seems so.  I performed other tests - see following.

Use of Open Source Software:

They have used ITK as a basis for their work.

Open source Contributions:

The code conforms with open source principles, it was easy to download and use.

Code Quality :

Overall the code seems of good quality.  It was not difficult to work with it.  There are no unit tests, however.  There are a few comments criticisms, but these issues are minor.


Ideally, Insight Journal submissions can be set up to autocompile and test automatically.  This was not done in this case.


Linux 64bit binaries were included with the submission.  This is unusual, but not a problem as such.  Normally code only would be included.


Their code compiled cleanly on gcc/Linux, but did not compile under Windows/Visual Studio as written.  This was simply due to leaving typenames in their typedefs in the filters.   The filters are not templates.  Having typename outside a template is not conformant with c++03, but gcc lets it through anyway.


The authors have chosen to not template their filter over pixel type.  While it is probably true that this filter would be most useful in unsigned char form, this is a deviation from ITK style.


Header files are not listed in the CMakeLists.txt


 

Free comment :

Unfortunately, there seem to be at least three significant problems with the implementation.  I tried interpolating between a rectangle, and a version of the same rectangle shrunken by one pixel all around. I used a DelineationRatio of 5 and linear interpolation.  These data have been attached to this review, also a modification to the test program to allow changing the delineation ratio.


If there is no padding around the volume (ie, just two slices) then the result consists of one slice the size of the large rectangle, followed by 7 slices the size of the small rectangle, followed by two blank slices.  Ideally, the interpolation should yield roughly equal numbers of slices with the larger rectangle, and with the small rectangle.


When the volume is padded with a blank slice at either end, there are three blank slices, three large rectangle slices, 7 small rectangle slices, and 7 blank slices.


In both cases, the coordinate system of the resulting volume is the same as the input volume, other than the spacing.  This means that in the first case, the center of the first slice which contains an on voxel is at the same place as the center of the first slice which contains an on voxel in the input data, but the last slice is now shifted forward, to roughly the edge of the voxel in the original data.  In the second case, the on pixels start just inside the edge of the first voxel which contained data, ie, they are shifted back.  (Assuming coordinate-centred voxels, which are ITK and DICOM standard)


Finally, if the interpolation is changed from linear to Bspline, the results are different in the padded case, but not in the unpadded case.  In the padded case, BSpline interpolation gives one small rectangular slice in place of a large rectangular slice at the first.  This is difficult to understand.  If extrapolation is being done, both linear and bspline should give similar results in this case.  


The first issue is most likely due to the SignedDanielssonDistanceMap being biased - the first pixel inside the object has a zero distance, and the first pixel outside has a 1 distance.  The Raya and Udupa paper is rather unclear on this point, the following paper, especially the diagrams, may be helpful


   G. T. Herman, J. Zheng, and C. A. Bucholtz,  "Shape-based interpolation,” IEEE Computer Graphics and Applications, May 1992, pp. 69-79.


As for the second issue, the origin of the output image seems to be explicitly set to the origin of the input image.  Its not clear to me that thats really the right thing to do when upsampling.


I am uncertain why the third observation occurs.


Overall, I would recommend the inclusion of a formal unit test, or tests, on examples which can be worked out by hand such as this rectangle case.  The examples given in the paper are too complex, at least for me, to visually judge the correctness of the results.


It might have been interesting to have done the implementation as a filter which takes two 2D slices and an interpolation factor.  As written, the filters preclude the use of this interpolator to resample objects delineated on unevenly spaced slices.  This could possibly be an important use case.

review ShapeBasedInterpolationReview.zip (2Kb)


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by Mwangmajor Holland: yellow


Comment by Mwangmajor Holland: yellow


Comment by Mwangmajor Holland: yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by Lheeralalkris Olivier: yellow


Comment by Lheeralalkris Olivier: yellow


Comment by Lheeralalkris Olivier: yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by Lheeralalkris Olivier: yellow


Comment by Lheeralalkris Olivier: yellow


Comment by Lheeralalkris Olivier: yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow


Comment by Lheeralalkris Olivier: yellow


Comment by Lheeralalkris Olivier: yellow


Comment by Lheeralalkris Olivier: yellow


Comment by Elissierdeon Olivier: yellow


Comment by Elissierdeon Olivier: yellow


Comment by Elissierdeon Olivier: yellow


Comment by : yellow


Comment by : yellow


Comment by : yellow

Add a new review
Quick Comments


Resources
backyellow
Download All
Download Paper , View Paper
Download Source code

Statistics more
backyellow
Global rating: starstarstarstarstar
Review rating: starstarstarstarstar [review]
Code rating: starstarstarstarstar
Paper Quality: plus minus

Information more
backyellow
Categories: Filtering, Segmentation
Keywords: shape-based interpolation, segmentation
Toolkits: ITK, CMake
Export citation:

Share
backyellow
Share

Linked Publications more
backyellow
Importing Contours from DICOM-RT Structure Sets Importing Contours from DICOM-RT Structure Sets
by Dowling J., Malaterre M., Greer P.B., Salvado O.
An ITK Implementation of Physics-based Non-rigid Registration Method An ITK Implementation of Physics-based Non-rigid Registration Method
by Liu Y., Kot A., Drakopoulos F., Fedorov A., Enquobahrie A., Clatz O., Chrisochoides N.

View license
Loading license...

Send a message to the author
main_flat
Powered by Midas