目录算法
一、介绍函数
二、通常步骤spa
三、canny算子3d
四、sobel算子对象
五、拉普拉斯算子blog
六、scharr滤波器ci
边缘检测也是一种滤波,不一样的算子有不一样的提取效果。比较经常使用的算子是canny、soble、Laplacianio
一、滤波图像处理
边缘检测的算法主要是基于图像强度的一阶和二阶导数,导数对噪声很敏感,所以必须采用滤波器来改善。opencv
主要有高斯滤波,采用离散化的高斯函数产生一组归一化的高斯核,而后基于高斯核函数对图像灰度矩阵的每个点进行加权求和。
二、加强
加强边缘的基础是肯定图像各点邻域强度的变化值。
加强算法能够将图像灰度点邻域强度值有显著变化的点凸显出来,经过计算梯度幅值来肯定。
三、检测
通过加强的图像,每每邻域中有不少点的梯度值比较大,在特定的应用中,这些点不是咱们要找的边缘点,因此采用某种方法对这些点进行取舍,经常使用的方法是阈值化来检测。
离散差分算子,结合了高斯平滑和微分求导(结果具备更多的抗噪性),计算图像灰度函数的近似梯度,在图像任何一点使用此算子,都将会产生对应的梯度矢量或法矢量。
对灰度渐变和噪声较多(有平滑做用)的图像处理效果较好,sobel算子对边缘定位不是很准确,图像的边缘不止一个像素;当对精度要求不是很高时,是一种较为经常使用的边缘检测方法。
水平变化:将图像I与一个奇数大小的内核进行卷积(图像中的卷积实际上是协相关操做,对应位置相乘求和),例如:
垂直变化:将I与一个奇数大小的内核进行卷积,例如:
或者这个公式:
梯度方向:
Canny边缘检测是从不一样视觉对象中提取有用的结构信息并大大减小要处理的数据量的一种技术,目前已普遍应用于各类计算机视觉系统。
Canny发现,在不一样视觉系统上对边缘检测的要求较为相似,所以,能够实现一种具备普遍应用意义的边缘检测技术。边缘检测的通常标准包括:
为了知足这些要求,Canny使用了变分法。Canny检测器中的最优函数使用四个指数项的和来描述,它能够由高斯函数的一阶导数来近似。在目前经常使用的边缘检测方法中,Canny边缘检测算法是具备严格定义的,能够提供良好可靠检测的方法之一。因为它具备知足边缘检测的三个标准和实现过程简单的优点,成为边缘检测最流行的算法之一。
Canny方法不容易受噪声干扰,可以检测到真正的弱边缘。优势在于,使用两种不一样的阈值分别检测强边缘和弱边缘,而且当弱边缘和强边缘相连时,才将弱边缘包含在输出图像中。
尽量减小噪声对边缘检测结果的影响,因此必须滤除噪声以防止由噪声引发的错误检测,使用高斯滤波器与图像进行卷积。
其中i,j是像素点的横纵坐标;
高斯核大小为(2k+1)x(2k+1);
σ:自行设定,通常1.5左右。
获得权值矩阵后归一化(sigma = 1.4,尺寸为3x3的高斯卷积核的例子):
使用该权值矩阵(高斯核)对图像作“卷积”(协相关,对应位置相乘最后求和获得一点的像素值),获得新的图像矩阵。
运用一对卷积阵列(分别做用于x方向和y方向):
使用下面公式计算梯度幅值和方向:
梯度方向通常为:0,45,90,135
一种边缘稀疏技术,非极大值抑制的做用在于“瘦”边。对图像进行梯度计算后,仅仅基于梯度值提取的边缘仍然很模糊。对于标准3,对边缘有且应当只有一个准确的响应。而非极大值抑制则能够帮助将局部最大值以外的全部梯度值抑制为0,对梯度图像中每一个像素进行非极大值抑制的算法是:
一般为了更加精确的计算,在跨越梯度方向的两个相邻像素之间使用线性插值来获得要比较的像素梯度,现举例以下:
将梯度分为8个方向,分别为E、NE、N、NW、W、SW、S、SE,其中0表明00~45o,1表明450~90o,2表明-900~-45o,3表明-450~0o。像素点P的梯度方向为θ,则像素点P1和P2的梯度线性插值为:
NMS以后,剩余的像素能够更准确地表示图像中的实际边缘。然而,仍然存在因为噪声和颜色变化引发的一些边缘像素。为了解决这些杂散响应,必须用弱梯度值过滤边缘像素,并保留具备高梯度值的边缘像素,能够经过选择高低阈值来实现。
阈值的选择取决于给定输入图像的内容。
是n维欧里几德空间中的一个二阶微分算子,定义为梯度grad的散度div。因为使用了图像梯度,内部代码调用了sobel算子。根据图像原理可知,二阶导数能够进行边缘检测,由于图像是二维,须要在两个方向上求导,使用laplacian算子会使求导过程变得很简单。
定义
让一幅图减去它的laplacian算子能够加强对比度。
其中:
所以卷积模板(协相关运算)是:
在opencv中主要是配合sobel算子的运算存在的。计算x或y方向的图像查分,参数变量和sobel基本同样。