[Insight-users] pixel access of filter output image
Luis Ibanez
luis.ibanez at kitware.com
Fri Oct 29 15:16:20 EDT 2004
Hi Jie,
1) You shouldn't take the region for the iterator from
the RequestedRegion of the filter.
2) You don't seem to need to use the LinearIterators,
it will be simpler to use the plain ImageRegionIterator.
Like:
ImageType::Pointer image = smoothing->GetOutput();
typedef itk::ImageRegionIterator<ImageType> IteratorType;
IteratorType it( image, image->GetBufferedRegion() );
it.GoToBegin();
while( !it.IsAtEnd() )
{
PixelType value = it.Get();
++it;
}
Regards,
Luis
-----------------
Jie Zhu wrote:
> Hi All,
> I am having trouble when I try to access pixels in an image output by
> a smoothing (or other types of ) filter.
> I have a smoothing filter like below and I gave it some input image, I
> checked the output image and it is working fine. But if I try to
> access pixels in this output image using iterators it just crashes.
> Why is this happening?
> Thanks a lot,
> Jie
>
> typedef float InternalPixelType;
> const unsigned int Dimension = 2;
> typedef itk::Image< InternalPixelType, Dimension > InternalImageType;
>
> typedef itk::CurvatureAnisotropicDiffusionImageFilter<
> InternalImageType,
> InternalImageType > SmoothingFilterType;
>
> SmoothingFilterType::Pointer smoothing = SmoothingFilterType::New();
> smoothing->SetInput( reader->GetOutput() );
>
> typedef itk::ImageLinearIteratorWithIndex< InternalImageType > IteratorType;
>
> IteratorType it( smoothing->GetOutput(), smoothing->GetRequestedRegion() );
> it.SetDirection(0);
> for ( it.GoToBegin(); ! it.IsAtEnd();it.NextLine()){
> it.GoToBeginOfLine();
> float pixelValue;
> InternalImageType::IndexType tmpIndx;
> while ( ! it.IsAtEndOfLine() ){
> pixelValue = it.Get(); //<--------------------- crashes here
> ++it;
> }
> }
> _______________________________________________
> Insight-users mailing list
> Insight-users at itk.org
> http://www.itk.org/mailman/listinfo/insight-users
>
>
More information about the Insight-users
mailing list