[ITK-users] Issue with BinaryDilate(Erode)ImageFilter with not "0/255" binary image

zagwin zagwin at gmail.com
Fri Jun 5 17:49:33 EDT 2015


Hello, 

It seems I found an interesting problem (actually, I don't know if it is
real problem). 
I found whenever I input an not 0/255 binary image, such as 0/1 image, or
0/127 image, nothing changed (this can be solved by SetDilateValue(1)).
However, I thought it is two-value binary image, I don't need to set this
value as wiki example showed. Am I right?

My simple code is as below:

int foreground = 255; // I tried 1 and 127, not work
typedef signed short                         InputPixelType;
typedef unsigned char                      UCharPixelType;
static const unsigned int InputDimension = 2;//Dimension of image
typedef itk::Image< InputPixelType, InputDimension > InputImageType;//Image
Type
typedef itk::Image< UCharPixelType, InputDimension > UCharImageType;

typedef itk::ImageFileReader<InputImageType>   ReaderType;
ReaderType::Pointer reader = ReaderType::New();
m_itkImage = InputImageType::New();
reader->SetFileName("MG0244.dcm");
reader->Update();
m_itkImage->Graft(reader->GetOutput());


typedef itk::BinaryThresholdImageFilter     <InputImageType, UCharImageType> 
BinaryThresholdFilterType;
typedef itk::BinaryBallStructuringElement   <UCharPixelType, InputDimension> 
StructuringElementType;
typedef itk::BinaryDilateImageFilter        <UCharImageType, UCharImageType,
StructuringElementType> BinaryDilateFilterType;
typedef itk::BinaryErodeImageFilter         <UCharImageType, UCharImageType,
StructuringElementType> BinaryErodeFilterType;

typedef itk::ImageToVTKImageFilter<UCharImageType> ConnectorType2;
ConnectorType2::Pointer connector2 = ConnectorType2::New();
vtkSmartPointer<vtkImageData> mask  = vtkSmartPointer<vtkImageData>::New();

BinaryThresholdFilterType::Pointer    btfilter1  =
BinaryThresholdFilterType::New();
BinaryDilateFilterType::Pointer       bDilate1   =
BinaryDilateFilterType::New();
BinaryErodeFilterType::Pointer       bErode1   =
BinaryErodeFilterType::New();

btfilter1->SetLowerThreshold(100);
btfilter1->SetUpperThreshold(500);
btfilter1->SetInsideValue(foreground);
btfilter1->SetOutsideValue(0);

StructuringElementType element1;
element1.SetRadius(3);
element1.CreateStructuringElement();
bDilate1->SetKernel(element1);
bErode1->SetKernel(element1);
//bDilate1->SetDilateValue(foreground);  //these two lines solve the problem
of non-255 values
//bErode1->SetErodeValue(foreground);

btfilter1->SetInput(m_itkImage.GetPointer());
bDilate1->SetInput(btfilter1->GetOutput());
bErode1->SetInput(btfilter1->GetOutput());

connector2->SetInput( /*bErode1*/ bDilate1->GetOutput() );
connector2->Update();
mask->DeepCopy(connector2->GetOutput());

image_view->SetInputData(mask);
image_view->GetRenderer()->ResetCamera();
image_view->Render();







--
View this message in context: http://itk-users.7.n7.nabble.com/Issue-with-BinaryDilate-Erode-ImageFilter-with-not-0-255-binary-image-tp35774.html
Sent from the ITK - Users mailing list archive at Nabble.com.


More information about the Insight-users mailing list