【OpenCV】学习OpenCV3——滤波与卷积(2)

一、导数和梯度

1.1 索贝尔算子cv2.Sobel()

  表示微分常用的算子是sobel算子,sobel算子可以实现任意阶导数和混合偏导数。
  sobel算子的一个好处就是可以将核定义为任何大小,并且可以快速迭代的构造这些核。大的核可以更好的近似导数,因为可以消除噪声的影响,不过假如导数在空间上变化剧烈,核太大可能发生偏差。
  dst=cv2.Sobel(src, ddepth, dx, dy, ksize=None, scale=None, delta=None, borderType=None)

参数含义
src输入图像
ddepth输出图像的深度或类型如cv.CV_32F
dx 求导顺序,取值为0,1,o代表不求导
dy求导顺序,取值为0,1,0代表不求导
ksize=None滤波器的宽和高
scale=None计算的导数值的可选比例因子
delta=None在将结果存储之前将其添加到结果中,增量值。
borderType=None边界填充的类型
    grad_x=cv.Sobel(image,cv.CV_32F,1,0)#求dx
    grad_y = cv.Sobel(image, cv.CV_32F, 0, 1) #求dy

1.2 Scharr算子cv2.Scharr()

  Scharr算子比Sobel算子更加准确,熟读同样很快。
  dst=cv2.Scharr(src, ddepth, dx, dy, scale=None, delta=None, borderType=None)

参数含义
src输入图像
ddepth输出图像的深度或类型如cv.CV_32F
dx 求导顺序,取值为0,1,o代表不求导
dy求导顺序,取值为0,1,0代表不求导
ksize=None滤波器的宽和高
scale=None计算的导数值的可选比例因子
delta=None在将结果存储之前将其添加到结果中,增量值。
borderType=None边界填充的类型
  grad_x=cv.Scharr(image,cv.CV_32F,1,0)#求dx
  grad_y = cv.Scharr(image, cv.CV_32F, 0, 1)  # 求dy

1.2 拉普拉斯算子cv2.Laplacian()

  Laplacian算子可以通过二阶导数定义,因此可以把它的离散实现与二阶Soble导数联系起来(OpenCV在实现laplacian算子时使用了sobel算子)laplacian算子就是图像在x,y轴方向上导数之和
  dst=cv2.Laplacian(src, ddepth, ksize=None, scale=None, delta=None, borderType=None)

参数含义
src输入图像
ddepth输出图像的深度或类型如cv.CV_32F
ksize=None滤波器的宽和高
scale=None计算的导数值的可选比例因子
delta=None在将结果存储之前将其添加到结果中,增量值。
borderType=None边界填充的类型
 dst=cv.Laplacian(image,cv.CV_32F)#求二阶导

二、图像形态学

2.1 腐蚀和膨胀

  最基础的形态学变换就是腐蚀和膨胀,他们在许多方面得到应用,比如消除噪声、元素分割和连接。基于这两种操作,可以实现更复杂的形态学操作,用来定位强度峰值或孔洞、另一种形式的梯度等。
  图像的形态学操作通常在阈值化操作后的布尔图像上进行,不过由于膨胀和腐蚀只是局部最大最小值的操作,因此形态学操作也可以在强度图像上进行。

2.1.1 腐蚀cv.erode()

  腐蚀计算的是核覆盖范围内的局部最小值。腐蚀缩减了明亮区域,消除凸起,通常用于消除图中斑点一样的噪声,原理是斑点经过腐蚀之后哦会消失,而大的可见区域不受影响。
  dst=cv2.erode(src, kernel, anchor=None, iterations=None, borderType=None, borderValue=None)

参数含义
src输入图像
kernel 滤波器的宽和高
iterations=None迭代次数,如果不为1则自定重复多次调用这个函数
borderType=None边界填充的类型
borderValue=None当边界填充类型为BORDER_CONSTANT时,填入该值
dst=cv.erode(binary,(3,3))

2.1.2 膨胀cv2.dilate()

  膨胀是一种卷积操作,它将目标像素的值替换为卷积核覆盖区域的局部最大值。膨胀扩大了明亮区域,填充了凹面。通常用于发现联通分支。
  dst=cv2.dilate(src, kernel, anchor=None, iterations=None, borderType=None, borderValue=None)

参数含义
src输入图像
kernel 滤波器的宽和高
iterations=None迭代次数,如果不为1则自定重复多次调用这个函数
borderType=None边界填充的类型
borderValue=None当边界填充类型为BORDER_CONSTANT时,填入该值
    #膨胀
    dst=cv.dilate(binary,(3,3))

2.2 通用形态学函数cv2.morphologyEx()

  当处理的图像是二值图像时,基本的腐蚀和膨胀就够了,但是需要对灰度图或者彩色图进行处理时,需要其他操作实现,cv2.morphologyEx()
  对于一副非布尔型图像进行形态学操作时,闭操作最明显的效果是消除值小于邻域内点的孤立异常值,而开操作消除的是大于领域内点的孤立异常值。
  dst=cv2.morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)

参数含义
src输入图像
op 操作
kernel 滤波器的宽和高
iterations=None迭代次数,如果不为1则自定重复多次调用这个函数
borderType=None边界填充的类型
borderValue=None当边界填充类型为BORDER_CONSTANT时,填入该值
op操作作用
cv2.MORPH_OPE开操作
cv2.MORPH_CLOSE闭操作
cv2.MORPH_TOPHAT顶帽操作
cv2.MORPH_BLACKHAT黑帽操作
cv2.MORPH_GRADIENT形态学梯度
 dst2=cv.morphologyEx(binary,cv.MORPH_CLOSE,(3,3))#参数,第二个为闭操作

2.2.1 开操作cv2.MORPH_OPEN

  开操作:先对图像进行腐蚀,再对图像进行膨胀。
  开操作通常对二值图像中的区域进行计数,例对显微镜载玻片上细胞的图像已经进行阈值处理,在对区域进行计数之前,需要用开操作来将相互靠的很近的细胞分开。

 dst1=cv.morphologyEx(binary,cv.MORPH_OPEN,(3,3)l)#参数,第二个为开操作

2.2.2 闭开操作cv2.MORPH_CLOSE

  闭操作:先对图像进行膨胀,之后再对图像进行腐蚀。
  闭操作用于复杂联通分支算法中减少无用或噪声驱动的片段。对于联通分支,通常进行腐蚀或闭操作消除噪声,然后通过开操作连接相互靠近的大型区域

 dst1=cv.morphologyEx(binary,cv.MORPH_CLOSE,(3,3))#参数,第二个为闭操作

2.2.3 形态学梯度cv2.MORPH_GRADIENT

  形态学梯度=膨胀操作的结果(扩张亮域)— 腐蚀操作的结果(缩减亮域)。结果就是产生图像中目标的边缘。

2.2.3 顶帽(cv2.MORPH_TOPHAT)和黑帽(cv2.MORPH_BLACKHAT)

  顶帽和黑帽操作分别用于显示与其邻域相比更亮或更暗的部分。
  顶帽操作=原图像—开操作后的图像
  黑帽操作=原图像—闭操作后的图像

2.3 自定义核cv2.getStructuringElement()

  迄今为止我们用到的形态学操作中,使用的核大小总是3×3的矩形。opencv可以让你自己创建自己的核,在形态学上核通常称为结构元素。
  dst=cv2.getStructuringElement(shape, ksize, anchor=None)

参数含义
shape 形状
kernel 滤波器的宽和高
shape选项作用
cv2.MORPH_RECT矩形
cv2.MORPH_ELLIPSE椭圆形,以ksize.width和ksize.height为两个半径做椭圆
cv2.MORPH_CROSS交叉
#模板/结构元素
 kernel=cv.getStructuringElement(cv.MORPH_RECT,(15,15))
 dst1=cv.morphologyEx(gray,cv.MORPH_TOPHAT,kernel)#参数,第二个为开操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值