定义:数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。图像形态学处理中我们感兴趣的主要是二值图像。

具体定义参考博客http://blog.csdn.net/poem_qianmo/article/details/23710721

在 ITK中使用NeighborhoodIterators和 itk::NeighborhoodOperators来实现数学形态学滤波器。研发平台中包含有两种图像形态学算法:对二值图像操作的滤波器和对灰度尺图像操作的滤波器。

itk::BinaryErodeImageFilter  腐蚀操作

itk::BinaryDilateImageFilter  膨胀操作

ITK中的数学形态学操作通过对每个输入像素的邻域应用一个操作来实现。规则和邻域的结合被称为构造成员。

下面包含了构造一个简单地使用数学形态学滤波器需要的头文件:
#include "itkBinaryErodeImageFilter.h"
#include "itkBinaryDilateImageFilter.h"
#include "itkBinaryBallStructuringElement.h"
接下来的代码定义了输入、输出像素类型以及和它们相关的图像类型:
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;

构造成员是作为一个NeighborhoodOperator 来实现的。事实上,默认的构造成员是
itk::BinaryBallStructuringElement 类。这个类是使用像素类型和输入图像维来进行实例化的:
typedef itk::BinaryBallStructuringElement<
InputPixelType,
Dimension > StructuringElementType;
然后使用构造成员类型和输入、输出图像类型一起来对滤波器类型进行实例化:
typedef itk::BinaryErodeImageFilter<
InputImageType,
OutputImageType,
StructuringElementType > ErodeFilterType;
typedef itk::BinaryDilateImageFilter<
InputImageType,
OutputImageType,
StructuringElementType > DilateFilterType;
现在通过调用 New( )方式来创建这个滤波器并将结果指向一个itk::SmartPointer:
ErodeFilterType::Pointer binaryErode = ErodeFilterType::New( );
DilateFilterType::Pointer binaryDilate = DilateFilterType::New( );

构造成员不是一个引用记数类。因此它是作为一个C++堆栈而不是使用 New( )和SmartPointers来创建的。使用SetRadius( )方式来定义和构造成员相关的邻域半径并调用CreateStructuringElement( )方式以便于初始化操作符。如下面所阐述的那样,使用SetKernel( )方式将构造成员的结果传递给数学形态学滤波器。

StructuringElementType structuringElement;
structuringElement.SetRadius( 1 ); // 3x3 structuring element
structuringElement.CreateStructuringElement( );
130
binaryErode->SetKernel( structuringElement );
binaryDilate->SetKernel( structuringElement );

ITK 形态学处理(Morph process)相关推荐

  1. ITK 形态学中的开运算和闭运算 腐蚀 膨胀

    一. 图像形态学处理 -- 膨胀和腐蚀 腐蚀在二值图像的基础上做"收缩"或"细化"操作; 膨胀在二值图像的基础上做"加长"或"变粗 ...

  2. opencv 仪表数字切割

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Mar 21 12:42:15 201 ...

  3. opencv 车牌切割

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Mar 21 12:42:15 201 ...

  4. opencv 标记有数字的区域

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Created on Thu Mar 21 12:42:15 201 ...

  5. 自然语言处理方面的顶会

    转载:「自然语言处理(NLP)」你必须要知道的八个国际会议! 引言     国际学术会议是一种学术影响度较高的会议,它具有国际性.权威性.高知识性.高互动性等特点,其参会者一般为科学家.学者.教师等. ...

  6. 自然语言处理(NLP)的八个国际顶级会议!

    引言 国际学术会议是一种学术影响度较高的会议,它具有国际性.权威性.高知识性.高互动性等特点,其参会者一般为科学家.学者.教师等.具有高学历的研究人员把它作为一种科研学术的交流方式,够为科研成果的发表 ...

  7. 知识图谱方向顶会小记

    知识图谱方向顶会小记 知识图谱方向顶会小记 人工智能 AAAI(CCF-A类) NeurIPS(CCF-A类) ICML(CCF-A类) IJCAI(CCF-A类) ICLR(CCF未推荐) 自然语言 ...

  8. 车牌识别EasyPR--开发详解

    非常详细的讲解车牌识别 转载自:http://www.cnblogs.com/subconscious/p/3979988.html http://www.cnblogs.com/asks/p/437 ...

  9. 一文了解“什么是ACL”、“什么是EACL”、“什么是NAACL”、“什么是AACL”国际会议

    来源: AINLPer微信公众号 编辑: ShuYini 校稿: ShuYini 时间: 2022-10-12 引言  最近有小伙伴私信问:什么是ACL国际会议,它是一个什么等级的会议,另外ACL.E ...

最新文章

  1. R语言distCosine函数计算大圆距离实战(Law of Cosines Great Circle Distance)
  2. spring框架四大原则
  3. MySQL修改存储过程(ALTER PROCEDURE)
  4. 教你如何使用hexo以及nginx、github搭建属于自己的博客(操心的妈妈级教学)
  5. cortex M0 典型os模型
  6. 【转】程序员技术练级攻略
  7. 【操作系统】—中断和异常
  8. 用asp.net实现微博系统_微信几亿人在线的点赞、取消点赞系统,用Redis如何实现?...
  9. Reading HTML content from a UIWebView
  10. react中对象扩展运算符使用问题
  11. Viterbi算法(维特比算法)
  12. FPN网络和RPN网络介绍
  13. 唯一标识 微信小程序_微信小程序中用户唯一ID的获取
  14. python爬虫论文总结与展望怎么写_汉语言文学毕业论文总结与展望怎么写
  15. power apps -- Game Demo page 制作游戏步骤详解
  16. 冠军联赛:当火焰变成焰火 海水变成泪水
  17. 我的世界java版旁观模式_我的世界:8个被判定为bug的特性,旁观模式:这锅让我来背...
  18. 文字烫金效果html,ps如何制作烫金效果 PS制作logo烫黄金效果教程
  19. 02325计算机系统结构ppt,02325计算机系统结构2009
  20. 基于GIS技术的城市交通管理应用

热门文章

  1. (复健计划)Python列表
  2. 根据ip地址获取城市名的几种方法
  3. 使用java方式装配Bean
  4. 支付宝无障碍体验提升之路
  5. annotations are not allowed here
  6. 21 函数的凸性与拐点
  7. 浅谈互联网社交类产品更迭
  8. 电子计算机体积,世界上体积最大的计算机
  9. python gui学生管理系统(Python gui+MySQL数据库)
  10. (转)学习linux的几本书