[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