[Insight-users] watershed with MRI
lydia coin
lydia_coin3d@yahoo.fr
Wed, 8 Jan 2003 19:47:56 +0100 (CET)
--0-1693339096-1042051676=:55056
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
thank you for your hints.
That what I did, I used an MRI image, with the GradientMagnitudeImageFilter and pass it to the watershed filter. the result is an image with the same intensity value.
In addition to using MRI image, I took the image of the testing example as follows (source code below). The result is an image with the same intensity value everywhere in the image ( like for the MRI). In this case the pixel type is float but still doesn't work. I'll cast the MR image to float but in the meanwhile, could you have a look to my code, maybe something is wrong.
typedef itk::Image<float, 2> ImageType2D;
itk::ImageRegion<2> Region2D;
itk::Size<2> size2D;
size2D[0] = 256;
size2D[1] = 256;
itk::Index<2> orig2D;
orig2D[0] = 0;
orig2D[1] = 0;
Region2D.SetSize(size2D);
Region2D.SetIndex(orig2D);
ImageType2D::Pointer image2D = ImageType2D::New();
image2D->SetLargestPossibleRegion(Region2D);
image2D->SetBufferedRegion(Region2D);
image2D->SetRequestedRegion(Region2D);
image2D->Allocate();
itk::ImageRegionIterator<ImageType2D>
it2D(image2D, image2D->GetRequestedRegion());
float q = 0.00f;
for (; !it2D.IsAtEnd(); ++it2D)
{
it2D.Value() = ::sin(q);
q = q + 0.10f;
}
float lower_threshold=.05f;
itk::WatershedImageFilter<ImageType2D>::Pointer watershed
= itk::WatershedImageFilter<ImageType2D>::New();
watershed->SetThreshold(lower_threshold);
watershed->SetLevel(1.0f);
watershed->SetInput(image2D);
typedef unsigned long PixelType1;
PixelType1 *data = new PixelType1[size[0]*size[1]];
typedef itk::ImageRegionIterator<TestInputImage>ImageIterator1;
ImageIterator1 it1(watershed->GetOutput(),watershed->GetOutput()->GetBufferedRegion());
it1.GoToBegin();
int i=0;
while( !it1.IsAtEnd() )
{
data[i]=it1.Get( );
++it1;
i++;
}
---------------------------------
Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français !
Testez le nouveau Yahoo! Mail
--0-1693339096-1042051676=:55056
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
<P>thank you for your hints.</P>
<P>That what I did, I used an MRI image, with the GradientMagnitudeImageFilter and pass it to the watershed filter. the result is an image with the same intensity value.</P>
<P>In addition to using MRI image, I took the image of the testing example as follows (source code below). The result is an image with the same intensity value everywhere in the image ( like for the MRI). In this case the pixel type is float but still doesn't work. I'll cast the MR image to float but in the meanwhile, could you have a look to my code, maybe something is wrong. </P>
<P> </P>
<P>typedef itk::Image<float, 2> ImageType2D;<BR> itk::ImageRegion<2> Region2D;<BR> itk::Size<2> size2D;<BR> size2D[0] = 256;<BR> size2D[1] = 256;<BR> itk::Index<2> orig2D;<BR> orig2D[0] = 0;<BR> orig2D[1] = 0;<BR><BR> Region2D.SetSize(size2D);<BR> Region2D.SetIndex(orig2D);</P>
<P> ImageType2D::Pointer image2D = ImageType2D::New();<BR> image2D->SetLargestPossibleRegion(Region2D);<BR> image2D->SetBufferedRegion(Region2D);<BR> image2D->SetRequestedRegion(Region2D);<BR> image2D->Allocate();</P>
<P><BR>itk::ImageRegionIterator<ImageType2D><BR> it2D(image2D, image2D->GetRequestedRegion()); <BR> <BR> float q = 0.00f;<BR> for (; !it2D.IsAtEnd(); ++it2D)<BR> {<BR> it2D.Value() = ::sin(q);<BR> q = q + 0.10f;<BR> }</P>
<P> float lower_threshold=.05f;<BR>itk::WatershedImageFilter<ImageType2D>::Pointer watershed<BR> = itk::WatershedImageFilter<ImageType2D>::New();<BR> watershed->SetThreshold(lower_threshold);<BR> watershed->SetLevel(1.0f);<BR> watershed->SetInput(image2D);<BR>typedef unsigned long PixelType1;<BR> PixelType1 *data = new PixelType1[size[0]*size[1]];<BR> typedef itk::ImageRegionIterator<TestInputImage>ImageIterator1;<BR> ImageIterator1 it1(watershed->GetOutput(),watershed->GetOutput()->GetBufferedRegion());<BR> it1.GoToBegin();<BR> int i=0;<BR> while( !it1.IsAtEnd() )<BR> {<BR> data[i]=it1.Get( );<BR> ++it1;<BR> i++;<BR> }</P><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>
--0-1693339096-1042051676=:55056--