Reviews
Wednesday 12 September 2007
Summary:
This paper describes the implementation of a class for measuring surface to surface distance.
The paper provides the source code, input data, and easy-to-run examples.
Hypothesis:
Not quite applicable.
The paper mention the implicit hypothesis that the radial distance has certain advantages with respect to the closest distance and normal distance. However such comparison is not the real focus of the paper. Instead, the paper describes the implementation of the radial distance, and that's in my opinion perfectly fine.
Evidence:
The authors provide a tool that readers can easily use to compute distances between surfaces, and by that mean, eventually compare results against other surface distance definitions.
Open Science:
The paper follows very well the fundamental principles of Open Science.
The authors provide all the material required for replicating their work: source code, input data, output data, and examples on how to use the code.
The paper clearly describes the fundamentals of their implementation.
In particular it was nice to see the organization of the paper into :
- Motivation
- Mathematical principles
- User's guide (how to use the code)
The paper is concise, clear and goes to the point.
This is really the kind of easy-to-use contribution that will prove to be useful to the community.
Reproducibility:
The authors provided all the elements required to easily reproduce the work that they describe in the paper.
- Source code
- Input data
- Source code examples
- Output data
The only thing that may have been desirable to have is a way of computing the error, or difference between two distance files. But this is more for the convenience of whoever (...me in this case...) is trying to numerically verify the results of when replicating the work. A quick "string text" comparison of the provided output files against the output files that I got when running the provided tests indicate that the numerical values are very close.
It was very easy to rerun the code. The authors did a great job on facilitating the reproducibility of the code.
I couldn't reproduce Figure 2 with KWMeshVisu , where the inner and outer surfaces are shown using transparency. Not a big deal, I guess the figure was generated with a vtk script.
When attempting to do it using ParaView, it seems that the topology of the mesh is not well constructed. Although it looks fine when loaded with KWMeshVisu.
I especulate that it is probably due to an end-of-line conversion.
I'm running the the code on Debian Linux, compiling with Gcc 4.1 in Release mode.
Use of Open Source Software:
The authors used the Visualization Toolkit VTK, and they also took advantage of a previous submission to the Insight Journal (KWMeshVisu)
Open Source Contributions:
The authors provide the source code of the class that computes the distances, and source code for the associated example.
It compiled and run without any problem. It tooke me just about 10 minutes to build it an run one of the examples.
Code Quality:
The code is nicely organized
The code is clear and easy to read.
The class that implements the distance measurement is easy to use.
It is however doing a little bit too much, since presumably if this class gets introduced into VTK (and it should), the functionalities of writing the distance files should be removed, and the class will be reduced to a filter that computes scalar properties on a surface, given two input surfaces.
The coding style would have to be reviewed according to VTK guidelines.
There is no reason to believe that the code couldn't be portable among many platforms.
Applicability to other problems:
Measuring distances between surfaces is an important tool for many applications. In particular for comparing image segmentation results and therefore for validation studies.
The authors provide us with an easy to use hammer, that will prove to be very useful in any image analysis toolkit.
Suggestions for future work:
The work is pretty compact and useful in its current form.
It could be interesting to use variations of this class for driving a deformable-surface segmentation method, but that's probably too far from the interest of the authors. (or not ?)
As a compact task for a course project, it will be nice to create an ITK version of this filter. For example based on the recently added QuadEdgeMesh.
Requests for additional information from authors:
The radial distance is critically dependent of the choice of center of polar coordinates.
The authors missed to elaborate a bit more on how important that choice is, and how they computed the center.
The class provide the option of using precomputed directions, but surprisingly it doesn't allow the user to provide a customized center.
Such option will be very easy to add.
This extra option is important because in many anatomical structure, the centroid of the surface, is not necessarily the best center of polar coordinates for describing the surface. For example if I had a section of the femur condyle and I'm interested in measuring cartilage thickness, I should use the center of the (almost spherical) condyle joint, as opposed to the centroid of the points that happen to be in the section of surface that I have.
Fortunately, the code modifications are minimal. It is probably enough to add an enum mode for selecting between using a user-provided center or computing a center from the master surface.
Additional Comments:
Great paper !.
It is refreshing to finally get to perform real "peer-reviews" by actually being able to replicate the work that is described in a paper.