[Insight-users] runtime error in itk::ConstNeighborhoodIterator
Aaron Skewes
adskewes at bioinfo.uh.edu
Thu Mar 31 12:12:27 EST 2005
Jim,
Thank you for such an easy solution! Everything works now.
Aaron
-----Original Message-----
From: Miller, James V (Research) [mailto:millerjv at crd.ge.com]
Sent: Thursday, March 31, 2005 8:18 AM
To: Aaron Skewes; insight-users at itk.org
Subject: RE: [Insight-users] runtime error in itk::ConstNeighborhoodIterator
Aaron,
The ExtractImageFilter needs to be Update()'d before you can walk its
output with an interator.
Jim
-----Original Message-----
From: insight-users-bounces at itk.org on behalf of Aaron Skewes
Sent: Wed 3/30/2005 2:48 PM
To: insight-users at itk.org
Cc:
Subject: [Insight-users] runtime error in
itk::ConstNeighborhoodIterator
Dear Sirs,
I am attempting to extract a slice normal to the z-axis from a 3d
image, and create a ConstNeighborhoodIterator with a scaleable radius to
perform some calculations. When the code executes the conditions in the for
loop (boundaries of the neighborhood) I receive a runtime error. Any ideas
why this may occur?
typedef float FilterPixelType;
typedef float ItPixelType;
// Define the image type, dimensions
typedef itk::Image< FilterPixelType, DIMENSION >
FilterImageType;
typedef itk::Image< ItPixelType, 2 > ItImageType;
typedef itk::ImageFileReader< FilterImageType >
ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName( inputFileName );
reader->SetFileName(inputFileName );
try
{
reader->Update();
}
catch( itk::ExceptionObject & excp )
{
std::cerr << "Problem reading the input
file" << std::endl;
std::cerr << excp << std::endl;
return -1;
}
//!Extract a slice from the image
typedef itk::ExtractImageFilter< FilterImageType,
ItImageType > ExtractFilterType;
ExtractFilterType::Pointer extractfilter =
ExtractFilterType::New();
FilterImageType::RegionType inputRegion =
reader->GetOutput()->GetLargestPossibleRegion();
FilterImageType::SizeType size = inputRegion.GetSize();
size[2] = 0;
FilterImageType::IndexType start =
inputRegion.GetIndex();
start[2] = 0;
FilterImageType::RegionType desiredRegion;
desiredRegion.SetIndex( start );
desiredRegion.SetSize( size );
extractfilter->SetExtractionRegion( desiredRegion );
extractfilter->SetInput( reader->GetOutput() );
//set-up an iterator to preform convolution
typedef itk::ConstNeighborhoodIterator< ItImageType >
NeighborhoodIteratorType;
NeighborhoodIteratorType::RadiusType radius;
for (float sigma=sigmaMin; sigma<sigmaMax;
sigma+=step_size)
{
//set scalable filter width
radius.Fill(sigma);
NeighborhoodIteratorType it( radius,
extractfilter->GetOutput(),
extractfilter->GetOutput()->GetRequestedRegion());
for (it.GoToBegin(); !it.IsAtEnd(); ++it)
!!!!!!!!!!!!!!!! RUNTINE ERROR HERE
{
DO SOMETHING
}
}
Thanks,
Aaron
More information about the Insight-users
mailing list