[Insight-users] small modification to ImageRegistration1 example question
Michael G
michaelguiliametti at hotmail.com
Mon, 16 Feb 2004 03:07:36 +0000
Hi Julien,
Thank you very much for your response. With your suggestions I implemented
the example in Image5.cxx. It certainly can write out files from buffers I
create externally. I applied the same modification now to
ImageRegistration01, it compiles fine but I always get a caught exception
of:
itk::ERROR: MeanSquaresImageToImageMetric(0CC20098): FixedImageRegion is
empty
as if my buffer was empty. But I'm sure that it's filled! It prints out to
file in my modification from Image5. I included the relevant code below, can
anyone offer any pointers, it must be a silly mistake. Thank you all.
// Code :
typedef itk::ImportImageFilter< PixelType, Dimension > FixedBuffer;
typedef itk::ImportImageFilter< PixelType, Dimension > MovedBuffer;
FixedBuffer::Pointer fixedItkBuffer = FixedBuffer::New();
MovedBuffer::Pointer movedItkBuffer = MovedBuffer::New();
FixedBuffer::SizeType sizeFixed;
sizeFixed[0] = width;
sizeFixed[1] = height;
MovedBuffer::SizeType sizeMoved;
sizeMoved[0] = width;
sizeMoved[1] = height;
FixedBuffer::IndexType startFixed;
startFixed.Fill(0);
MovedBuffer::IndexType startMoved;
startMoved.Fill(0);
FixedBuffer::RegionType regionFixed;
regionFixed.SetIndex ( startFixed );
regionFixed.SetSize ( sizeFixed );
fixedItkBuffer->SetRegion( regionFixed );
MovedBuffer::RegionType regionMoved;
regionMoved.SetIndex ( startMoved );
regionMoved.SetSize ( sizeMoved );
movedItkBuffer->SetRegion( regionMoved );
double origin[2];
origin[0] = 0.0;
origin[0] = 0.0;
fixedItkBuffer->SetOrigin( origin );
movedItkBuffer->SetOrigin( origin );
double spacing[2];
spacing[0] = 1.0;
spacing[1] = 1.0;
fixedItkBuffer->SetSpacing( spacing );
movedItkBuffer->SetSpacing( spacing );
// create two dummy buffers
unsigned int test_fix[65536];
unsigned int test_mov[65536];
for( int i = 0; i < 65536; i++)
if( i < 30000)
test_fix[i] = 65536;
else
test_fix[i] = 0;
for( int i = 0; i < 65536; i++)
if( i < 30000)
test_mov[i] = 0;
else
test_mov[i] = 65536;
// set my input buffers to use test_fix and test_mov above
fixedItkBuffer->SetImportPointer( test_fix, 65536, false );
movedItkBuffer->SetImportPointer( test_mov, 65536, false );
// now the motion registration part should be reading from my buffers?
// no errors if I use a file writer to print these buffers out to file!
registration->SetFixedImage( fixedItkBuffer->GetOutput() );
registration->SetMovingImage( movedItkBuffer->GetOutput() );
>From: "Julien Jomier" <jjomier at cs.unc.edu>
>To: "'asdas sdfsafd'"
><michaelguiliametti at hotmail.com>,<insight-users at itk.org>
>Subject: RE: [Insight-users] small modification to ImageRegistration1
>example question
>Date: Fri, 13 Feb 2004 16:50:58 -0500
>
>Hi,
>
>SetFixedImage() and SetMovingImage() are both expecting an itkImage as
>argument.
>
>You can create two itkImages from your image buffers. Take a look at the
>Section 4.1.7 "Importing Image Data from a Buffer" in the itkSoftwareGuide.
>(Examples/DataRepresentation/Image/Image5.cxx).
>
>Then you can do something like
>
>registration->SetFixedImage(fixedImage);
>registration->SetMovingImage(movingImage);
>
>where fixedImage and movingImage are itk::Image<unsigned int,dimension>
>
>Hope this helps,
>
>Julien
>
> > -----Original Message-----
> > From: insight-users-admin at itk.org
> > [mailto:insight-users-admin at itk.org] On Behalf Of asdas sdfsafd
> > Sent: Friday, February 13, 2004 12:32 PM
> > To: insight-users at itk.org
> > Subject: [Insight-users] small modification to
> > ImageRegistration1 example question
> >
> >
> > Hello All,
> >
> > I was using the MotionRegistration example project and it
> > works fine. I
> > wanted to modify the way it reads in the fixed and moving
> > image files if
> > possible. The way it currently does it is:
> >
> > registration->SetFixedImage( fixedImageReader->GetOutput() );
> > registration->SetMovingImage( movingImageReader->GetOutput() );
> >
> > I have two pointers to two unsigned int image buffers
> > containing the pixel
> > data - instead of using the fixedImageReader->GetOutput()
> > method, how could
> > I ask the itk code to take the data directly from my image
> > buffers - is this
> > possible?
> >
> > registration->SetFixedImage( pBuff1 );
> > registration->SetMovingImage( pBuff2 );
> >
> > Thank you for your time.
> >
> > _________________________________________________________________
> > Choose now from 4 levels of MSN Hotmail Extra Storage - no
> > more account
> > overload! http://click.atdmt.com/AVE/go/onm00200362ave/direct/01/
> >
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users at itk.org
> > http://www.itk.org/mailman/listinfo/insight-> users
> >
>
>_______________________________________________
>Insight-users mailing list
>Insight-users at itk.org
>http://www.itk.org/mailman/listinfo/insight-users
_________________________________________________________________
Find great local high-speed Internet access value at the MSN High-Speed
Marketplace. http://click.atdmt.com/AVE/go/onm00200360ave/direct/01/