[ITK-users] problem with 3d region growing

Matt McCormick matt.mccormick at kitware.com
Wed Feb 4 14:36:32 EST 2015


Hi Samah,

Welcome to ITK!

For a 3D image, the third index of the seed does need to be defined.

To apply a filter on each slice independently, use the
SliceBySliceImageFilter [1].

HTH,
Matt

[1] http://www.itk.org/Doxygen/html/classitk_1_1SliceBySliceImageFilter.html

On Wed, Feb 4, 2015 at 1:59 PM, samah bouzidi <samah.bouzidi at gmail.com> wrote:
> hello itk users,
>
> I am a beginner ITK users. I am trying to segment a volume using region
> growing algorithm. I am able to do it in a 2D image (dicom) but not for a
> volume.
> 1) I saw that for 3D region growing the seed point have 3 coordinates (x, y,
> z). In my case, z is the slice number (i am using .img format). Can I use an
> (x,y) seed point?
> 2) I have another idea,  reading an image series  and applied the filter for
> each image and then writing them in volume. Are there any examples ( applied
> a filter in image series) that one could help me?
>
> regards
> Samah.
>
> My source code is as follows
> ================================
> #include "itkConnectedThresholdImageFilter.h"
> #include "itkImage.h"
> #include "itkImageFileReader.h"
> #include "itkImageFileWriter.h"
>
> int main( int argc, char *argv[])
> {
>   typedef   signed short         InternalPixelType;
>   typedef   unsigned char        OutputPixelType;
>   const     unsigned int           Dimension = 3;
>   typedef itk::Image< InternalPixelType, Dimension > InternalImageType;
>
>   typedef itk::Image< OutputPixelType, Dimension > OutputImageType;
>
>   typedef  itk::ImageFileReader< InternalImageType > ReaderType;
>   typedef  itk::ImageFileWriter<  OutputImageType  > WriterType;
>
>   ReaderType::Pointer reader = ReaderType::New();
>   WriterType::Pointer writer = WriterType::New();
>
>     reader->SetFileName( "/home/doctorant/Téléchargements/Images/in.img" );
>     writer->SetFileName( "/home/doctorant/Téléchargements/Images/out.img");
>
>
>   typedef itk::ConnectedThresholdImageFilter< InternalImageType,
> OutputImageType > ConnectedFilterType;
>
>   ConnectedFilterType::Pointer connectedThreshold =
> ConnectedFilterType::New();
>
>   connectedThreshold->SetInput( reader->GetOutput() );
>   writer->SetInput( connectedThreshold->GetOutput() );
>
>
>   const InternalPixelType lowerThreshold =  -1050  ;
>   const InternalPixelType upperThreshold = -600;
>
>   connectedThreshold->SetLower(  lowerThreshold  );
>   connectedThreshold->SetUpper(  upperThreshold  );
>
>   connectedThreshold->SetReplaceValue( 255 );
>
>
>
>
>   InternalImageType::IndexType  index;
>   index[0] = 250;
>   index[1] = 239;
>
>   connectedThreshold->SetSeed( index );
>
>
>   try
>     {
>     writer->Update();
>     }
>   catch( itk::ExceptionObject & excep )
>     {
>     std::cerr << "Exception caught !" << std::endl;
>     std::cerr << excep << std::endl;
>     }
>
>   return 0;
> }
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/insight-users
>


More information about the Insight-users mailing list