图像为什么会有边缘?
图像边缘一般指图像的灰度变化率最大的位置。成因主要如下:
1.图像灰度在表面方向变化不连续;
2.图像中物体在空间上的深度不一致;
3.在光滑的表面上颜色不一致;
4.图像中物体的光影
所以边缘检测指的是从图像中检测边缘点和边缘段,并且描述边缘方向的过程。图像可以看成二元函数f(x,y),(x,y)是像素点的位置,f(x,y)是该处的灰度值,这样图像就可以想象成是一个曲面。看作曲面以后,就可以用数学的方法来处理了。边缘即曲面上变化最剧烈的位置,这个位置也是曲面的局部极值点的位置,求极值大家都知道,可以用导数来求。基于边缘检测的图像分割方法的基本思路就是先确定图像中的边缘像素,然后再把这些像素连接在一起就构成所需的区域边界。
一、一阶微分算子
1.1 Sobel算子
设G_x 与G_y 分别表示对图像A进行横向和纵向梯度检测得到的结果。(是横向的梯度,不是横向的边缘)
取二者平方和即可得到图像上每一点的梯度值,即在该点同时计算x方向与y方向的梯度。
该点的梯度方向可以通过取这两个值的比的反正切arctan得到。
因为Sobel算子并不是真正的导数,只是对函数的差分近似,或者说是局部拟合,而差分近似的阶数越高,拟合就更加准确。因此大的核能够更好的近似导数,可以消除部分噪声影响。但是导数变化比较剧烈时,核太大会导致结果偏差大。
Sobel 算子有两个,一个是检测水平边缘的 ;另一个是检测垂直边缘的 。它对于象素的位置的影响做了加权,可以降低边缘模糊程度,因此效果更好。由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效,因此应用广泛。但缺点就是Sobel算子并没有将图像的主体与背景严格地区分开来,即:Sobel算子没有基于图像灰度进行处理,由于Sobel算子没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意。
1.2 Roberts算子
Roberts算子,是一种简单的交叉差分算法,在求±45°的梯度时最有效。
相比于一般的水平竖直方向的差分算子,Roberts算子能够有效地保留边缘的角点,并且计算速度较快。缺点是对细节敏感导致对噪声也十分敏感。
一阶微分算子即是对图像的灰度变化情况进行求导,获得的边缘比较粗糙,并且信息较少。二阶微分算子是对灰度变化的导数求导,对灰度值变化更为敏感,获得的边缘更加准确。
1.3Prewitt算子
Prewitt算子是一种图像边缘检测的微分算子,其原理是利用特定区域内像素灰度值产生的差分实现边缘检测(结合了差分运算与邻域平均的方法)。由于Prewitt算子采用 3x3 模板对区域内的像素值进行计算,而Robert算子的模板为 2x2,故Prewitt算子的边缘检测结果在水平方向和垂直方向均比Robert算子更加明显。Prewitt算子适合用来识别噪声较多、灰度渐变的图像