[Insight-users] Noise simulation

Kishore Mosaliganti kishoreraom at gmail.com
Thu Apr 1 20:58:16 EDT 2010


Sure, that will work well for everyone.

Kishore

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

>
> Le 2 avr. 10 à 01:42, Kishore Mosaliganti a écrit :
>
>  Hi Gaetan,
>>
>>
> Hi Kishore,
>
>
>  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 ?
>>
>
> That may not produce the expected behavior, because the maximum/minimum may
> not be the expected value. In the example image for example, the maximum is
> 200 (on purpose, to avoid saturating the pixel values when adding noise),
> but I do want a salt and pepper in the range [0 255].
>
> I had the same problem with the PSNR computation, where the maximum
> possible value of the pixel type should be used. To make it usable with
> pixel types which are not the ones used in the image format, the value used
> was measured as the maximum value in the image, but with that same example
> image, the value was not the expected one.
>
> In both cases, maybe the values should default to the maximum/minimum
> possible value, but be modifiable by the user with the usual Set/Get
> methods.
>
> Does it sound like reasonable option?
>
> Gaëtan
>
>
>
>
>> 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
>>
>>
>>
> --
> 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 --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20100401/dd0d941d/attachment-0001.htm>


More information about the Insight-users mailing list