[Insight-users] Noise simulation

Gaëtan Lehmann gaetan.lehmann at jouy.inra.fr
Thu Apr 1 18:25:27 EDT 2010


Hi,

Le 30 mars 10 à 17:40, Oleksandr Dzyubak a écrit :

> Hi Gaëtan,
>
> I have done my homework.
>
> 1) I studied the ITK header.
>
> InsightToolkit/Common/itkMersenneTwisterRandomVariateGenerator.h
>
> In that header the link to the inventors' web page
> www.math.keio.ac.jp/~matumoto/emt.html is dead.
> The correct and still alive one is below.
>
> http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
>
> 2) I have also read the article by the inventors
> M. Matsumoto and T. Nishimura, "Mersenne Twister: A 623- 
> dimensionally equidistributed uniform pseudorandom number  
> generator", ACM Trans. on Modeling and Computer Simulation Vol. 8,  
> No. 1, January pp.3-30 (1998).
>
> This classical article (along with others) can be downloaded from
> the Makoto Matsumoto's home page.
>
> http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/ARTICLES/ 
> earticles.html
>
> 3) From that article:  "A new algorithm called Mersenne Twister
> is  proposed for generating uniform pseudorandom numbers."
> Period is (2^ 19937) - 1, 632-dimensional equidistribution up to 32- 
> bit accuracy.
> So the period is a such huge number
> that this generator could be considered as a "true random".

Sounds good :-)

>
> 4) New debugged and updated release  2009/11/17 of the generator
> can be downloaded using link below.
>
> http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
>
>
> 5) I downloaded and tested the updated code version from the link  
> you provided.
> http://mima2.jouy.inra.fr/darcs/contrib-itk/noise/
>
> a) Compiles -- fine.
> b) Works -- fantastic.
> c) Tested images are identical to those provided in the submission.

Great!

>
> 6) Could you upload the revised version to the Insight Journal?
> I would be more than happy to write a review and
> recommend to add it to the ITK library.
>

I just tried, but I'm still stuck at that stage http://insight-journal.com/submit/step10/59 
, as for the fftconv contrib.
Julien, did you have a chance to look at that?

>
> Thanks for nice work,

Thanks a lot for your very useful report and comments

Gaëtan

>
> Alex
>
>
> Gaëtan Lehmann wrote:
>>
>> Le 29 mars 10 à 15:54, Oleksandr Dzyubak a écrit :
>>
>>>
>>> Hi Gaëtan,
>>>
>>
>> Hi Alex,
>>
>>> Whenever I try to send images using a regular email client,
>>> my emails get bounced. So I used the web page uploader
>>> from nabble.com to send the images. I hope you also got a copy.
>>> If not, below is the link to the images.
>>>
>>> http://old.nabble.com/Noise-simulation-to27990624.html#a28069421
>>
>> I'd say there is a small difference between the two images, but  
>> that's a random process :-)
>>
>>>
>>> About median.cxx. In your submission you use it
>>> just as a denoiser to demonstrate that it works nice on, in  
>>> particular,  images
>>> with "salt-and-pepper",  right?
>>
>> I included it to experiment a bit with PSNR calculator and  
>> denoising. That's really a not much useful program - I didn't event  
>> mentioned it in the paper!
>>
>>>
>>> About the generator. How good is it? Is it random or chaotic?
>>> What is the cycle?
>>
>> I can't say at all. I simply modified the Mersenne Twister  
>> generator from ITK to make it thread safe.
>> I actually don't have much skills in random generator.
>>
>>>
>>> You say that the Gauss has been fixed.
>>> Is it possible the get the updated version?
>>>
>>
>> Sure! It is in the main development repository.
>>
>>  http://mima2.jouy.inra.fr/darcs/contrib-itk/noise/
>>
>> I think I didn't say that you can use darcs to get it (http://www.darcs.net 
>> )
>>
>>  darcs get http://mima2.jouy.inra.fr/darcs/contrib-itk/noise/
>>
>> Thanks,
>>
>> Gaëtan
>>
>>
>>> Thanks,
>>>
>>> Alex
>>>
>>> Gaëtan Lehmann wrote:
>>>>
>>>> Le 26 mars 10 à 16:27, Oleksandr Dzyubak a écrit :
>>>>
>>>>> Hi Gaëtan,
>>>>>
>>>>> I downloaded the updated version from your repository that you  
>>>>> provided.
>>>>> http://mima2.jouy.inra.fr/darcs/contrib-itk/noise/
>>>>>
>>>>> Below is the result of my tests.
>>>>>
>>>>> 1)
>>>>> The compilation was perfect.
>>>>
>>>> great :-)
>>>>
>>>>>
>>>>> 2)
>>>>> dzyubak at helium: /Original_Images$ ./median cthead1.tif  
>>>>> cthead1_median.png | grep " Number Of Threads"
>>>>>
>>>>> After Running the median program, I do see any difference
>>>>> between original and processed images.
>>>>> As I can see, in the median.cxx  you just removed the  
>>>>> neighborhood radius.
>>>>> What is the purpose of being that utility in the submission?
>>>>> Can't be the median.cxx  just removed from the package?
>>>>>
>>>>
>>>> It does something here - by default, the radius is 1.
>>>> Just try on the output of the salt and pepper filter :-)
>>>>
>>>> ./sp ../images/cthead1.tif sp.png
>>>> ./median sp.png out.png
>>>>
>>>> it is very efficient for this kind of noise.
>>>>
>>>>> 3)
>>>>> dzyubak at helium: /Original_Images$ ./gauss cthead1.tif  
>>>>> cthead1_gauss_s22_8_m0.png 22.8 0.0  | grep " Number Of Threads"
>>>>> Number Of Threads: 16
>>>>> Global Maximum Number Of Threads: 128
>>>>> Global Default Number Of Threads: 16
>>>>>
>>>>> The image has the same seeding problem as in the previous version.
>>>>> No changes at all.
>>>>>
>>>>
>>>> err, yes, my fault. I forgot that this filter was not using the  
>>>> mersenne twister generator.
>>>> It's fixed now, by using the same random generator as in the  
>>>> other filters :-)
>>>>
>>>>> 4)
>>>>> dzyubak at helium: /Original_Images$ ./sp cthead1.tif  
>>>>> cthead1_sp_001.png 0.01 | grep " Number Of Threads"
>>>>>
>>>>> Number Of Threads: 16
>>>>> Global Maximum Number Of Threads: 128
>>>>> Global Default Number Of Threads: 16
>>>>>
>>>>> Surprisingly, now cthead1_sp_001.png looks similar to that
>>>>> from your submission.  The incorrect seeding problem is gone.
>>>>> Noise really looks random.  However, I noticed that your image  
>>>>> is  "noisier".
>>>>> Did you use the same parameter "0.01" or that is still the  
>>>>> seeding problem?
>>>>
>>>> noiser? can your provide the images?
>>>>
>>>>>
>>>>> 5)
>>>>> The shot and spekle noise generators work fine and my images
>>>>> are identical to yours.
>>>>
>>>> great :-)
>>>>
>>>>>
>>>>> 6)
>>>>> Peak signal to noise ratio. In your submission you have 20 dB.  
>>>>> Mine is below.
>>>>>
>>>>> dzyubak at helium: /Original_Images$ ./psnr cthead1.tif  
>>>>> cthead1_median.png
>>>>> PSNR: 37.3425 dB
>>>>>
>>>>> dzyubak at helium: /Original_Images$ ./psnr cthead1.tif  
>>>>> cthead1_gauss_s22_8_m0.png
>>>>> PSNR: 20.0251 dB
>>>>>
>>>>> dzyubak at helium: /Original_Images$ ./psnr cthead1.tif  
>>>>> cthead1_shot_s015.png
>>>>> PSNR: 20.0429 dB
>>>>>
>>>>> dzyubak at helium: /Original_Images$ ./psnr cthead1.tif  
>>>>> cthead1_spekle_s024.png
>>>>> PSNR: 20.0901 dB
>>>>>
>>>>> dzyubak at helium: /Original_Images$ ./psnr cthead1.tif  
>>>>> cthead1_sp_001.png
>>>>> PSNR: 22.4873 dB
>>>>>
>>>>> Interesting, the utility says that my salt and pepper is noisier,
>>>>> but just visual test yours is as twice noisier. Subjective   
>>>>> judgment?
>>>>
>>>> PSNR is only a (not so bad) approximation of the image  
>>>> degradation as perceived by a human.
>>>> Our brain very capable to ignore the noise, and for some case  
>>>> like the salt and pepper case, the PSNR is not very  
>>>> representative of our feeling.
>>>>
>>>>>
>>>>> Summing up.
>>>>> 1) What is the need for median.cxx ?
>>>>> Can't be this utility just removed from the submission?
>>>>>
>>>>> 2) The seeding problem in the Gauss noise generator is still  
>>>>> there.
>>>>>
>>>>> Regards,
>>>>>
>>>>> Alex
>>>>>
>>>>>
>>>>> Gaëtan Lehmann wrote:
>>>>>>
>>>>>> Le 25 mars 10 à 23:27, Gaëtan Lehmann a écrit :
>>>>>>
>>>>>>>
>>>>>>> Hi Alex,
>>>>>>>
>>>>>>> I think there is a problem with multithreading and the random  
>>>>>>> generator - more specifically, the seeds are the same in all  
>>>>>>> the threads.
>>>>>>> I didn't noticed this on my macbook with only 2 cores, even  
>>>>>>> when increasing the number of threads to a higher number than  
>>>>>>> the number of cores, but I see the same behavior on my  
>>>>>>> workstation with 16 threads.
>>>>>>>
>>>>>>> How many threads are running in parallel on your system? The  
>>>>>>> number is displayed while running one of the noise generator
>>>>>>>
>>>>>>> [glehmann at gbook build]$ ./shot ../images/cthead1.tif toto.png  
>>>>>>> | grep "  Number Of Threads:"
>>>>>>> Number Of Threads: 2
>>>>>>> Number Of Threads: 2
>>>>>>>
>>>>>>> You can limit the number of threads to a small number, or even  
>>>>>>> to 1, with
>>>>>>>
>>>>>>> export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=1
>>>>>>>
>>>>>>> to workaround the problem.
>>>>>>>
>>>>>>> I will restore the (non thread safe) seeding behavior in  
>>>>>>> ThreadSafeMersenneTwisterRandomVariateGenerator and make it  
>>>>>>> thread safe with a lock so that 2 threads can't get the same  
>>>>>>> seed.
>>>>>>>
>>>>>>
>>>>>> This is fixed in the main repository:
>>>>>>
>>>>>> http://mima2.jouy.inra.fr/darcs/contrib-itk/noise/
>>>>>>
>>>>>> As well as the problem you have reported in median.cxx.
>>>>>> Please let me know if there is something else wrong!
>>>>>>
>>>>>> Gaëtan
>>>>>>
>>>>>>
>>>>>>> Thanks for the report!
>>>>>>>
>>>>>>> Gaëtan
>>>>>>>
>>>>>>>
>>>>>>> Le 25 mars 10 à 22:47, Oleksandr Dzyubak a écrit :
>>>>>>>
>>>>>>>> Dear ITK users,
>>>>>>>>
>>>>>>>> Did anybody tested the noise simulation codes from the  
>>>>>>>> submission
>>>>>>>> "Noise simulation" http://hdl.handle.net/10380/3158 ?
>>>>>>>> The most needed (for me at least) noise generators
>>>>>>>> (Gauss and salt and pepper)
>>>>>>>> produce corrupted images with periodic line patterns
>>>>>>>> (see attached images). To generate those images, I followed
>>>>>>>> the parameter recommendations taken from the submission.
>>>>>>>>
>>>>>>>> ./gauss cthead1.tif cthead1_gauss_s22_8_m0.png 22.8 0
>>>>>>>> ./sp cthead1.tif cthead1_sp_0016.png 0.016
>>>>>>>>
>>>>>>>> Did anybody get similar results?
>>>>>>>>
>>>>>>>> Alex
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> Oleksandr Dzyubak wrote:
>>>>>>>>> Hi Gaëtan,
>>>>>>>>>
>>>>>>>>> Nice and long awaited work.
>>>>>>>>> I found a tiny typo in your code that prevents the submitted  
>>>>>>>>> codes from
>>>>>>>>> being compiled.
>>>>>>>>> At least on my Linux box. The typo is sitting in your  
>>>>>>>>> median.cxx and the
>>>>>>>>> fix is below.
>>>>>>>>>
>>>>>>>>> // Part that gives the errors.
>>>>>>>>> /*
>>>>>>>>> FilterType::RadiusType r;
>>>>>>>>> r.Fill(2);
>>>>>>>>> //  filter->SetRadius(r);
>>>>>>>>> */
>>>>>>>>>
>>>>>>>>> //  this fix solves the problem.
>>>>>>>>> IType::SizeType r;
>>>>>>>>> r[0] = 1;
>>>>>>>>> r[1] = 1;
>>>>>>>>> filter->SetRadius(r);
>>>>>>>>>
>>>>>>>>> Could you please add the fix and upload the code?
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Alex
>>>>>>>>>
>>>>>>>>
>>>>>>>> <cthead1_gauss_s22_8_m0.png><cthead1_sp_0016.png>
>>>>>>>
>>>>>>> -- 
>>>>>>> Gaëtan Lehmann
>>>>>>> Biologie du Développement et de la Reproduction
>>>>>>> INRA de Jouy-en-Josas (France)
>>>>>>> tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
>>>>>>> http://voxel.jouy.inra.fr  http://www.itk.org
>>>>>>> http://www.mandriva.org  http://www.bepo.fr
>>>>>>>
>>>>>>> _____________________________________
>>>>>>> Powered by www.kitware.com
>>>>>>>
>>>>>>> Visit other Kitware open-source projects at
>>>>>>> http://www.kitware.com/opensource/opensource.html
>>>>>>>
>>>>>>> Kitware offers ITK Training Courses, for more information visit:
>>>>>>> http://www.kitware.com/products/protraining.html
>>>>>>>
>>>>>>> Please keep messages on-topic and check the ITK FAQ at:
>>>>>>> http://www.itk.org/Wiki/ITK_FAQ
>>>>>>>
>>>>>>> Follow this link to subscribe/unsubscribe:
>>>>>>> http://www.itk.org/mailman/listinfo/insight-users
>>>>>>
>>>>>
>>>>
>>>
>>
>

-- 
Gaëtan Lehmann
Biologie du Développement et de la Reproduction
INRA de Jouy-en-Josas (France)
tel: +33 1 34 65 29 66    fax: 01 34 65 29 09
http://voxel.jouy.inra.fr  http://www.itk.org
http://www.mandriva.org  http://www.bepo.fr

-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 203 bytes
Desc: Ceci est une signature ?lectronique PGP
URL: <http://www.itk.org/pipermail/insight-users/attachments/20100402/88b4692d/attachment-0001.pgp>


More information about the Insight-users mailing list