-------------
基于 sobel、canny 的边缘检测实现
一.实验原理
Sobel 的原理:
索贝尔算子(Sobel operator)是图像处理中的算子之一,主要用作边缘检测。在技术上,
它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此
算子,将会产生对应的梯度矢量或是其法矢量.
该算子包含两组 3x3 的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出
横向及纵向的亮度差分近似值。如果以 A 代表原始图像,Gx 及 Gy 分别代表经横向及纵向
边缘检测的图像,其公式如下:
1
1 0 1
1 2
G
x
2 0 2
* A G
y
0 0 0 *
A
1 0 1
1 2
1
图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。
G G
x
2
G
y
2
然后可用以下公式计算梯度方向。
arctan(
G
y
G
x
)
在以上例子中,如果以上的角度 Θ等于零,即代表图像该处拥有纵向边缘,左方较右
方暗。
在边沿检测中,常用的一种模板是 Sobel 算子。Sobel 算子有两个,一个是检测水平
边沿的 ;另一个是检测垂直平边沿的 。与 和 相比,Sobel 算子对于象素的位置的影响做
了加权,因此效果更好。
Sobel 算子另一种形式是各向同性 Sobel(Isotropic Sobel)算子,也有两个,一个是检测
水平边沿的 ,另一个是检测垂直平边沿的 。各向同性 Sobel 算子和普通 Sobel 算子相比,
它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。由于建筑物图像的
特殊性,我们可以发现,处理该类型图像轮廓时,并不需要对梯度方向进行运算,所以程序
并没有给出各向同性 Sobel 算子的处理方法。
由于 Sobel 算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有
效,因此应用广泛。美中不足的是,Sobel 算子并没有将图像的主体与背景严格地区分开来,
换言之就是 Sobel 算子没有基于图像灰度进行处理,由于 Sobel 算子没有严格地模拟人的
视觉生理特征,所以提取的图像轮廓有时并不能令人满意。 在观测一幅图像的时候,我们
往往首先注意的是图像与背景不同的部分,正是这个部分将主体突出显示,基于该理论,我
们给出了下面阈值化轮廓提取算法,该算法已在数学上证明当像素点满足正态分布时所求解
是最优的。
Canny 的原理:
-------------