[Insight-users] Noise simulation

Oleksandr Dzyubak adzyubak at gmail.com
Mon Mar 29 09:54:22 EDT 2010


Hi Gaëtan,

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

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?

About the generator. How good is it? Is it random or chaotic?
What is the cycle?

You say that the Gauss has been fixed.
Is it possible the get the updated version?

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
>>>
>>
>



More information about the Insight-users mailing list