[ITK-users] Binary Contour Detection for 3D Image using ITK - Thickness -

Abdelkhalek Bakkari bakkari.abdelkhalek at hotmail.fr
Tue Feb 7 06:29:48 EST 2017


Dear ITK users,


After using the BinaryFillHoleFilter for a 3D Dicom image (see attached), I adopted the BinaryContourImageFilter in order to obtain the contour of the image.  However, the thikness of the contour is very big. My goal is to obtain 1 pixel of thickness.


The fragment of my code is :


------------------------------------------------------

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
#include "itkRescaleIntensityImageFilter.h"
#include "itkCastImageFilter.h"
#include "itkCannyEdgeDetectionImageFilter.h"
#include <itkBinaryContourImageFilter.h>
#include <vtkImageData.h>
#include <vtkExtractVOI.h>
#include <itkLabelToRGBImageFilter.h>
#include <itkImageToVTKImageFilter.h>
#include <itkVTKImageToImageFilter.h>
#include <vtkSmartPointer.h>

int main(int argc, char **argv)
{


       const unsigned int     Dimension = 3;
typedef unsigned char InputPixelType;
typedef unsigned char  OutputPixelType;

typedef itk::Image<InputPixelType, Dimension>  InputImageType;
typedef itk::Image<OutputPixelType, Dimension> OutputImageType;

typedef itk::ImageFileReader< InputImageType > ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName("BinaryFillHoleImage.mha");
reader->Update();

//Slice by Slice Binary Contour
// Binary Contour Filter
typedef itk::BinaryContourImageFilter <InputImageType, InputImageType > binaryContourImageFilterType;

binaryContourImageFilterType::Pointer binaryContourFilter = binaryContourImageFilterType::New ();
binaryContourFilter->SetInput(reader->GetOutput());
binaryContourFilter->SetFullyConnected(1); // true makes thicker contours
binaryContourFilter->SetBackgroundValue(0);
binaryContourFilter->SetForegroundValue(255); // the value of your binary mask
binaryContourFilter->Update();

typedef itk::RescaleIntensityImageFilter< InputImageType, InputImageType > RescaleType;
RescaleType::Pointer rescaler = RescaleType::New();
rescaler->SetInput( binaryContourFilter->GetOutput() );
rescaler->SetOutputMinimum( 0 );
rescaler->SetOutputMaximum( 255 );

typedef itk::CastImageFilter< InputImageType, OutputImageType > FilterType;
FilterType::Pointer filter = FilterType::New();
filter->SetInput( rescaler->GetOutput() );

// Save the contour
{
typedef itk::ImageFileWriter<OutputImageType> WriterType;
WriterType::Pointer writer = WriterType::New();
writer->SetFileName("Cannybinarycontour.mha");
writer->SetInput(filter->GetOutput());

try{
writer->Update();
}
catch(itk::ExceptionObject &e)
{
std::cerr << e << std::endl;
}
}

    return EXIT_SUCCESS;
}


------------------------------------------------------


Thank you in advance.


Best regards,


Abdelkhalek Bakkari
Ph.D candidate in Computer Science
Institute of Applied Computer Science
Lodz University of Technology, Poland


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20170207/b7943daf/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: BinaryFillHoleImage.rar
Type: application/octet-stream
Size: 44079 bytes
Desc: BinaryFillHoleImage.rar
URL: <http://public.kitware.com/pipermail/insight-users/attachments/20170207/b7943daf/attachment.obj>


More information about the Insight-users mailing list