[Insight-users] help needed please! Affine transform
Miller, James V (Research)
millerjv@crd.ge.com
Wed, 18 Dec 2002 13:53:57 -0500
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.
------_=_NextPart_001_01C2A6C6.D1F3F4B2
Content-Type: text/plain;
charset="iso-8859-1"
Strange. This example runs fine on my system. Can you send me the code for your program?
(Assuming it is a small program).
Did you build the tests for ITK? Can you run the itkImportImageTest?
itkBasicFiltersTests itkImportImageTest
If you did not build the tests, then you will need to at least build itkBasicFiltersTest (you'll need
to turn BUILD_TESTING on in CMake).
Jim
-----Original Message-----
From: lydia coin [mailto:lydia_coin3d@yahoo.fr]
Sent: Wednesday, December 18, 2002 1:16 PM
To: Miller, James V (Research)
Cc: insight-users@public.kitware.com
Subject: RE: [Insight-users] help needed please! Affine transform
Hi james
Thanks for helping me but it really doesn't work. I took the lines of the example itself
short *rawImage = new short[8*12];
for (int i=0; i < 8*12; i++)
{
rawImage[i] = i;
}
typedef itk::ImportImageFilter<short, 2> ImportImageFilter;
typedef itk::Image<short, 2> ShortImage;
// Create an ImportImageFilter filter
ImportImageFilter::Pointer import1;
import1 = ImportImageFilter::New();
itk::ImageRegion<2> region1;
itk::ImageRegion<2>::IndexType index1 = {{0, 0}};
itk::ImageRegion<2>::SizeType size1 = {{8, 12}};
region1.SetSize( size1 );
region1.SetIndex( index1 );
import1->SetRegion( region1 );
import1->SetImportPointer( rawImage, 8*12, true);
// Create another filter
itk::ShrinkImageFilter<ImportImageFilter::OutputImageType, ShortImage >::Pointer shrink;
shrink = itk::ShrinkImageFilter<ImportImageFilter::OutputImageType, ShortImage>::New();
shrink->SetInput( import1->GetOutput() );
shrink->SetShrinkFactors(2);
shrink->Update();
I put them at the begining of my function and it stops at Shrink-> update(), the crash occurs at :
ImageBase<VImageDimension>::CopyInformation(const DataObject *data) function in the file
itkImageBase.txx at the line
imgData = dynamic_cast<const ImageBase<VImageDimension>*>(data);
the same dynamic_cast problem. it's really desperating
"Miller, James V (Research)" <millerjv@crd.ge.com> wrote:
You do not need to set the transform yourself. It should be constructed automatically by the image's
spacing, origin, and region (?). Are you setting of the Region for the ImportImageFilter properly?
You can look at Insight/Testing/Code/BasicFilters/itkImportImageTest.cxx for an example if that
helps.
Jim
-----Original Message-----
From: lydia coin [mailto:lydia_coin3d@yahoo.fr]
Sent: Wednesday, December 18, 22002 11:36 AM
To: insight-users@public.kitware.com; Miller, James V (Research)
Subject: RE: [Insight-users] help needed please! Affine transform
I used importImageFilter instead of ImportImageContainer. It worked but still when I set up the
ConnectedThresholdImageFilter and update it , there is an error saying it stops at Rebuildtransfom()
of the file itkImage.txx because the transform of the image is not affine. I don't need a transform
for the image. am I obliged to set an affine transform and why?
"Miller, James V (Research)" <millerjv@crd.ge.com> wrote:
Lydia,
You can use the ImportImageFilter to set up the "imported" for ITK. This is easier than creating the
ITK image and ImportImageContainer.
itk::ImportImageFilter<unsigned char, 2>::Pointer import = itk::ImportImageFilter<unsigned char,
2>::New();
import->SetImportPointer(label_image2, size[0]*size[1], false);
import->SetRegion( region );
import->SetSpacing( spacing );
import->SetOrigin( origin );
typedef itk::ConnectedThresholdImageFilter<ImageType,ImageType> FilterType;
FilterType::Pointer filter = FilterType::New();
filter->SetInput( import->GetOutput() ); // SET THE INPUT TO THE FILTER TO THE OUTPUT OF
THE IMPORT
FilterType::IndexType seed; seed[0] = 165; seed[1] = 90;
filter->SetSeed(seed);
filter->SetLower(0);
filter->SetUpper(255);
filter->SetReplaceValue(255);
filter-> Update();
-----Original Message-----
From: lydia coin [mailto:lydia_coin3d@yahoo.fr]
Sent: Wednesday, December 18, 222002 10:08 AM
To: insight-users@public.kitware.com
Subject: [Insight-users] help needed please!
Could anyone tell what's wrong with these lines. I'm stagnating since yesterday and no solution is
suggested to my problem. Please it is urgent
/*** this is for importing pixel values from an unsigned char type pointer **/
itk::ImportImageContainer<long unsigned int, unsigned char>::Pointer import;
import = itk::ImportImageContainer<long unsigned int, unsigned char>::New();
import->Initialize();
import->Reserve(size[0]*size[1]);
import->SetImportPointer(labeled_image2,size[0]*size[1],false);
/****setting the pixel values in the itkimage****/
typedef itk::Image<unsigned char, 2> ImageType;
ImageType:: Pointer img = ImageType::New();
double values[]={2,2};
double origin_x= 0;
double origin_y=0;
double origin[] = {origin_x, origin_y};
ImageType::IndexType index;
img->SetOrigin(origin);
img->SetSpacing(values); // here I have already a problem at RebuildTransform() method
ImageType::SizeType imagesize;
imagesize[0] = 256;
imagesize[1] = 256;
ImageType::RegionType region;
region.SetSize( imagesize );
img->SetLargestPossibleRegion( region );
img->SetBufferedRegion( region );
img->SetRequestedRegion(region);
img->Allocate();
img->SetPixelContainer(import);
img->Update();
/******** connectedThresholdImageFilter***********/
typedef itk::ConnectedThresholdImageFilter<ImageType,ImageType> FilterType;
FilterType::Pointer filter = FilterType::New();
filter->SetInput(img);
FilterType::IndexType seed; seed[0] = 165; seed[1] = 90;
filter->SetSeed(seed);
filter->SetLower(0);
filter->SetUpper(255);
filter->SetReplaceValue(255);
filter-> Update();// here iot doesn't work because of the dynamic-cast of copyInformation method.
_____
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Testez le nouveau Yahoo! <http://fr.mail.yahoo.com/> Mail
_____
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Testez le nouveau Yahoo! <http://fr.mail.yahoo.com/> Mail
_____
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Testez le nouveau Yahoo! <http://fr.mail.yahoo.com> Mail
------_=_NextPart_001_01C2A6C6.D1F3F4B2
Content-Type: text/html;
charset="iso-8859-1"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META content="MSHTML 6.00.2715.400" name=GENERATOR></HEAD>
<BODY>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff size=2>Strange.
This example runs fine on my system. Can you send me the code for your
program?</FONT></SPAN></DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff size=2>(Assuming it is a
small program).</FONT></SPAN></DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff size=2>Did you build the
tests for ITK? Can you run the itkImportImageTest? </FONT></SPAN></DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff
size=2>itkBasicFiltersTests itkImportImageTest</FONT></SPAN></DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff size=2>If you did not
build the tests, then you will need to at least build itkBasicFiltersTest
(you'll need to turn BUILD_TESTING on in CMake).</FONT></SPAN></DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff
size=2>Jim</FONT></SPAN></DIV>
<DIV><SPAN class=146074818-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma
size=2>-----Original Message-----<BR><B>From:</B> lydia coin
[mailto:lydia_coin3d@yahoo.fr]<BR><B>Sent:</B> Wednesday, December 18, 2002
1:16 PM<BR><B>To:</B> Miller, James V (Research)<BR><B>Cc:</B>
insight-users@public.kitware.com<BR><B>Subject:</B> RE: [Insight-users] help
needed please! Affine transform<BR><BR></FONT></DIV>
<P>Hi james
<P>Thanks for helping me but it really doesn't work. I took the lines of the
example itself
<P> short *rawImage = new short[8*12];<BR> for (int i=0; i <
8*12; i++)<BR> {<BR> rawImage[i] =
i;<BR>
} <BR> <BR> typedef
itk::ImportImageFilter<short,
2>
ImportImageFilter;<BR> typedef itk::Image<short, 2>
ShortImage;<BR> <BR> // Create an ImportImageFilter
filter<BR> ImportImageFilter::Pointer import1;<BR> import1 =
ImportImageFilter::New();
<P>
itk::ImageRegion<2>
region1;<BR> itk::ImageRegion<2>::IndexType index1 = {{0,
0}};<BR> itk::ImageRegion<2>::SizeType size1 = {{8,
12}};
<P> region1.SetSize( size1 );<BR> region1.SetIndex( index1 );
<P> import1->SetRegion( region1 );<BR>
import1->SetImportPointer( rawImage, 8*12, true);<BR> <BR> //
Create another filter<BR>
itk::ShrinkImageFilter<ImportImageFilter::OutputImageType, ShortImage
>::Pointer shrink;<BR> shrink =
itk::ShrinkImageFilter<ImportImageFilter::OutputImageType,
ShortImage>::New();<BR> shrink->SetInput( import1->GetOutput()
);<BR> shrink->SetShrinkFactors(2);<BR> shrink->Update();
<P>
<P>I put them at the begining of my function and it stops at Shrink->
update(), the crash occurs at :
ImageBase<VImageDimension>::CopyInformation(const DataObject *data)
function in the file itkImageBase.txx at the line
<P> imgData = dynamic_cast<const
ImageBase<VImageDimension>*>(data);
<P>the same dynamic_cast problem. it's really desperating
<P> <B><I>"Miller, James V (Research)"
<millerjv@crd.ge.com></I></B> wrote:
<BLOCKQUOTE
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">
<META content="MSHTML 6.00.2715.400" name=GENERATOR>
<DIV><SPAN class=998431717-18122002><FONT color=#0000ff size=2>You do not
need to set the transform yourself. It should be constructed automatically
by the image's</FONT></SPAN></DIV>
<DIV><SPAN class=998431717-18122002><FONT color=#0000ff size=2>spacing,
origin, and region (?). Are you setting of the Region for the
ImportImageFilter properly?</FONT></SPAN></DIV>
<DIV><SPAN class=998431717-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=998431717-18122002><FONT color=#0000ff size=2>You can look
at Insight/Testing/Code/BasicFilters/itkImportImageTest.cxx for an example
if that helps.</FONT></SPAN></DIV>
<DIV><SPAN class=998431717-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=998431717-18122002><FONT color=#0000ff
size=2>Jim</FONT></SPAN></DIV>
<BLOCKQUOTE dir=ltr
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
<DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma
size=2>-----Original Message-----<BR><B>From:</B> lydia coin
[mailto:lydia_coin3d@yahoo.fr]<BR><B>Sent:</B> Wednesday, December 18,
22002 11:36 AM<BR><B>To:</B> insight-users@public.kitware.com; Miller,
James V (Research)<BR><B>Subject:</B> RE: [Insight-users] help needed
please! Affine transform<BR><BR></FONT></DIV>
<P>I used importImageFilter instead of ImportImageContainer. It worked but
still when I set up the <FONT color=#0000ff>ConnectedThresholdImageFilter
and update it , there is an error saying it stops at Rebuildtransfom() of
the file itkImage.txx because the transform of the image is not affine. I
don't need a transform for the image. am I obliged to set an affine
transform and why?</FONT>
<P> <B><I>"Miller, James V (Research)"
<millerjv@crd.ge.com></I></B> wrote:
<BLOCKQUOTE
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">
<META content="MSHTML 6.00.2715.400" name=GENERATOR>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff size=2>Lydia,
</FONT></SPAN></DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff size=2>You can
use the ImportImageFilter to set up the "imported" for ITK. This
is easier than creating the</FONT></SPAN></DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff size=2>ITK image
and ImportImageContainer.</FONT></SPAN></DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff
size=2>itk::ImportImageFilter<unsigned char, 2>::Pointer import =
itk::ImportImageFilter<unsigned char,
2>::New();</FONT></SPAN></DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff
size=2>import->SetImportPointer(label_image2, size[0]*size[1],
false);</FONT></SPAN></DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff
size=2>import->SetRegion( region );</FONT></SPAN></DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff
size=2>import->SetSpacing( spacing );</FONT></SPAN></DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff
size=2>import->SetOrigin( origin );</FONT></SPAN></DIV>
<DIV><SPAN class=453305015-18122002>
<P><FONT color=#0000ff size=2>typedef
itk::ConnectedThresholdImageFilter<ImageType,ImageType>
FilterType; </FONT>
<P><FONT color=#0000ff size=2> FilterType::Pointer filter =
FilterType::New();<BR> filter->SetInput(<SPAN
class=453305015-18122002> </SPAN>i<SPAN
class=453305015-18122002>mport->GetOutput() </SPAN>);<SPAN
class=453305015-18122002> //
SET THE INPUT TO THE FILTER TO THE OUTPUT OF THE
IMPORT </SPAN></FONT></P>
<P><FONT color=#0000ff size=2><SPAN
class=453305015-18122002></SPAN><BR>
FilterType::IndexType seed; seed[0] = 165; seed[1] =
90;<BR>
filter->SetSeed(seed);<BR>
filter->SetLower(0);<BR>
filter->SetUpper(255);<BR>
filter->SetReplaceValue(255);<BR> <SPAN
class=453305015-18122002> </SPAN><SPAN class=453305015-18122002>
</SPAN>filter-> Update();</FONT></P></SPAN></DIV>
<DIV><SPAN class=453305015-18122002><FONT color=#0000ff
size=2></FONT></SPAN> </DIV>
<BLOCKQUOTE
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid">
<DIV class=OutlookMessageHeader dir=ltr align=left><FONT face=Tahoma
size=2>-----Original Message-----<BR><B>From:</B> lydia coin
[mailto:lydia_coin3d@yahoo.fr]<BR><B>Sent:</B> Wednesday, December 18,
222002 10:08 AM<BR><B>To:</B>
insight-users@public.kitware.com<BR><B>Subject:</B> [Insight-users]
help needed please!<BR><BR></FONT></DIV>
<P>Could anyone tell what's wrong with these lines. I'm stagnating
since yesterday and no solution is suggested to my problem. Please it
is urgent
<P> /*** this is for importing pixel values from an unsigned char
type pointer **/
<BLOCKQUOTE
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #1010ff 2px solid">
<P>itk::ImportImageContainer<long unsigned int, unsigned
char>::Pointer import;<BR> import =
itk::ImportImageContainer<long unsigned
int, unsigned
char>::New();<BR> import->Initialize();<BR> import->Reserve(size[0]*size[1]);<BR> import->SetImportPointer(labeled_image2,size[0]*size[1],false);</P>
<P>/****setting the pixel values in the itkimage****/
<P>typedef itk::Image<unsigned char, 2>
ImageType;<BR> ImageType:: Pointer img =
ImageType::New();
<P> double
values[]={2,2};<BR> double origin_x=
0;<BR> double
origin_y=0;<BR> double origin[] = {origin_x,
origin_y};<BR> ImageType::IndexType
index;<BR> img->SetOrigin(origin);<BR> img->SetSpacing(values);
// here I have already a problem at RebuildTransform() method
<P> ImageType::SizeType
imagesize;<BR> imagesize[0] =
256;<BR> imagesize[1] =
256;<BR> <BR> ImageType::RegionType
region;<BR> region.SetSize( imagesize
);<BR> <BR> img->SetLargestPossibleRegion(
region );<BR> img->SetBufferedRegion( region
);<BR> img->SetRequestedRegion(region);<BR> img->Allocate();<BR> img->SetPixelContainer(import);<BR> img->Update();
<P>/******** connectedThresholdImageFilter***********/
<P>typedef
itk::ConnectedThresholdImageFilter<ImageType,ImageType>
FilterType;
<P> FilterType::Pointer filter =
FilterType::New();<BR>
filter->SetInput(img);<BR>
FilterType::IndexType seed; seed[0] = 165; seed[1] =
90;<BR>
filter->SetSeed(seed);<BR>
filter->SetLower(0);<BR>
filter->SetUpper(255);<BR>
filter->SetReplaceValue(255);<BR> filter-> Update();//
here iot doesn't work because of the dynamic-cast of copyInformation
method. </P></BLOCKQUOTE>
<P><BR>
<HR SIZE=1>
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français
!<BR><A href="http://fr.mail.yahoo.com/">Testez le nouveau Yahoo!
Mail</A></BBBLOCKQUOTE></BLOCKQUOTE>
<P><BR>
<HR SIZE=1>
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !<BR><A
href="http://fr.mail.yahoo.com/">Testez le nouveau Yahoo!
Mail</A></BBLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE>
<P><BR>
<HR SIZE=1>
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !<BR><A
href="http://fr.mail.yahoo.com">Testez le nouveau Yahoo!
Mail</A></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>
------_=_NextPart_001_01C2A6C6.D1F3F4B2--