[ITK] [ITK-users] problem with 3d region growing

samah bouzidi samah.bouzidi at gmail.com
Sun Feb 8 07:07:44 EST 2015


hi,

I finished the slice by slice region growing version of code. unfortunately I
have these errors:

1) no matching function for call to 'itk :: ConnectedThresholdImageFilter <
itk :: Image <short int, 2u>, itk :: Image <unsigned char, 2u>> :: SetSeed (
itk :: Image <short int, 3u> :: INDEXTYPE &) '
connectedThreshold-> SetSeed (index)

2)
/home/doctorant/src/InsightToolkit-4.7.0/Modules/Segmentation/RegionGrowing/include/itkConnectedThresholdImageFilter.hxx:53:1:
note:   no known conversion for argument 1 from ‘itk::Image<short int,
3u>::IndexType {aka itk::Index<3u>}’ to ‘const IndexType& {aka const
itk::Index<2u>&}’


here is my code :

#include "itkConnectedThresholdImageFilter.h"
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkSliceBySliceImageFilter.h"
#include "iostream"

int main( int argc, char *argv[])
{
  typedef   signed short         InternalPixelType;
  typedef   unsigned char        OutputPixelType;
  const     unsigned int         Dimension = 3;
  const     int                  sliceDim =2;
  typedef itk::Image< InternalPixelType, Dimension > InternalImageType; //
input
  typedef itk::Image< OutputPixelType, Dimension > OutputImageType;
//output

  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::SliceBySliceImageFilter< InternalImageType,OutputImageType>
SliceBySliceFilterType;

  SliceBySliceFilterType::Pointer sliceBySliceFilter =
SliceBySliceFilterType::New();

  typedef itk::ConnectedThresholdImageFilter<
SliceBySliceFilterType::InternalInputImageType,
          SliceBySliceFilterType::InternalOutputImageType >
ConnectedFilterType;
  ConnectedFilterType::Pointer connectedThreshold
=ConnectedFilterType::New();

  const InternalPixelType lowerThreshold =  -3700 ;
  const InternalPixelType upperThreshold = -600;

 connectedThreshold->SetLower(  lowerThreshold   );  // error here
 connectedThreshold->SetUpper(  upperThreshold  );  //error here
    connectedThreshold->SetReplaceValue( 255 );  // error here

    InternalImageType::IndexType  index;
    index[0] = 257;
    index[1] = 449;
    connectedThreshold->SetSeed(index);  // error here

  sliceBySliceFilter -> SetInput(reader->GetOutput());
  sliceBySliceFilter->SetFilter(connectedThreshold);
  writer->SetInput( sliceBySliceFilter->GetOutput());
  try
    {
    writer->Update();
    }
  catch( itk::ExceptionObject & excep )
    {
    std::cerr << "Exception caught !" << std::endl;
    std::cerr << excep << std::endl;
    }

  return 0;
}

2015-02-06 21:59 GMT+01:00 samah bouzidi <samah.bouzidi at gmail.com>:

> 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/community/attachments/20150208/962462e1/attachment.html>
-------------- next part --------------
_____________________________________
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 Community mailing list