[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