[Insight-users] Noise simulation

Kishore Mosaliganti kishoreraom at gmail.com
Thu Apr 1 19:42:35 EDT 2010


Hi Gaetan,

I found that in the itkSaltAndPepperNoiseImageFilter, it would be more
useful if the values m and M be computed from the minima and minima in the
image.

Currently, you are taking the pixel type maxima and minima which precludes
the use of int or double or float pixel types in the image model with a
narrow dynamic range of data.

Does that sound reasonable ?

Kishore


2010/4/1 Gaëtan Lehmann <gaetan.lehmann at jouy.inra.fr>

>
> 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<http://www.math.keio.ac.jp/%7Ematumoto/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<http://www.math.sci.hiroshima-u.ac.jp/%7Em-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<http://www.math.sci.hiroshima-u.ac.jp/%7Em-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<http://www.math.sci.hiroshima-u.ac.jp/%7Em-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
>
>
> _____________________________________
> 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20100401/ebf7420e/attachment-0001.htm>


More information about the Insight-users mailing list