文章目录

  • 1、概念
  • 2、腐蚀与膨胀
  • 3、开闭运算
  • 4、顶帽与黑帽运算
  • 5、边界提取与区域填充
  • 6、细化
  • 7、总结

1、概念

形态学操作:数学形态学时基于集合论的图像处理方法,最早出现在生物学的形态与结构中,图像处理中的形态学操作可作用于图像增强、图像分割等场景。形态学操作的对象一般时二值图像和灰度图像。常见的形态学操作有腐蚀、膨胀、开操作、闭操作、顶帽、黑帽等。

2、腐蚀与膨胀

在腐蚀操作中,腐蚀的是图像的高亮部分
在二值图像中,腐蚀操作是结构元素与图像作“与运算”。在灰度图像中膨胀的或运算替换为最大值。
具体的操作方法是拿一个宽m,高n的矩形作为模板,将像素x至于模板的中心,根据模版的大小,遍历所有被模板覆盖的其他像素,修改像素x的值为所有像素中最小的值。
二值图像中膨胀是结构元素与图像做“或运算”,灰度图像中膨胀的或运算替换为最大值。

import matplotlib.pyplot as plt
import cv2
img = cv2.imread('D:/imdata/logo.tif',0)
#结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(3, 3))
#闭运算
eroded = cv2.erode(img,kernel)
#开运算
dilated = cv2.dilate(img,kernel)
plt.figure()
plt.subplot(131)
plt.imshow(img)
plt.subplot(132)
plt.imshow(eroded)
plt.subplot(133)
plt.imshow(dilated)
plt.show()


单从字体的变化来看,经过腐蚀后,字体变得粗了,经过膨胀后,字体变细了。

3、开闭运算

● 开运算:先腐蚀后膨胀
作用:用来消除图像中细小对象,在纤细点处分离物体和平滑较大物体的边界而不明显改变其面积和形状,所有小到不能容纳结构元素的物体都会被移除。
● 闭运算:先膨胀后腐蚀
作用:用来填充目标内部的细小孔洞或裂隙,连接断开的邻近像素块,在不明显改变物体面积和形状的情况下平滑其边界,所有小到不能完整容纳结构元素的细小空洞或裂隙,都会被闭运算填充。

import matplotlib.pyplot as plt
import cv2
img = cv2.imread('D:/imdata/logo.tif',0)
#结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5, 5))
#闭运算
closed = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
#开运算
opened = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)plt.figure()
plt.subplot(131)
plt.imshow(img)
plt.subplot(132)
plt.imshow(closed)
plt.subplot(133)
plt.imshow(opened)
plt.show()


可以看出,闭运算是消去某些部分,而开运算是对其进行填充。

4、顶帽与黑帽运算

● 顶帽运算
方式:从原图中减去开运算后的图像
作用:突出一些比“原图轮廓周围的区域”更明亮的区域,用来分离比邻近点亮一些的斑块。图像的背景颜色不均匀时,顶帽运算可以减少二值化的图像的边缘丧失
● 黑帽运算
方式:闭运算后的图像减原图
作用:突出比“原图轮廓周围的区域”更暗的区域,用来分离比邻近点暗一些的斑块。图像的背景颜色不均匀时,黑帽变换可以用于凸显亮背景上的暗物体。二值图效果与顶帽变换相比,就是一个方向相反的阴影。

import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('d:/imdata/logo.tif', 0)
kernel = np.ones((5, 5), np.uint8)
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
plt.subplot(131)
plt.imshow(img)
plt.subplot(132)
plt.imshow(tophat)
plt.subplot(133)
plt.imshow(blackhat)
plt.show()


可以看出,经过顶帽与黑帽后的图像差别是非常大的,在某些部分可以说是完全相反。

5、边界提取与区域填充

● 边界提取
要提取一个二值图像中的物体的边界,只需要将物体内部的点删除掉即可。那么我们可以对图像进行扫描,若在某一个点的周围像素的值都与它相同,就可将该点删去,这样我们呢就可得到图像中物体的边界了。
● 区域填充
区域填充可视为边界提取的反过程, 它是在边界已知的情况下得到边界包围的整个区域的形态学技术。

6、细化

图像细化一般作为一种图像预处理技术出现,目的是为了提取图像的骨架,以便更容易地分析图像。细化的思想是从线条边缘开始一层一层地向里剥夺,直到线条剩下一个像素为止。图像细化可大大压缩图像数据量并可以保持其形状的基本结构不变,为文字识别中的特征提取提供了基础。
细化算法应满足以下条件:
1)将条形区域变成一条薄线
2)薄线应位原条形区域的中心
3)薄线应保持原图像的拓扑特性
细化分为串行细化和并行细化,串行细化是指一般检测满足细化条件的点,一边删除细化点;并行细化是指检测细化点的时候不进行删除只进行标记,在检测完整个图像后一次性的删除所有标记点

7、总结

本章我们学习了数字图像处理中的一些形态学操作,腐蚀、膨胀、开闭运算、细化等,做了一些实验,对这些操作的效果进行了观察。

数字图像处理第九章----形态学图像处理相关推荐

  1. 数字图像处理第九章——形态学图像处理

    数字图像处理第九章 数字图像处理---形态学图像处理 (一)预备知识 1.1 集合理论中的基本概念 1.2 二值图像.集合及逻辑算子 (二)膨胀和腐蚀 2.1 膨胀 2.2 结构元的分解 2.3 st ...

  2. 数字图像处理——第九章 形态学图像处理

    数字图像处理--第9章 形态学图像处理 文章目录 数字图像处理--第9章 形态学图像处理 1 基础知识 1.1 形态学图像 1.2 二值图像 2 腐蚀和膨胀 2.1 腐蚀 2.2 膨胀 3 开操作与闭 ...

  3. 数字图像处理第九章 形态学图像处理

    形态学图像处理 1 预备知识 1.1 集合理论中的基本概念 1.2 二值图像.集合及逻辑算子 2 膨胀和腐蚀 2.1 膨胀 2.2 腐蚀 3 膨胀与腐蚀的结合 3.1 开操作和闭操作 3.2 击中或击 ...

  4. 数字图像处理第九章形态学处理

    文章目录 引言 9.1预备知识 9.2腐蚀和膨胀 9.2.1腐蚀 9.2.2膨胀 9.3开操作和闭操作 9.3.1开操作 9.3.2闭操作 9.4一些基本的形态学算法 9.4.1边界提取 9.4.2孔 ...

  5. 数字图像处理——第九章 形态学处理

    文章目录 引言 9.1 一些基本的形态学集合 9.2 腐蚀和膨胀 9.3 开操作与闭操作 9.4 击中与击不中 9.5 形态学处理函数 实验部分 总结 引言 本章主要将数学形态学作为工具从图像中提取表 ...

  6. 数字图像处理知识点梳理——第九章 形态学图像处理

    文章目录 1.预备知识 2.腐蚀和膨胀 3.开操作和闭操作 4.一些基本的形态学算法 1.预备知识 数学形态学的语言是集合论. 在形态学中集合的反射和平移广泛用来表达基于结构元(SE)的操作:研究一幅 ...

  7. imopen和bwmorph_数字图像处理第九章讲义.ppt

    第九章 形态学图像处理 预备知识 膨胀与腐蚀 开操作和闭操作 击中或击不中变换 一些基本的形态学算法 灰度级形态学 第九章 形态学图像处理 第九章 形态学图像处理 预备知识 预备知识 集合论中的几个基 ...

  8. 数字图像处理——第九章(形态学图像处理)

    参考:https://blog.csdn.net/Dujing2019/article/details/90050755 参考:https://blog.csdn.net/weixin_4190739 ...

  9. 数字图像处理第九章笔记——形态学图像处理

    目录 引言 一.预备知识 1.1 平移与反射 1.2 结构元 二. 腐蚀和膨胀 2.1 腐蚀 2.2 膨胀 2.3 对偶性 2.4 python实现腐蚀和膨胀 三.开操作和闭操作 四. 击中或击不中变 ...

最新文章

  1. 你社交网站上的照片,也许已经被用来训练人工智能了
  2. LED数码管仿真显示程序
  3. 阿里宣布Atlas正式开源:带你重返App开发的田园时代
  4. EXPLAIN PLAN获取SQL语句执行计划
  5. unity开宝箱动画_unity简单动画实现
  6. 结构型模式:外观模式(门面模式)
  7. 从系统设计到市场痛点,浅谈英国自助结账系统
  8. 学习笔记:Zookeeper 应用案例(上下线动态感知)
  9. Kafka日志清理之Log Deletion
  10. 201771010120 苏浪浪 《面向对象程序设计(java)》第二周学习总结
  11. 【PHP】安装wampserver3.1.19后apache无法启动问题
  12. CSS(网页样式语言)基础
  13. 使用 json 进行神经网络结构信息的格式化 (dump load)
  14. java 文件夹拷贝(文件夹里包含文件和文件夹) 代码
  15. 共模电感适用的频率_共模电感差模分量计算
  16. 漂亮实用的loading(加载)封装
  17. 在endnote中制作GB/T7714《文后参考文献著录规则》的输出格式
  18. python描述对象静态特性的数据为_要设置单选按钮,应使用的控件是:_学小易找答案...
  19. 建立“图书_读者”数据库及如下 3 个表,并输入实验数据,用 SQL 语句实现如下五个查询(opengauss)
  20. 直播拉流设备接入阿里云

热门文章

  1. java判断字符串st6_是否包含st5_第 18 章 在机器指令级调试
  2. 通信网络价值的魔鬼 梅特卡夫定律错在何处
  3. 玩转Java8Stream之函数式接口
  4. classes是什么意思怎么读_英语单词class怎么读,class的音标是什么,class是什么意思 - 音标网...
  5. Jaeger docker部署实操
  6. 了解一下,Android 10中的APEX
  7. android7源码结构分析
  8. 一头扎进springboot之捕获全局异常
  9. 苦逼的Python爬虫抓小说实战
  10. 气动高压球阀行业现状调研及趋势分析报告