当前位置: 首页 > news >正文

【图像处理】图像形态学操作

参考文章:07-形态学操作

一、图像腐蚀

在图像的形态学操作中,腐蚀主要针对二值图像,使用卷积核的中心点逐个扫描原始图像。被扫描到的原始图像中的像素
点,只有当卷积核对应的元素值均为1(白色)时,其值才为1(白色),否则值为0(黑色)。

在这里插入图片描述

腐蚀是对白色部分(高亮部分)而言的,可以理解为删除对象边界的某些像素点,即效果图的高亮区域比原图更小。

在这里插入图片描述

函数erodedst = cv2.erode(src, kernel, iterations)

  1. src:源图像
  2. kernel:卷积核
  3. iterations:迭代次数,默认值为1

例如,生成一个5×5的卷积核:

kernel = np.ones((5,5), np.uint8)
import cv2
import numpy as npimg = cv2.imread(r"image\erode.bmp", cv2.IMREAD_UNCHANGED)# 卷积核
kernel = np.ones((5,5), np.uint8)
# 图像腐蚀
erosion = cv2.erode(img, kernel, iterations=5)cv2.imshow("original", img)
cv2.imshow("erosion", erosion)cv2.waitKey(0)
cv2.destroyAllWindows()

图像腐蚀的实验结果:
在这里插入图片描述

二、图像膨胀

图像膨胀是图像腐蚀的逆操作,也主要针对二值图像。使用卷积核的中心点逐个像素扫描原始图像,被扫描到的原始图像中的像素点,当卷积核对应的元素值只要有一个为1(白色)时,其值就为1(白色),否则值为0(黑色)。

在这里插入图片描述

膨胀也是对白色部分(高亮部分)而言的,即效果图的高亮区域比原图更大。

在这里插入图片描述

函数dilate

dst = cv2.dilate(src, kernel, iterations)

  1. src:源图像
  2. kernel:卷积核
  3. iterations:迭代次数,默认值为1

例如,生成一个5×5的卷积核:

kernel = np.ones((5,5), np.uint8)
import cv2
import numpy as npimg = cv2.imread(r"image\dilation.bmp", cv2.IMREAD_UNCHANGED)# 卷积核
kernel = np.ones((5,5), np.uint8)
# 图像膨胀
dilation = cv2.dilate(img, kernel, iterations=5)cv2.imshow("original", img)
cv2.imshow("dilation", dilation)cv2.waitKey(0)
cv2.destroyAllWindows()

图像膨胀的实验结果:
在这里插入图片描述

三、开运算

先腐蚀后膨胀,能够有效去除噪声,并保持原有图像形状不变。

在这里插入图片描述

函数morphologyEx
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

  1. img:源图像
  2. cv2.MORPH_OPEN:开运算标识
  3. kernel:卷积核

例如,生成一个5×5的卷积核:

kernel = np.ones((5,5), np.uint8)
import cv2
import numpy as npimg = cv2.imread(r"image\opening.bmp", cv2.IMREAD_UNCHANGED)# 卷积核
kernel = np.ones((10,10), np.uint8)
# 开运算,先腐蚀后膨胀
result = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)cv2.imshow("original", img)
cv2.imshow("result", result)cv2.waitKey(0)
cv2.destroyAllWindows()

开运算的实验结果:

在这里插入图片描述

四、闭运算

先膨胀后腐蚀,有助于关闭物体内的小孔,或物体上的小黑点,并保持原有图像形状不变。

在这里插入图片描述

函数morphologyEx
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

  1. img:源图像
  2. cv2.MORPH_CLOSE:闭运算标识
  3. kernel:卷积核

例如,生成一个5×5的卷积核:

kernel = np.ones((5,5), np.uint8)
import cv2
import numpy as npimg = cv2.imread(r"image\closing.bmp", cv2.IMREAD_UNCHANGED)# 卷积核
kernel = np.ones((10,10), np.uint8)
# 闭运算,先膨胀后腐蚀
result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)cv2.imshow("original", img)
cv2.imshow("result", result)cv2.waitKey(0)
cv2.destroyAllWindows()

闭运算的实验结果:

在这里插入图片描述

五、梯度运算

通过对原始图像分别进行膨胀和腐蚀处理,得到梯度图像 = 膨胀图像 - 腐蚀图像。

在这里插入图片描述

函数morphologyEx
result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

  1. img:源图像
  2. cv2.MORPH_GRADIENT:梯度运算标识
  3. kernel:卷积核

例如,生成一个5×5的卷积核:

kernel = np.ones((5,5), np.uint8)
import cv2
import numpy as npimg = cv2.imread(r"image\gradient.bmp", cv2.IMREAD_UNCHANGED)# 卷积核
kernel = np.ones((10,10), np.uint8)
# 梯度运算,梯度图像 = 膨胀图像 - 腐蚀图像
result = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)cv2.imshow("original", img)
cv2.imshow("result", result)cv2.waitKey(0)
cv2.destroyAllWindows()

梯度运算的实验结果:

在这里插入图片描述

六、礼帽操作

通过对原始图像进行开运算处理,得到礼帽图像 = 原始图像 - 开运算图像。

在这里插入图片描述

函数morphologyEx
result = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

  1. img:源图像
  2. cv2.MORPH_TOPHAT:礼帽操作标识
  3. kernel:卷积核

例如,生成一个5×5的卷积核:

kernel = np.ones((5,5), np.uint8)
import cv2
import numpy as npimg = cv2.imread(r"image\tophat.bmp", cv2.IMREAD_UNCHANGED)# 卷积核
kernel = np.ones((5,5), np.uint8)
# 礼帽操作,礼帽图像 = 原始图像 - 开运算图像
result = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)cv2.imshow("original", img)
cv2.imshow("result", result)cv2.waitKey(0)
cv2.destroyAllWindows()

礼帽操作的实验结果:

在这里插入图片描述

七、黑帽操作

通过对原始图像进行闭运算处理,得到黑帽图像 = 闭运算图像 - 原始图像。
在这里插入图片描述

函数morphologyEx
result = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

  1. img:源图像
  2. cv2.MORPH_BLACKHAT:黑帽操作标识
  3. kernel:卷积核

例如,生成一个5×5的卷积核:

kernel = np.ones((5,5), np.uint8)
import cv2
import numpy as npimg = cv2.imread(r"image\blackhat.bmp", cv2.IMREAD_UNCHANGED)# 卷积核
kernel = np.ones((10,10), np.uint8)
# 黑帽操作,黑帽图像 = 闭运算图像 - 原始图像
result = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)cv2.imshow("original", img)
cv2.imshow("result", result)cv2.waitKey(0)
cv2.destroyAllWindows()

黑帽操作的实验结果:

在这里插入图片描述

更多资料:https://github.com/0voice

http://www.dtcms.com/a/520284.html

相关文章:

  • 网站上传 空间 数据库开发一个电商平台app要多少钱
  • 如何制作网站链接数字镭网站开发
  • 使用python的matplotlib进行绘图
  • Nginx使用auth_request模块做外部认证集成Kibana
  • 【题解】洛谷 P2218 [HAOI2007] 覆盖问题 [二分 + 思维]
  • xss-labs pass-12
  • 企业网站建设服务电话做网站什么主题好做
  • 注册电气工程师(供配电)执业资格考试专业考试规范及设计手册(2025版)
  • 关于zwg技术的深度解析与应用前景
  • linux 什么做网站好网站优化课程培训
  • 键盘PCB为何对板厂要求更高?差异、难点及猎板解决方案解析
  • OMSDK WebView Display 接入步骤
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十S四)储存服务-NFS文件储存
  • tidex-数字货币交易所
  • C#使用OpenVinoSharp+魔塔社区的读光中英文OCR ONNX模型进行文字检测(仅检测不做识别)
  • 积分商城小程序深圳seo网络优化公司
  • [Linux文件系统——Lesson17.软硬链接]
  • apr库在x86架构下交叉编译成arm64架构
  • 软件设计师-结构化分析方法-耦合
  • 响应式企业网站 下载网站制作是不是要先用ps做
  • 购买网站建设需要注意app软件开发制作公司电话
  • 【AI Agent】入门、学习、求职
  • C++中const与引用深度解析:从使用到底层原理
  • Product Hunt 每日热榜 | 2025-10-23
  • 【大话码游之 Observation 传说】上集:月光宝盒里的计数玄机
  • raid恢复之后数据库故障处理(ora-01200,ORA-26101,ORA-600)---惜分飞
  • 2025年中专机电一体化专业做什么工作?
  • JavaWeb 全栈学习路径:从工具到项目的实战蜕变指南
  • 中国工信备案查询网站做网站的软件电子
  • tailwindcss暗色主题切换