[ITK-users] itkConnectedThresholdImageFilter does not support Progress?

zagwin zagwin at gmail.com
Mon Jun 8 17:21:00 EDT 2015


Hello Brad,

Thanks for your suggestions.
<1>I did compile my project in release mode, and the
ConnectedThresholdImageFilter does not show progress.

<2>I tried your suggested FastApproximageRankImageFilter, it works, however,
very strange, it is much slower than using medianfilter. 
First, I check this using my project and see the progress of my progressBar. 
Second, I created a simple project with two functions, the first is to load
image, the second is to run median and fast rank as this:
ProcessData()
{
        typedef itk::MedianImageFilter<InputImageType, InputImageType>
MedianFilterType;
	typedef itk::FastApproximateRankImageFilter<InputImageType, InputImageType> 
FastRankFilterType;
	typedef InputImageType::SizeType  ImageSizeType;

	MedianFilterType::Pointer smooth1 = MedianFilterType::New();
	FastRankFilterType::Pointer smooth2 = FastRankFilterType::New();

	ImageSizeType radius1;
	radius1.Fill(1);
	smooth1->SetRadius( radius1 );
	smooth2->SetRadius( radius1 );

	smooth1->SetInput(m_itkImage);
	smooth2->SetInput(m_itkImage);

	QTime time;
	time.start(); //ms
	int iter_num = 5;
	for (int i=0; i< iter_num; ++i)
	{
		smooth1->Modified();
		smooth1->Update();
	}
	int time_Diff = time.elapsed();
	std::cerr << "Median time ms  " << time_Diff << std::endl;
	
	time.start();
	for (int i=0; i< iter_num; ++i)
	{
		smooth2->Modified();
		smooth2->Update();
	}
	time_Diff = time.elapsed();
	std::cerr << "FastRank time ms  " << time_Diff << std::endl;
}
The result is "Median time ms 90" and "FastRank time ms 27998"

<3> I created simple project with one function to test
ConnectedThresholdImageFilter.
MainWindow::ProcessData()
{
       typedef itk::ConnectedThresholdImageFilter <InputImageType,
UCharImageType>  ConnectedThresholdFilterType;
	typedef InputImageType::IndexType SeedIndexType;

	ConnectedThresholdFilterType::Pointer  ccthreshold   =
ConnectedThresholdFilterType::New();

	ItkQtProgress *progress = new ItkQtProgress(this); 
	progress->Observe(ccthreshold.GetPointer());
	connect(progress, SIGNAL(postValue(float)), this,
SLOT(slot_progress(float)));

	ccthreshold->SetLower(-1000);
	ccthreshold->SetUpper(-300);
	ccthreshold->SetReplaceValue(255);

	SeedIndexType seed;
	seed[0] = 156;
	seed[1] = 250;
	ccthreshold->SetSeed(seed);

	ccthreshold->SetInput(m_itkImage);

	ccthreshold->Update();
}
void MainWindow::slot_progress(float progress)
{
	std::cout << "Progress value  " << progress << std::endl;
}

The result is "Progress value 0" and "Progress value 1", no other value, it
is the same as my "big" project using my progress bar. 
I also try this simple project to test others, such as MeadianFilter, it
DOES have other value beside 0/1

<4> I don't understand, since the output of ConnectedThresholdFilter is
Binary, why use GrayscaleDilateImageFilter other than
BinaryDilateImageFilter? I think the BinaryDilateFilter should be faster, am
I right?


Bradley Lowekamp wrote
> Please make sure you are compiling your code in Release mode. It can make
> over a 10X performance difference.
> 
> The median image filter is not fast for large regions. You may want to
> look into the FastApproximageRankImageFilter [1, 2], or just the
> RankImageFilter.
> 
> You can look at how The ConnectedThresholdImageFitler reports progress in
> the code [3]. It does as good of a job as possible reporting progress. It
> will go smoothly for the number of pixels in the region, then just at the
> end for the number of pixels not visited.
> 
> You may want to look into teh GrayscaleDilateImageFilter to do you binary
> morphology [4].
> 
> HTH,
> Brad
> 
> [1]
> http://www.itk.org/Doxygen/html/classitk_1_1FastApproximateRankImageFilter.html
> [2] http://www.insight-journal.org/browse/publication/160
> [3]
> https://github.com/InsightSoftwareConsortium/ITK/blob/master/Modules/Segmentation/RegionGrowing/include/itkConnectedThresholdImageFilter.hxx#L268-L328
> [4]
> http://www.itk.org/Doxygen/html/classitk_1_1GrayscaleDilateImageFilter.html





--
View this message in context: http://itk-users.7.n7.nabble.com/itkConnectedThresholdImageFilter-does-not-support-Progress-tp35782p35785.html
Sent from the ITK - Users mailing list archive at Nabble.com.


More information about the Insight-users mailing list