//ITK
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"
//#include "itkBinaryErodeImageFilter.h"//这是二值图像的腐蚀
#include "itkGrayscaleErodeImageFilter.h"
#include "itkBinaryBallStructuringElement.h"
#include "itkBinaryThresholdImageFilter.h"
//C++
#include "iostream"
using namespace std;
int main() {
// 实例化对象模型
const unsigned int Dimension = 2;
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;
typedef itk::ImageFileWriter< OutputImageType > WriterType;
//用于二值图像的构造成员
typedef itk::BinaryBallStructuringElement< InputPixelType, Dimension > StructuringElementType;
// 腐蚀,需要用输入、输出图像类型和构造成员实例化¯
typedef itk::GrayscaleErodeImageFilter <
InputImageType,
OutputImageType,
StructuringElementType > ErodeFilterType;
// 读取、写入图像文件滤波器
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName("../data/threshold.png");
// /////*创建腐蚀滤波器对象
ErodeFilterType::Pointer GrayscaleErode = ErodeFilterType::New();
GrayscaleErode->SetInput(reader->GetOutput());
// 创建构造成员对象
StructuringElementType structuringElement;
// 设置构造成员的大小
structuringElement.SetRadius(3); //领域大小为3*3,结构元素se为3*3
// 初始化构造成员的操作符
structuringElement.CreateStructuringElement();
// 设置腐蚀构造成员
GrayscaleErode->SetKernel(structuringElement);
// 触发腐蚀处理后的写操作
WriterType::Pointer writerErosion = WriterType::New();
writerErosion->SetFileName("../save/Erosion.png");
writerErosion->SetInput(GrayscaleErode->GetOutput());
writerErosion->Update();
return EXIT_SUCCESS;
}
ITK做腐蚀操作
猜你喜欢
转载自blog.csdn.net/weixin_44723106/article/details/105298123
今日推荐
周排行