[Insight-users] Why does not iterator work?
BennyS
ste.benny at email.it
Sat Dec 8 21:03:49 EST 2007
Hi to everyone,
I have a little problem with iterator. After the reading anf the
filtering of a JPEG image (called Temp.jpg), I want to access it reading
the pixels value, but the constant iterator doesn't work (and sincerly I
don't understand why) because it stops at the 35th pixel....
Could you help me?
Thanks!!
Stefano
ps: I put below the code....
* in the header file:
typedef float PixelTypeF;
typedef itk::Image<PixelTypeF, Dimension> ImageTypeF;
typedef itk::ImageFileReader<ImageTypeC> ReaderTypeJPEG;
typedef itk::RescaleIntensityImageFilter<ImageTypeC, ImageTypeF>
RescalerTypeCtoF;
typedef itk::RescaleIntensityImageFilter<ImageTypeF, ImageTypeC>
RescalerTypeFtoC;
typedef itk::RescaleIntensityImageFilter<ImageTypeF, ImageTypeF>
RescalerTypeFtoF;
typedef itk::DiscreteGaussianImageFilter<ImageTypeC, ImageTypeC >
FilterType; typedef itk::DiscreteGaussianImageFilter<ImageTypeF,
ImageTypeF > FilterTypeFF;
typedef itk::ImageLinearIteratorWithIndex< ImageTypeF > IteratorType;
typedef itk::ImageLinearIteratorWithIndex< ImageTypeC >
IteratorTypeC;
typedef itk::ImageLinearConstIteratorWithIndex< ImageTypeF > ConstIterType;
* in the functions file:
/* Step 1 - Reading the image */
ReaderTypeJPEG::Pointer reader = ReaderTypeJPEG::New();
reader->SetFileName(temp);
RescalerTypeCtoF::Pointer ctof = RescalerTypeCtoF::New();
ctof->SetInput(reader->GetOutput());
ctof->SetOutputMaximum(255);
ctof->SetOutputMinimum(0);
/* Step 2 - Filtering 50GLPF10 */
FilterTypeFF::Pointer filter1 = FilterTypeFF::New();
filter1->SetInput(ctof->GetOutput());
filter1->SetVariance(3.1);
/* Step 3 and 4 - Maximums and minimum*/
ImageTypeF::Pointer imageF = filter1->GetOutput();
try
{
filter1->Update();
}
catch( itk::ExceptionObject & err)
{
cerr << "ExceptionObject caught !" << endl;
cerr << err << endl;
system("pause");
exit(1) ;
}
ConstIterType iter( imageF, imageF->GetLargestPossibleRegion() );
iter.SetDirection(1);
for(iter.Begin(); !iter.IsAtEnd(); iter.NextLine())
{ j=0;
for(iter.GoToBeginOfLine(); !iter.IsAtEndOfLine(); ++iter)
{
v[j]=iter.Get();
cout << "Valore pixel: " << v[j] << endl;
cout << "Dati: " << iter.GetRegion() << endl;
cout << "Indice: " << iter.GetIndex() << "\n\n\n" << endl;
j++;
}
}
Where is the mistake?
Thanks again.
More information about the Insight-users
mailing list