[Insight-users] Output Problem with PasteImageFilter!

Bios5 bios5_dn at hotmail.com
Wed Jun 17 16:03:46 EDT 2009


Hello to everyone!

I think my last post was lost somewhere, or just didn't get enough
attention...

I already solved some of my issues, looking through older posts, so now I
came with an specific problem.

The thing is that I'm using a PasteImageFilter, to make a 3D volume coming
from 2D slices, but at the end I use a ImageFileWriter to write the 3D
volume as an .img volume (.img .hdr), but when I read it, the new volume
just has as the first image, the last slice read and pasted in my process,
and the rest of the volume is just empty.

This is what I'm doing:

ImportFilter (2D slices from OsiriX) -> castFilter (to change from 2D slices
to 3D with one slice) -> pasteFilter (first allocate the imageVolume with
the size of the volume I want in this case 256x256x54) -> smoothFilter
(passing the entire volume 3D) ->writeFilter(to write the image as .im .hdr
volume).

I tried many ways and recommendations from older posts, and also saw many
times the same problem as mine but non of them has an answer, so I hope
someone may help me this time.

this is part of my code: (I hope the problem is just something I miss)

The destination volume for the 2D slices is first allocated like:

//////////////Setup and Allocating imageVolume
ImageType3D::Pointer	imageVolume=ImageType3D::New();
ImageType3D::IndexType	destVolIndex;
ImageType3D::SizeType	sizeVolImage;
ImageType3D::RegionType regionVolImage; 
	
//////////////////// 3D imageVolume index
	destVolIndex[0] = 0;
	destVolIndex[1] = 0;
	destVolIndex[2] = 0;

	sizeVolImage[0] = imageWidth; ///took this data from the same data
ImportFilter will
	sizeVolImage[1] = imageHeight;
	sizeVolImage[2] = [pixList count];

	regionVolImage.SetSize(sizeVolImage);
	regionVolImage.SetIndex(destVolIndex);

	imageVolume->SetRegions(regionVolImage);
	imageVolume->Allocate();

/////I have 54 2D slices of 256x256 to make a 3D volume of 256x256x54

/////I take on sliceImage2D the output of importFilter inside a for loop
	
for(i=0; i < [pixList count]; i++)
{
	curPix= [pixList	objectAtIndex: i]; //for loop to read the slices 	

	..... setup of importFilter....

	sliceImage2D = importFilter->GetOutput();

	/////Cast the slice from 2D to 3D with one slice
	caster->SetInput(sliceImage2D);
		
	caster->UpdateLargestPossibleRegion();
	caster->Update();
	sliceImage3D = caster -> GetOutput();
				
	//////////PasteImageFilter setup
	destVolIndex[0] = 0;
	destVolIndex[1] = 0;
	destVolIndex[2] = i;//Takes the number of read slice from for loop

	paster -> ResetPipeline();
	paster -> SetDestinationImage(imageVolume);
	paster -> SetDestinationIndex(destVolIndex);

	paster -> SetSourceImage(sliceImage3D);
	paster -> SetSourceRegion(sliceImage3D->GetLargestPossibleRegion());

		
	try
	{
		paster->UpdateLargestPossibleRegion();
		paster->Update();
		imageVolume = paster->GetOutput();

	}
	catch(itk::ExceptionObject & excp)
	{
		std::cerr <<"Exception thrown while pasting the Images" << std::endl;
		std::cerr <<excp<<std::endl;
	}
		
}/////END of for loop
	
	/////Now I send the imageVolume to be smoothed as a 3D volume
	imageVolume->Update();

	///////////3D smoothing DiscreteGaussianImageFilter and
RescalerIntensityImageFilter

	smooth->SetInput(imageVolume);
	//smooth->SetInput(paster->GetOutput()); ///I tried both!!

	try
	{
		smooth->Update();
	}
	catch(itk::ExceptionObject & excp)
	{
		std::cerr <<"Exception thrown while smoothing the 3D volume" << std::endl;
		std::cerr <<excp<<std::endl;
	}
	
	
	//////////RescaleIntensityImageFilter
	rescaler->SetInput(smooth->GetOutput());
	
	//////////ImageFileWriter
	writer->SetInput(rescaler->GetOutput());
	writer->Update();


The most of my trials I get just one slice on the 3D volume, having the 54
slices the first is the last slice read and the other 53 are just black
space.

Any help?? Ideas??? someone please HELP!

Hector
  
-- 
View this message in context: http://n2.nabble.com/Output-Problem-with-PasteImageFilter%21-tp3095177p3095177.html
Sent from the ITK Insight Users mailing list archive at Nabble.com.



More information about the Insight-users mailing list