[Insight-users] Problems with itkImageRegionIteratorWithIndex

PeterW p.worel at ast-jena.de
Mon Nov 23 08:40:26 EST 2009


Hello,

I have problems to get the ImageRegionIterators to work. I tried to redo the
expamples given in Examples/Iterators, especially the ImageRegionIterator
and the ImageRegionIteratorWithIndex. And I tried my own example given
below. But I always get the same error, a itkLightObject Exception. The
error occurs when the Iteratorinput was set. I tried to work without a copy
of the inputimage, but this time the requested region was empty. This is the
input image I use:  http://n2.nabble.com/file/n4051121/seedoutput.png
seedoutput.png 
The goal is to find the index of the first white pixel in the image and the
first step is a iterator-loop which access every pixel of the image.

#include <iostream>
//-----ITK-Includes-----
#include "itkImage.h"
#include "itkRGBPixel.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkImageToVTKImageFilter.h"
#include "itkVTKImageToImageFilter.h"
//ImageFilter
#include "itkCastImageFilter.h"
#include "itkImageRegionConstIterator.h"
#include "itkImageRegionIterator.h"
#include "itkImageRegionIteratorWithIndex.h"
//----------------VTK-Includes-------------
#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"

int main(int argc, char **argv)
{
	const unsigned int Dimension = 2;
	typedef unsigned char PixelType;
	typedef itk::Image<PixelType, Dimension> ImageType;

	typedef itk::ImageFileReader<ImageType> ReaderType;
	ReaderType::Pointer reader = ReaderType::New();
	reader->SetFileName("D:/Tests/IterTest/src/seedoutput.png");

	ImageType::ConstPointer inputImage;
	inputImage = reader->GetOutput();

	ImageType::Pointer outputImage = ImageType::New();
	outputImage->SetRegions(inputImage->GetRequestedRegion());
	outputImage->CopyInformation(inputImage);
	outputImage->Allocate();


	typedef itk::ImageRegionIteratorWithIndex<ImageType> IteratorType;
	IteratorType outputIt(outputImage, outputImage->GetRequestedRegion());
	outputIt.GoToBegin();
	
	while (!outputIt.IsAtEnd())
	{
		ImageType::IndexType idx = outputIt.GetIndex();
		std::cout<<idx[0]<<":"<<idx[1]<<std::endl;
		++outputIt;
	}

	typedef itk::ImageFileWriter<ImageType> WriterType;
	WriterType::Pointer writer = WriterType::New();
	writer->SetFileName("D:/Tests/IterTest/src/output.png");
	writer->SetInput(outputImage);
	writer->Write();


	//VTK-Part	

	typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;
	ConnectorType::Pointer connector = ConnectorType::New();
	connector->SetInput(outputImage);

	vtkImageViewer *viewer = vtkImageViewer::New();

	vtkRenderWindowInteractor *renderWindowInteractor =
vtkRenderWindowInteractor::New();

	viewer->SetupInteractor(renderWindowInteractor);
	viewer->SetInput(connector->GetOutput());

	viewer->Render();
	viewer->SetColorWindow(255);
	viewer->SetColorLevel(128);
	renderWindowInteractor->Start();

	viewer->Delete();
	renderWindowInteractor->Delete();


  return 0;
}

I don't get any output from the loop or from the viewer/file, cause of the
lightobject-exception and don't get the point.
Thanks in advanced.

Peter

-- 
View this message in context: http://n2.nabble.com/Problems-with-itkImageRegionIteratorWithIndex-tp4051121p4051121.html
Sent from the ITK Insight Users mailing list archive at Nabble.com.


More information about the Insight-users mailing list