OpenCV 腐蚀操作(Erosion)
腐蚀 + 膨胀 → 开运算(去小白点噪声)、闭运算(连接断裂物体)使用不同大小卷积核(3×3、5×5、7×7)观察腐蚀效果。只要邻域内有黑色像素 → 中心像素变黑 → 白色区域缩小。:取卷积核覆盖区域最小值 → 白色缩小、黑色扩展。尝试不同形状卷积核(矩形、椭圆、十字)对比效果。腐蚀 → 缩小前景(白色),扩展背景(黑色)卷积核大小、形状、迭代次数 → 决定腐蚀强度。:腐蚀次数(次数越多,白色区域
1. 基础概念
-
腐蚀操作:形态学操作的一种,用于 缩小图像中前景(白色区域)并扩展背景(黑色区域)。
-
前景:二值图像中白色部分(像素值 255)
-
背景:黑色部分(像素值 0)
作用:
-
去除小白点噪声
-
分离相连的白色区域
-
缩小前景对象,用于边界分析
-
与膨胀组合 → 开运算、闭运算
2. 数学原理
腐蚀操作依赖一个 结构元素(Kernel / 卷积核):
解释:
-
卷积核覆盖图像中心像素
-
取覆盖区域最小值作为中心像素的新值
-
只要邻域内有黑色像素 → 中心像素变黑 → 白色区域缩小
可视化原理:
假设 3×3 核覆盖的区域:
[255, 255, 255]
[255, 0, 255]
[255, 255, 255]
-
最小值 = 0 → 中心像素更新为 0
-
白色区域被缩小,黑色区域扩展
3. 卷积核(结构元素)
核大小:
-
核越大 → 白色区域缩小越多
-
核越小 → 白色区域缩小幅度小
核形状:
-
MORPH_RECT:矩形核,腐蚀均匀 -
MORPH_ELLIPSE:椭圆核,边缘腐蚀圆润 -
MORPH_CROSS:十字核,方向性腐蚀明显
创建方法:
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
4. OpenCV 实现
语法:
cv2.erode(src, kernel, iterations=1)
-
src:输入图像(灰度或二值图像) -
kernel:卷积核 -
iterations:腐蚀次数(次数越多,白色区域越小)
示例代码:
import cv2
import numpy as np
# 读取二值图像
img = cv2.imread("binary.png", 0)
# 创建卷积核
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5,5))
# 腐蚀操作
eroded = cv2.erode(img, kernel, iterations=2)
# 显示结果
cv2.imshow("Original", img)
cv2.imshow("Eroded", eroded)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. 核心要点
-
原理:取卷积核覆盖区域最小值 → 白色缩小、黑色扩展
-
核大小与形状:决定腐蚀强度和方向
-
迭代次数:控制腐蚀幅度
-
应用组合:
-
腐蚀 + 膨胀 → 开运算(去小白点噪声)、闭运算(连接断裂物体)
-
6. 练习任务
-
使用不同大小卷积核(3×3、5×5、7×7)观察腐蚀效果。
-
尝试不同形状卷积核(矩形、椭圆、十字)对比效果。
-
调整
iterations次数,观察白色区域缩小变化。 -
与膨胀组合处理噪声图片,理解开运算和闭运算效果。
✅ 重点记忆
-
腐蚀 → 缩小前景(白色),扩展背景(黑色)
-
卷积核大小、形状、迭代次数 → 决定腐蚀强度
-
数学本质 → 每个像素取卷积核覆盖区域最小值
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐

所有评论(0)