数字图像处理:第八章 形态学运算
第八章 形态学运算
目录
- 引言
- 基本概念
- 开运算和闭运算
- 击中击不中变换HMT(Hit-Miss Transform)
- 边界和骨架(Boundary and Skeleton)
作业
1.引言
形态学运算是针对二值图象依据数学形态学(Mathematical Morphology)的集合论方法发展起来的图象处理方法。数学形态学起源于岩相学对岩石结构的定量描述工作,近年来在数字图象处理和机器视觉领域中得到了广泛的应用,形成了一种独特的数字图象分析方法和理论。
通常形态学图象处理表现为一种邻域运算形式,一种特殊定义的邻域称之为“结构元素”(Structure Element),在每个象素位置上它与二值图象对应的区域进行特定的逻辑运算,逻辑运算的结果为输出图象的相应象素。形态学运算的效果取决于结构元素的大小、内容以及逻辑运算的性质。常见的形态学运算有腐蚀(Erosion)和膨胀(Dilation)。
给定二值图象I(x,y)和作为结构元素的二值模板T(i,j),则典型的腐蚀与膨胀运算可表示成:
腐蚀
膨胀
几种简单对称结构元素(圆形、方形、菱形)如下图所示:
2. 基本概念
(1)包含、击中、不击中
按照集合的概念,给定两个集合:对象(Object)X和结构元素(Structure Element)B,它们之间的关系有如图所示的三种情况:
(2)平移、对称集
平移
对称集(将B旋转180度得到)
(3) 腐蚀
腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。一般意义的腐蚀概念定义为
也就是说,由B对X腐蚀所产生的二值图象E是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么B将完全包含于X中。
(4)膨胀
膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。可以用来填补物体中的空洞。一般意义的膨胀概念定义为
也就是说,由B对X膨胀所产生的二值图象D是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么它与X的交集非空。
性质:对偶关系
例如:
另外,腐蚀和膨胀都可以用平移来说明:
例如,在下图中利用圆形结构元素做膨胀运算,填补“细缝”。
(图片来源:艾海舟,王栓,何克忠,基于差分图象的人脸检测,中国图象图形学报,1998;3(12): 987-992.)
3. 开运算和闭运算
(1)开运算
先腐蚀后膨胀的过程称为开运算。用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。
(2)闭运算
先膨胀后腐蚀的过程称为闭运算。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积。
通常,由于噪声的影响,图象在阈值化后所得到边界往往是很不平滑的,物体区域具有一些噪声孔,背景区域上散布着一些小的噪声物体。连续的开和闭运算可以有效地改善这种情况。有时需要经过多次腐蚀之后再加上相同次数的膨胀,才可以产生比较好的效果。
例如:开运算,B1作用结果:去掉小刺,但未去掉小桥;B2作用结果:有位移。
闭运算,B1作用结果:去掉小刺,但未去掉小桥;B2作用结果:去掉小刺,和小桥。
4. 击中击不中变换HMT(Hit-MissTransform)
将形态学运算推广到更为一般的情况,实际上就演变为条件严格的模板匹配。这时结构元素不仅含有物体点,而且还含有背景点,只有当结构元素与所对应的区域完全符合时才作为结果输出到输出图象。
模板T由两部分组成(T1,T2), T1物体点,T2背景点,HMT定义为
例如,在下图中,对于三个不同的T模板,在X中标出了符合条件的位置。
性质:(1)时,
(2)
4.1细化和粗化
(1)细化(Thin)
细化可以通过逐步去掉满足匹配条件的点的方法来实现,每步运算可表示成:
系统地细化需要考虑一系列的模板,如,其中是旋转的结果(90º ,180º ,270º )共8种情况。
例如,可用于细化的结构元素有
问题:用,是否包含所有可删除的情况?是否包含端点?
具体的细化算法参见第七章(..\chapter07\script07_ahz.htm)。
(2)粗化(Thick)
用点集合,时,
故要选择合适的结构元素,如
对偶性:(验证一下)
其中,当时,
5. 边界和骨架(Boundary andSkeleton)
边界运算可以用:
抽骨架(Skeletonization)(骨架也称为中轴medial axis)与细化不同主要在于中轴骨架在拐角处延伸到了边界,而细化则不是。抽骨架的一种方法是:
其中
用不同大小的结构元素nG逐步对X腐蚀,直到,每次腐蚀得到宽度和nG成正比的区域段的骨架。
以上方法存在一些问题,如有时骨架不连通了,而原区域是连通。一种改进的方法是采用全方形的结构元素
演示:..\SourceProgramCodes\chapter9\武勃981403\Debug\ViewDIB.exe
Binary Sobel Edge
Dilation
Erosion
Open
Close
Thinning by Structure Elemnets of T and L shapes
相关的网上资料:Morphology-basedOperations.htm(..\..\download_IPCVPR\IPFundamentals\Morphology-basedOperations.htm)
致谢:本章的形态学运算示意图取自朱志刚博士的讲义:朱志刚,数字图象处理,1998年6月,pp.94-102。祥见其讲义:3.6 形态学运算(..\Readings\chapter08\6morph.doc)
推荐参考资料:Edward Dougherty (ed.), Mathematical morphology inimage processing, M. Dekker, New York, 1993.
作业
- 在二值化程序基础上,编制基本的形态学运算(腐蚀和膨胀、开闭)程序,针对输入的任意图象选择不同的阈值做二值化,再做形态学处理,通过交互输入不同类型的结构元素观察效果。
- 编制抽取中轴的程序,通过用画板等方式生成的各种类型的二值图象观察效果。
返回主目录 返回本章目录
清华大学计算机系 艾海舟
最近修改时间:2001年7月18日
出处:http://media.cs.tsinghua.edu.cn/~ahz/digitalimageprocess/CourseImageProcess.html
数字图像处理:第八章 形态学运算相关推荐
- 数字图像处理第八章——图像压缩
数字图像处理第八章 数字图像处理---图像压缩 (一) 背景 (二) 编码冗余 2.1 霍夫曼码 2.2 霍夫曼编码 2.3 霍夫曼译码 (三)空间冗余 (四)不相关的信息 (五)JPEG 压缩 5. ...
- 数字图像处理——第九章 形态学图像处理
数字图像处理--第9章 形态学图像处理 文章目录 数字图像处理--第9章 形态学图像处理 1 基础知识 1.1 形态学图像 1.2 二值图像 2 腐蚀和膨胀 2.1 腐蚀 2.2 膨胀 3 开操作与闭 ...
- 数字图像处理python实现-形态学处理
内容简介 腐蚀膨胀 开闭运算 轮廓提取 击中与击不中 骨架提取 细化骨架提取 细化 裁剪 距离变换骨架提取 Hilditch算法骨架提取 首先明确一点形态学操作都是针对与二值图像,在灰度图像的形态学处 ...
- 数字图像处理第九章——形态学图像处理
数字图像处理第九章 数字图像处理---形态学图像处理 (一)预备知识 1.1 集合理论中的基本概念 1.2 二值图像.集合及逻辑算子 (二)膨胀和腐蚀 2.1 膨胀 2.2 结构元的分解 2.3 st ...
- 数字图像处理第九章 形态学图像处理
形态学图像处理 1 预备知识 1.1 集合理论中的基本概念 1.2 二值图像.集合及逻辑算子 2 膨胀和腐蚀 2.1 膨胀 2.2 腐蚀 3 膨胀与腐蚀的结合 3.1 开操作和闭操作 3.2 击中或击 ...
- 数字图像处理第九章----形态学图像处理
文章目录 1.概念 2.腐蚀与膨胀 3.开闭运算 4.顶帽与黑帽运算 5.边界提取与区域填充 6.细化 7.总结 1.概念 形态学操作:数学形态学时基于集合论的图像处理方法,最早出现在生物学的形态与结 ...
- 图像处理-二值形态学运算
个人博客:http://www.chenjianqu.com/ 原文链接:http://www.chenjianqu.com/show-10.html 数学形态学 数学形态学(Mathematical ...
- 数字图像处理 第八章 图像压缩
第八章 图像压缩 一.基础知识 1.1编码冗余 1.2空间和时间冗余 1.3不相关的信息 1.4图像信息的度量 1.5保真度准则 1.6图像压缩模型 二.一些基本的压缩方法 2.1霍夫曼编码 Pyth ...
- 数字图像处理——第九章 形态学处理
文章目录 引言 9.1 一些基本的形态学集合 9.2 腐蚀和膨胀 9.3 开操作与闭操作 9.4 击中与击不中 9.5 形态学处理函数 实验部分 总结 引言 本章主要将数学形态学作为工具从图像中提取表 ...
最新文章
- Java实现文件复制的四种方式
- 牛客网 在线编程 数据流中的中位数
- python3调用adb命令_如何使用Python执行adb命令?
- 设计模式(一)---简单工厂模式
- 【算法设计与分析】02 货郎问题与计算复杂性理论
- 垃圾分类智能化-垃圾分类机器人
- python子进程kerberos_Anaconda3的python找不到kerberos凭证缓存
- js 免费语音合成 (百度AI)- 代码篇
- C#中的Boolean类型
- Python第3次作业
- Swift 实现图片转字符画的功能
- Mcafee(麦咖啡)8.5i 使用设置图解
- cf 1538D - Another Problem About Dividing Numbers
- ubuntu桌面美化mac_教程:为你的linux桌面带来Mac OS Mojave的体验
- 前端——》H5页面开屏分离特效
- Apache POI操作Excel文件
- 计算机图形学实验四 OpenGL的鼠标交互绘制
- 先學30天jQuery再說之属性操作 - .contains() 方法和 :contains 选择器(par7)
- Day134-136.尚品汇:平台属性接口、SPU、跨域问题、配置持久化、MinIO 分布式文件存储系统
- Verilog计数器0~9999
热门文章
- Spring Boot - 构建数据访问层
- 深入理解分布式技术 - 构建高可用的消息队列
- ajax 取值 返回map_springboot|前端发ajax请求到后台Controller及常见的坑
- 爬虫学习笔记(八)—— Scrapy框架(三):CrawSpider模板
- python 顺序栈及基本操作
- python 逐行调试工具_在线编译或编辑Python的5个最佳工具
- .bak 服务器备份文件,如何从SQL Server Management Studio中的多个备份(bak)文件还原数据库...
- 不定高度的弹框 垂直水平居中
- HashMap 和HashTable区别和实现原理。
- mysql5.7.1.9二进制安装_mysql 5.7.9 linux二进制安装