[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