[Insight-users] Median filter on Volume: Performance

sacrif markus_m at gmx.net
Wed Feb 23 13:19:49 EST 2011


Hi Gaëtan!
Hi John!

Thank you for your replies! I really used the Debug mode, and the
computation already accelarated significantly with RelDebInfo compilation.

For the previous test run I used a volume of 96^3 and a filter of 10^3. Now
I am running a volume with 256^256^128 and a filter of 20^3. This is running
for 30 minutes now. So I still hope to find a faster solution. Maybe with
the RankImageFilter.

Are there any examples on the usage of the RankImageFIlter. Especially on
how to define the neighborhood? At least I could not find any ones included
which are part of the ITK-Examples.

Regards,
Mark



Gaëtan Lehmann-2 wrote:
> 
> 
> Hi Mark,
> 
> What is the image size you are trying to filter?
> 
> Please make sure that your application is built in Release mode - this  
> can make a HUGE difference.
> 
> For the efficiency and the spherical neighborhood, you may want to try  
> the RankImageFilter which is in the Review directory.
> For large neighborhoods, it may improve significantly the performance.
> 
> Regards,
> 
> Gaëtan
> 
> 
> 
> Le 23 févr. 11 à 14:36, sacrif a écrit :
> 
>>
>> Hello!
>>
>> Actually I simply want to load a volume, run a median filter on it  
>> and write
>> the resulting volume back to disk. Therefore I implemented the  
>> following
>> code:
>>
>>
>> typedef signed short PixelType;
>> static const unsigned int Dimension = 3;
>> typedef itk::Image<PixelType, Dimension> InputImageType;
>> typedef itk::Image<PixelType, Dimension> OutputImageType;
>> typedef itk::ImageFileReader<InputImageType> ReaderType;
>> typedef itk::ImageFileWriter< InputImageType >  WriterType;
>> typedef itk::MedianImageFilter< InputImageType, OutputImageType >
>> MedianFilterType;
>>
>> void MyClass::createMedianHdrFile(std::string filename)
>> {
>> 	ReaderType::Pointer reader = ReaderType::New();
>> 	reader->SetFileName(filename.c_str());
>>
>> 	MedianFilterType::Pointer medianFilter = MedianFilterType::New();
>> 	InputImageType::SizeType indexRadius;
>> 	indexRadius[0] = 10; // radius along x
>> 	indexRadius[1] = 10; // radius along y
>> 	indexRadius[2] = 10; // radius along z
>> 	medianFilter->SetRadius( indexRadius );
>> 	medianFilter->SetInput(reader->GetOutput());
>>
>> 	std::string fnNoEnding = getFilenameWithErasedEnding(filename,  
>> ".hdr");
>> 	std::string fnNewEnding = getFilenameWithNewEnding(fnNoEnding,
>> "_Median.hdr");
>>
>> 	WriterType::Pointer writer = WriterType::New();
>> 	writer->SetFileName( fnNewEnding.c_str());
>> 	writer->SetInput( medianFilter->GetOutput() );
>> 	writer->Update();
>> 	cout << "Median End" << endl;
>> }
>>
>>
>> Basically this works if I use a very small filter with  
>> "indexRadius[0/1/2] =
>> 1;". However, as soon as I use "indexRadius[0/1/2] = 10;" the  
>> calculation
>> seems to take for ever.
>> In the meanwhile the program ran for approximately 3 hours and did not
>> finish yet. Is it really possible that the calculation of a "median  
>> volume"
>> takes such a long time? And is there any way to reduce this time span?
>>
>> My input and output volume are in the Analyze format. For the  
>> current test
>> run my input and output volume dimensions are  96x96x96 and the  
>> filter size
>> is 10x10x10. However, I would also like to create "median volumes"  
>> of even
>> larger data sets and with larger Filter dimensions.
>> The test input volume min and max intensity are -1093 and 1086,
>> respectively.
>>
>> Additionally I wanted to ask whether there is a simple way to run  
>> apply a
>> spherical median filter of a certain radius instead of using the  
>> cuboid
>> defined by "indexRadius[0/1/2]".
>>
>> Thank you for your help & Kind regards
>> Mark
>> -- 
>> View this message in context:
>> http://old.nabble.com/Median-filter-on-Volume%3A-Performance-tp30994977p30994977.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.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
> 
> 

-- 
View this message in context: http://old.nabble.com/Median-filter-on-Volume%3A-Performance-tp30994977p30997534.html
Sent from the ITK - Users mailing list archive at Nabble.com.



More information about the Insight-users mailing list