ImageNetworkReader: an ITK Class for Loading Images Across a Network
Blezek D.
Mayo Clinic
logo

Please use this identifier to cite or link to this publication: http://hdl.handle.net/1926/1505
This document describes a new class for the Insight Toolkit~(ITK www.itk.org) for reading images across a network. Network access is handled by CURL (http://curl.haxx.se/libcurl/), an Open Source library for client-side URL transfer. CURL supports the FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE protocols.

This paper is accompanied with source code and a test to load a NRRD file across the network and verify that is is read properly.
Code
minus Automatic Testing Results by Insight-Journal Dashboard on Mon Dec 1 11:54:24 2008 for revision #2
starstarstarstarstar expertise: 5 sensitivity: 4.3
yellow *** Exception executing: Child aborted
Click here for more details.

Go here to access the main testing dashboard.

Reviews
minus A very useful new image IO by Gaetan Lehmann on 2009-01-04 06:32:53 for revision #2
starstarstarstarstar expertise: 3 sensitivity: 3.7
yellow
Summary:

The authors describe a new class which uses the CURL library to read the images through a network protocol.

Open Science:

The source code is provided as well as the input images.

Reproducibility:

I've been able to download, build and run the code with the test program. However I would suggest checking the output image in the test, to be sure that the class is fully working. This can be easily achieved by adding a writer to the test program and by adding the following lines:


FIND_PROGRAM(ITK_TEST_DRIVER itkTestDriver)
SET(TEST_COMMAND ${ITK_TEST_DRIVER} --add-before-env PATH ${CMAKE_BINARY_DIR})


ADD_TEST( ImageNetworkReaderTest ${TEST_COMMAND}
          ImageNetworkReaderTest http://www.na-mic.org/Wiki/images/f/f6/Test.nhdr out.nhdr
          --compare out.nhdr ${CMAKE_SOURCE_DIR}/images/Test.nhdr
)

Use of Open Source Software:

ITK and curl, both fully open source.

Open source Contributions:

The code is usable without problem and clearly described.

Code Quality :

The code is nice.

Interest:

This new class would be useful when working on several hosts (computer cluster, ...).

Free comment :

The use of the current directory may be problematic in many cases. I would rather suggest using the one given by the environment variables $TMP or $TMPDIR, or in /tmp if it exist, or finally in the current directory if none of the other option are possible.


The reader doesn't seem to delete the downloaded file once no more used. I think it should, but it seems to be a quite different behavior of the cache feature proposed by Julien.


Do you think about creating a similar class to write the images through the network? Is that possible with curl?


A great contribution!


Comment by Daniel Blezek: Temp directory yellow
Hi Gaetan,

Thanks for the nice review. The class has a method to set/get a temporary directory name. I thought it would be better to let the user/application set the temp directory rather than presume too much. Ideally, it could default to /tmp, $TMP, $TMPDIR, or the Windows equivalent, for the moment it defaults to the current directory.

Also, deleting the volume when no longer needed is a good idea. I wanted to use something like tmpnam, but I wasn't sure what the proper cross-platform solution was.

Best regards,
-dan
minus Good idea but missing features by Julien Jomier on 2008-12-02 10:41:00 for revision #2
starstarstarstarstar expertise: 4 sensitivity: 4.3
yellow
Summary:

This paper presents a new class for loading ITK images over the network using the cURL

Open Science:

The author provides the source code with tests. Anyone familiar with CMake should be able to compile and run the code.

Reproducibility:

The code compiles fine under MSVC 2008 express. CMake 2.6 reports some policies errors.

Use of Open Source Software:

This paper proposes a contribution to ITK.

Open source Contributions:

The code is usable in his form and is failry easy to compile.

Code Quality :

The code follows the ITK coding style

Free comment :

1) The paper mention support for SSL protocols (FTPS/HTTPS/LDAPS). However the cURL library distributed with the source code doesn't include the crypto library, thus these protocols will not work. At least there should be an option in CMake to point to the crypto library (this would require some header modification in the cURL library). It's difficult to include the crypto/openssl library because it's not easy to Cmake-ified it. (and maybe source redistribution limitations).

2) It seems that the current source code doesn't use the cache. If an image has already been downloaded, the code should look if the image in the cache is not older than the one on the server, if it is not it should not try to download again. I have not looked deeply in the code but I don't think this is supported (otherwise just ignore this comment).

Overall a great contribution that will be really usefull, especially for regression testing.

Add a new review

Statistics
backyellow
Global rating: starstarstarstarstar
Review rating: starstarstarstarstar [review]
Code rating: starstarstarstarstar
Views: 2246
Downloads: 788

Send a message to the author

Information
backyellow
Paper Id: 307
Categories: Images, IO
Keywords: Network, ImageSource,
Toolkit: ITK
Revision: 2 (11-24-2008)
Status: Open for public review
View license
Loading license...

Data
backyellow
Full download: .zip
Paper: view, .pdf
Source code : Download

Share
backyellow
Facebook Digg delicious StumbleUpon dzone Furl Technorati Reddit


main_flat
main_bottom
Powered by Midas