<html>
<body>
<font size=3><br>
Dear itk-users,<br><br>
I did some tests with the underlying random generator of the
itkImageRandomIteratorWithIndex and it seems that, in Windows, it is 'not
very random'. <br><br>
The itkImageRandomIterator uses the following random-generator:<br>
<ITKSOURCE>\Utilities\vxl\core\vnl\vnl_sample.<h/cxx><br><br>
In Linux the drand48 random-generator is used, which is a good
choice.<br>
In Windows however a "simple congruential random number
generator" is implemented, since drand48 is not available in
Windows. This gives inferior results, in my experience.<br><br>
To get a feel for the result look at the image1.<mhd/raw>, which is
in the file: randomtestresults.zip, which you can download from:
<a href="http://www.isi.uu.nl/People/Stefan/" eudora="autourl">http://www.isi.uu.nl/People/Stefan/<br>
</a>The gray-values in this image show how many times a pixel was
sampled. The sampling<br>
process works was defined as follows:<br>
"An ImageRegionIterator walks N=200 times through the
image and tests<br>
at each voxel whether to sample it or not. The test is
performed by <br>
drawing a number between 0 and 1 using the random generator
defined in<br>
vnl_sample.h; a value >=0.5 means that the voxel is
sampled"<br>
As you can see in the image the pixels are not really selected at
random...<br><br>
If we use the itkImageRandomIteratorWithIndex to sample the image, the
result (image3.<mhd,raw>) may look better at first sight, but the
histogram looks terrible.<br><br>
On the internet I found the following link:<br>
<a href="http://paine.wiau.man.ac.uk/pub/doc_vxl/core/vnl/html/classvnl__random.html" eudora="autourl">http://paine.wiau.man.ac.uk/pub/doc_vxl/core/vnl/html/classvnl__random.html</a><br>
It describes the files vnl_random.<h,cxx>; those files are not
included in the vxl-version that comes with ITK. I tried to use these as
a random generator. The results are now much better. Image2, which is
generated in the same was as image1, but with the random generator
defined in vnl_random, does not show any structure anymore. Image4, which
is generated using an ImageRandomIterator that uses the vnl_random as its
underlying random number generator, has the histogram that you would
expect.<br><br>
For more details please look at the source of the test program, which you
can also download from
<a href="http://www.isi.uu.nl/People/Stefan/" eudora="autourl">http://www.isi.uu.nl/People/Stefan/</a>
: itkrandomtestsource.zip. You may reproduce the results with this program. Note that only in Windows bad results will be obtained. In Linux there is no problem.<br><br>
Algorithms that rely on a good random generator may fail if you use the itkRandomImageIteratorWithIndex under Windows. For example, in my research on nonrigid registration I tried to use a stochastic gradient descent optimisation method for minimising the MattesMutualInformation in combination with a B-spline transform (it may speed up your registration algorithms; if you are interested: <br>
<a href="http://www.isi.uu.nl/Research/Publications/publicationview.php?id=1011" eudora="autourl">http://www.isi.uu.nl/Research/Publications/publicationview.php?id=1011</a> ). When I used the itkImageRandomConstIteratorWithIndex for selecting spatial samples the registration results got significantly worse than when I used the itkImageMoreRandomConstIteratorWithIndex (which uses the vnl_random as underlying random number generator).<br><br>
Any comments on this would be appreciated!<br><br>
Stefan<br><br>
<br><br>
<br><br>
</font></body>
<br>
</html>