Summary:
This paper address several problems that are generic to anybody working on 3D(potentially +t) Images processing, namely the synchronization between differents views of the same object, the temporal aspect of some datasets (cardiac MRI), and the common visualization of different types of data (images, volume/surface meshes, subsets of each, ...).
Hypothesis:
- The user wants to visualize a dataset from different views (standard case for 3D images) and want the modification made on one view's settings to be reflected on the other views of the same object.
- The user wants to see in a common view an image and a mesh (think about the result of an isosurface extraction, of a segmentation, ...)
- The user has a 3D+t dataset (possibly polydata+t).
Evidence:
There is no hard evidence , as there is no real hypothesis either. The cases the authors are supporting with their code are common enough (less common maybe for the 3D+t but still of interest) to justify the integration in the toolkit.
Open Science:
Developped entirely on top of VTK (even if the provided code uses a little bit of ITK, KWWidget/wxWindow for the examples), the code is provided under BSD licence. It's thus available to whoever wants to re-use it. The data need to be downloaded separately.
Reproducibility:
1./ Under windows XP 64, MSVC 8 2005, CMake 2.4.6, vtk 5.0.2, ITK 3.2.0. Everything compiled for win32 (not 64bits).
- Without options, the code simply does not compile. It seems that ITK is part of the core, and not optional as stated in the paper (page 3, "ITK 3.2.0 (for some optional components. In that case, those classe can not be integrated in VTK without adding a dependency on ITK, which, I guess, is not allowed. If the ITK dependency was not removed, this code should belong to ITK Applications ( I don't see any other NA-MIC repository suitable). Note: the vtkItk repository contains code that was apparently taken over from InsightApplications/Auxiliary/vtk. This code deals with tranfering Images between ITK and VTK.
-USE_ITK on
The code compiles. Of the 7 tests availables only two are discussed in the paper. CompareImageManager, DataManager (paper: A.2), FibersManager, INRIAviz4DLauncher, IsosurfacesManager, SynchronizedViews (paper: A.1), TensorManager.
INRIAviz4DLauncher did not seem to have any visible effect.
CompareImageManager illustrates a 3D checkboard with orthogonal visualization.
All the other *Manager are (impressive) examples of mixed visualization between images and UGrid/PolyData, where the UGrid/Polydata represent Fibers, Surfaces, Tensors, ...
The examples all ran fine, and reproduced the paper's statements.
2./ Under windows XP 64, MSVC 8 2005, CMake 2.4.6, vtk from CVS with Tcl support, ITK 3.2.0. KWWidget from CVS. Everything compiled for win32 (not 64bits).
Same remark for ITK.
It seems that the following line fails to recognize VTK cvs:
vtkViewImage3D.cxx(231): #if VTK_MAJOR_VERSION==5 && VTK_MINOR_REVISION>=1.
It works fine with vtk 5.0.2.
Under this configuration, a new .exe (INRIAviz4D.exe) is created and all the other executable do not print an help message anymore when run with no arguments. the Launcher.exe now launch a global application which seems to wrap all the previous features within a nice KWWidget based API. Nothing about it in the paper, but it seems to illustartes some other points like the cropping/projections of UGrids/PolyData. I did not tested everything, which woul dhave been to long in the absence of documentation/tutorial.
3./ Under windows XP 64, MSVC 8 2005, CMake 2.4.6, vtk 5.0.2, ITK 3.2.0., wxWindow 2.8.4 from installer. Everything compiled for win32 (not 64bits).
the correct wx directories were not found. I don;t know if it's due to this version of wx, of if it's because the authors expect an install for source.
Use of Open Source Software:
The author used VTK (/ITK/KWWidget...). They installed a DART server to check compilation.
Open Source Contributions:
Do the author's provide their source code? Yes, on their own svn server, under BSD.
Is it in a form that is usable? Up to the problems stated above, yes.
Do they describe clearly how to use of the code? Yes, except for the INRIAviz4D interface.
How long did it take you to use that code? Half a day to use. I cannot evaluate how long it would take to cod eon top of it, but I can tell it's gonna be way faster than trying to code the equivalent feature based solely on VTK. Once again, that's the kind of fonctionality that everyone wants and thus recode several times.
Code Quality:
Source code is clean. Somme parts are left commented, but it's minor. The .h are commented and follow the dossygen style. Doxygen documentation is part of the CMake file. The overall quality is very good.
Applicability to other problems:
Any problem that requires visualization of 3D(+t) images, possibly with Meshes.
Suggestions for future work:
Is it possible to make the ITK part really optional? Right now, the ITK dependency prevents this code for being accepted in VTK.
There is a dashboard (which is good) but there is no test available. It would be nice to have a test suite, and also t o have in the source code the minimum amount of data to run examples and tests.
The :"Powered by vtkINRIA3D" might be removed from the examples. I say might, because this is just examples, so it shoudl not impact other people's code. In any case, I would recommend removing the "Powered by MedINRIA" in /vtkRenderingAddOn/vtkViewImage.cxx, which seems to belong to the core of vtkINRIA3D.
As for the tensor visualisation, it could be nice to offset the glyphs so that they can be visible from both sides of the orthogonal plans. Right now, they are only visible from one side.
Requests for additional information from authors:
Is there a tutorial of INRIAviz4D somewhere?
What is the expected configuration to build vtkINRIA3D with wx?
Additional Comments:
I did not test the cropping/projection of the meshes, but it seems to make a lot of sense and that's the first time I see such a feature.
I loved the synchronized view exemple. It is nioce to have each view interactor control one parameter (position, zomming, intensity, ... You might want to disable the interaction with the position in the 2D screen space though on the first windows. As one could just drag and move the image out of the windows (the ImageViewer1|2 classes do that I guess in vtk). It's really minor though. Great exemple.
I only give 4 stars to this because, although it's a great feature I would love to have integrated in VTK, there is a dependency over ITK, and also because parts of the code are not documented / not working out of the box. Would those problems be addressed, I would of course improve the rating.
First of all, thanks a lot for the detailed and clear review that you provided on vtkINRIA3D. And I apologize for the previous (incomplete) comment (my bad)!
- We removed the dependency over ITK. This was a severe mistake that we left unchanged since we are compiling most of the time vtkINRIA3D with ITK. The main components of vtkINRIA3D can now be compiled just with VTK. Optional components (the DICOM importer for example) will be compiled automatically when USE_ITK is set to ON.
- We fixed the problem with wxWidgets. Basically, the opengl extension of wxWidgets was required on WIN32. However, when compiling wxWidgets (whether sources come from the installer or a zip file), the opengl extension is not compiled by default (one should manually edit the config file of wx). Now, vtkINRIA3D does not need this opengl extension anymore, so everything should compile fine with any compiled version of wxWidgets. Notice that the wx examples do need ITK (for input/output).
- We removed any "Powered by MedINRIA", which was mainly due to our previous source code architecture which was a mix up between different things.
We are currently working on providing some more documentation on INRIAviz4D. Basically, INRIAviz4D is a concrete implementation of the vtkINRIA3D library (synchronized views, temporal sequences, data manager) using KWWidgets. This is currently under active development and changing (almost) everyday. We do our best to provide a documentation to start with INRIAviz4D as soon as possible.
Last thing: we will add Tests in the future as well. We just need time to setup meaningful tests.
Pierre.
First of all, thanks a lot for the detailed and clear review that you provided on vtkINRIA3D.
We fixed the main concerns that you pointed out (thanks!), i.e: