> 文章列表 > Opencv+Python笔记(四)图像的形态学处理

Opencv+Python笔记(四)图像的形态学处理

Opencv+Python笔记(四)图像的形态学处理

1.腐蚀与膨胀

膨胀用来处理缺陷问题,把缺陷填补掉,提高亮区面积; 腐蚀用来处理毛刺问题,把毛刺腐蚀掉,降低亮区面积。

腐蚀操作可以消除噪点,同时消除部分边界值,导致目标图像整体缩小。
膨胀操作可以使目标特征值增大,导致目标图像整体放大。

腐蚀的规则就是:kernel覆盖img的区域如果有白色,则把核的中心那个点标注为白色,如果该区域没有白色,则不用处理,这里相当于“&&”且运算
膨胀其实非常类似,只不过它关注的是核形状区域有没有黑色B,如果有,就把锚点涂成黑色
在这里插入图片描述
用1代表黑色0代表白色 对A图进行核为 3 * 3 的腐蚀操作后,中间的0会变成1 同理 对B图进行核为3 * 3的膨胀操作后,中间的1会变成0

Opencv API:

cv2.erode(src, kernel, iterations)  # 腐蚀
cv2.dilate(src, kernel, iterations)  # 膨胀

输入:1.src:要进行操作的图像;2.kernel:核结构;3.iterations:要进行腐蚀或者膨胀的次数,默认为1
输出:操作后得到的图像

卷积核核结构构造

kernel = np.ones((5, 5), np.uint8)  #创建一个大小为 5x5 的全为 1 的矩阵,数据类型为 unsigned int 8。它通常被用作图像处理中的卷积核。

2.开运算和闭运算

开运算是先腐蚀后膨胀(有利于把亮刺腐蚀掉);闭运算是先膨胀后腐蚀(有利于把黑洞膨胀掉)图像比较亮的地方是图像的主体部分

开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。开运算一般能平滑图像的轮廓,削弱狭窄部分,去掉较细的突出。
在这里插入图片描述

闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。闭运算也是平滑图像的轮廓,与开运算相反,它一般熔合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。
在这里插入图片描述

开运算用于去毛刺 闭运算用于去孔洞

Opencv API:

cv2.morphologyEx(src, op, kernel)

输入:1.src:要进行运算的图像;2.op:进行的操作类型;3.kernel:使用的卷积核类型
输出:开闭运算后得到的图像

3.礼帽与黑帽(顶帽与底帽)

(1)礼帽:取出亮度高的地方
顶帽运算 = 原图像 - 开运算
开运算可以消除暗背景下的高亮区域,那么如果用原图减去开运算结果就可以得到原图中灰度较亮的区域,所以又称白顶帽变换。
在二值图像中取出亮度较高的部分

(2)黑帽:取出亮度低的地方
底帽运算 = 原图像 - 闭运算
闭运算可以删除亮背景下的暗区域,那么用原图减去闭运算结果就可以得到原图像中灰度较暗的区域,所以又称黑底帽变换。
在二值图像中取出亮度较低的部分

Opencv API:

cv2.morphologyEx(src, op, kernel)

参数同上

在这里插入图片描述

参数 功能
cv2.MORPH_OPEN 开运算
cv2.MORPH_CLOSE 闭运算
cv2.MORPH_TOPHAT 礼帽运算
cv2.MORPH_BLACKHAT 黑帽运算