[ITK-users] AdaptiveHistogramEqualizationImageFilter 3D

Bradley Lowekamp blowekamp at mail.nih.gov
Fri Oct 16 12:00:53 EDT 2015


Hello,

I am getting similar performance on my laptop with a random image using SimpleITK:

In [4]: img = sitk.Image(512,512,512,sitk.sitkFloat32)

In [8]: img = sitk.AdditiveGaussianNoise(img, standardDeviation=20, mean=127)

In [10]: %timeit -r 1 -n 1 sitk.AdaptiveHistogramEqualization( img, [1]*3, 1, 1)
1 loops, best of 1: 13min 59s per loop

I did notice that this was a single threaded algorithm. From looking at the algorithm, there is an expensive amount of histogram work that needs to be done per pixel. This could easily be made multi-threaded. I would be happy to help and show you similar multi-threading implementation in ITK if you would like to take this up.

Additional, optimization could be achieved by changing the algorithm to a "MovingHistogram" based one.

Alternatively, there are other algorithms that you could use with similar effect such as unsharp mask from gaussian math, or the UnsharpMaskLevelSetImageFilter.

HTH,
Brad


On Oct 16, 2015, at 8:56 AM, JoseBarretoT <jose.de.paula at live.com> wrote:

> Hello guys,
> itk::AdaptiveHistogramEqualizationImageFilter works well when applied in 3D
> images?
> Need to apply this filter to a .mhd arquido a DICOM (zraw), have a similar
> effect as unsharp.
> The problem is that when you step one reader pictures with 3 dimensions oo
> filter takes almost 15 minutes to apply.
> Really it does not apply in 3D images? Or am I doing something wrong?
> Well, follows the code:
> 
> 	itk::GDCMImageIOFactory::RegisterOneFactory();
> 			itk::MetaImageIOFactory::RegisterOneFactory();
> 			itk::VTKImageIOFactory::RegisterOneFactory();
> 			typedef signed short    PixelType;
> 			const unsigned int      Dimension = 3;
> 			typedef itk::Image< PixelType, Dimension >         ImageType;
> 			typedef itk::ImageSeriesReader< ImageType >        ReaderType;
> 
> 			ReaderType::Pointer reader = ReaderType::New();
> 			reader->SetFileName(clXUteis::ConverterStringParaChar("panoramica.mhd"));
> 			reader->Update();
> 
> 			typedef  itk::AdaptiveHistogramEqualizationImageFilter< ImageType >
> AdaptiveHistogramEqualizationImageFilterType;
> 			AdaptiveHistogramEqualizationImageFilterType::Pointer
> adaptiveHistogramEqualizationImageFilter =
> AdaptiveHistogramEqualizationImageFilterType::New();
> 			adaptiveHistogramEqualizationImageFilter->SetInput(reader->GetOutput());
> 			adaptiveHistogramEqualizationImageFilter->SetBeta(1);
> 			adaptiveHistogramEqualizationImageFilter->SetAlpha(1);
> 			adaptiveHistogramEqualizationImageFilter->SetRadius(1);
> 			adaptiveHistogramEqualizationImageFilter->Update(); //delay is 13~45
> minutes
> 
> 			typedef  itk::ImageFileWriter< ImageType  > WriterType;
> 			WriterType::Pointer writer = WriterType::New();
> 			writer->SetFileName("d://output.mhd");
> 			writer->SetUseCompression(1);
> 
> 			writer->SetInput(adaptiveHistogramEqualizationImageFilter->GetOutput());
> 			writer->Update();
> 
> 
> 
> --
> View this message in context: http://itk-users.7.n7.nabble.com/AdaptiveHistogramEqualizationImageFilter-3D-tp36339.html
> Sent from the ITK - Users mailing list archive at Nabble.com.
> _____________________________________
> 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.php
> 
> 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://public.kitware.com/mailman/listinfo/insight-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20151016/b579c645/attachment.html>


More information about the Insight-users mailing list