OpenCV图像梯度(Sobel和Scharr)
Posted 程序媛一枚~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV图像梯度(Sobel和Scharr)相关的知识,希望对你有一定的参考价值。
OpenCV图像梯度(Sobel和Scharr)
这篇博客将介绍图像渐变以及如何使用OpenCV的cv2.Sobel计算Sobel渐变和Scharr渐变。
1 图像梯度是什么?
图像梯度是许多计算机视觉和图像处理程序的基本组成部分。
- 我们使用梯度来检测图像中的边缘,这使得我们能够在图像中找到物体的轮廓和边缘线;
- 我们使用它们作为通过特征提取量化图像的输入-事实上,非常成功和著名的图像描述符,如定向梯度直方图和SIFT是建立在图像梯度表示的基础上的;
- 梯度图像甚至被用来构造显著性图,突出图像的主题;
2 图像梯度的用途
图像梯度的主要应用在于边缘检测。边缘检测是在图像中寻找轮廓/边缘的过程,它揭示了图像中物体的结构信息。因此,边缘可以对应于:
- 图像中对象的边界
- 图像中阴影或光照条件的边界
- 对象中“局部”的边界
图像梯度定义为图像强度的方向变化。
或者更简单地说,在输入(灰度)图像的每个像素处,梯度测量给定方向上像素强度的变化。通过估计方向或方向以及大小(即方向的变化有多大),能够检测图像中看起来像边缘的区域。
梯度幅度(gradient magnitude)用来衡量图像强度的变化有多大。梯度幅度是一个实值数字,它量化了强度变化的“强度”。
梯度方向(gradient orientation)用于确定强度变化的方向。顾名思义,梯度方向会给出一个角度或𝜃 ,用来量化变化的方向。
弧度(radians)转角度(degrees): 弧度*180/pi = 角度
3 图像梯度的使用
- Sobel和Scharr核,它们是卷积算子,使用OpenCV和cv2.Sobel可自动计算图像梯度
当量化和抽象地表示图像时,梯度幅度和方向有助于获得优秀的特征和图像描述符。
但是对于边缘检测,梯度表示对局部噪声非常敏感。将需要添加更多的步骤来创建一个实际的健壮的边缘检测器。
Soble核如下:
Scharr核如下,比Soble核能获得更好的梯度近似值:
参考
以上是关于OpenCV图像梯度(Sobel和Scharr)的主要内容,如果未能解决你的问题,请参考以下文章
使用cv2.Sobel()cv2.Scharr()cv2.Laplacian()寻找图像的梯度边缘
Opencv图像边缘检测——Roberts算子(手写)Sobel算子(手写和调包)Scharr算子Laplacian算子