[ITK-users] problem with 3d region growing

samah bouzidi samah.bouzidi at gmail.com
Fri Feb 6 15:59:18 EST 2015


hi,

sincerely, I fail to understand the response of this filter, the
algorithm succeeds
to segment the region .however, in 3D, the first  slice is the same  used to
check the segmentation in 2D, I am not getting at least for the first slice the
region obtained in 2D.
ps: the modified code takes into account the third dimension :


InternalImageType::IndexType  index;
  index[0] = 250;
  index[1] = 239;
  index[2]= 1;

  connectedThreshold->SetSeed( index );


any help will be appreciated.
thanks in advance.



2015-02-04 21:24 GMT+01:00 Christopher Mullins <
christopher.mullins at kitware.com>:

> The ConnectedThresholdImageFilter example [1] might be of use.
>
> [1]
> https://github.com/InsightSoftwareConsortium/ITK/blob/master/Examples/Segmentation/ConnectedThresholdImageFilter.cxx
>
> On Wed, Feb 4, 2015 at 3:14 PM, samah bouzidi <samah.bouzidi at gmail.com>
> wrote:
>
>> hi Matt,
>>
>> thank you for replying.
>>
>> I can't find the error in my code (a black volume result)
>>
>> can you please look at my code.
>>
>>
>>
>> Regards
>> Samah
>>
>>
>>
>> 2015-02-04 20:36 GMT+01:00 Matt McCormick <matt.mccormick at kitware.com>:
>>
>>> 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
>>> >
>>>
>>
>>
>> _____________________________________
>> 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
>>
>>
>
>
> --
> Christopher Mullins
> R&D Engineer
> Kitware Inc.,
> 919.869.8871
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20150206/6f35f00f/attachment.html>


More information about the Insight-users mailing list