7、形态学处理与图像梯度(腐蚀与膨胀、核运算,梯度原理)

本文介绍了图像处理中的形态学操作,包括腐蚀、膨胀、开运算、闭运算、梯度、礼帽、黑帽运算,以及它们在去除噪声、填补空洞、提取边缘等方面的应用。同时,探讨了图像梯度的概念,利用Sobel、Scharr和Laplacian算子计算图像边缘,并展示了不同输出数据类型对结果的影响。
摘要由CSDN通过智能技术生成

一、形态学处理

形态学操作是根据图像形状的简单操作。一般情况下对二值化图像进行的操作。输入两个参数,一个是原始图像,第二个称为结构化元素或核,它是用来决定操作的性质的。两个基本的形态学操作是腐蚀和膨胀。他们的变体构成了开运算、闭运算和梯度等。

腐蚀
粗略的说,腐蚀可以使目标区域范围“变小”,其实质造成图像的边界收缩,可以用来消除小且无意义的目标物。
原理:用P减去结构元素B形成的小矩形,取小矩形中最小值赋到对应原点的位置即可。
dst=cv.erode(src,kernel[,dst[,anchor[,iterations[,borderType[,borderValues]]]]])

代码演示:

import cv2
import numpy as np

img = cv2.imread('j.png', 0)
cv2.imshow('j.png', img)
print(img.shape)

#您可以将内核看作是一个小矩阵,我们在图像上滑动以进行(卷积)操作,例如模糊,锐化,边缘检测或其他图像处理操作。
kernel = np.ones((5, 5), np.uint8)
erosion = cv2.erode(img, kernel, iterations=1)

cv2.imshow('erode', erosion)
cv2.moveWindow('erode', x=img.shape[1], y=0)

cv2.waitKey(0)
cv2.destroyAllWindows()

结果演示:
在这里插入图片描述

膨胀
粗略地说,膨胀会使目标区域范围“变大”,将于目标区域接触的背景点合并到该目标物中,使目标边界向外部扩张。作用就是可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声。
原理:用P加上B,然后取这个区域中的最大值赋值给结构元素B的原点所对应的位置。
dst=cv.dilate(src,kernel[,dst[,anchor[,iterations[,borderType[,borderValues]]]]])

代码演示:

import cv2
import numpy as np

img = cv2.imread('j.png', 0)
cv2.imshow('j.png', img)
print(img.shape)

kernel = np.ones((5, 5), np.uint8)#定义卷积核,5行5列
dilation = cv2.dilate(img, kernel, iterations=1)#将核传入dilation函数  膨胀

cv2.imshow('dilation', dilation)
cv2.moveWindow('dilation', x=img.shape[1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值