图像边缘检测算法研究
一、边缘检测:边缘是指图像局部亮度变化最显著的部分,边缘主要存在于目标与目标、目
标与背景、区域与区域(包括不同色彩)之间,是图像分割、纹理特征提取和形状特征提取
等图像分析的重要基础。边缘的检测正是利用物体和背景在某种图像特性上的差异来实现
的。这些差异包括灰度、颜色或纹理特征。边缘检测实际上就是检测图像特性发生变化的位
置。
二、图像的边缘大致可分为两种:阶跃状和屋顶状;阶跃状的边缘处于图像中两个不同灰度
的相邻区域之间,屋顶状的边缘上升和下降都比较缓慢。
阶跃状边缘的位置在一阶导数的峰值点,在二阶导数的过零点;屋顶状边缘(有一定的宽度
范围)的位置在一阶导数的两峰值之间,在二阶导数的两个过零点之间。
三、基于一阶导数法的边缘检测
3.1 梯度算子
求梯度的运算可近似为微分模板与图像的卷积。常用一阶边缘检测算子有简单梯度算子、
Roberts 算子、priwitt 算子、sobel 算子。梯度算子包含着微分运算,对噪声比较敏感。
以上各算子都只包含 x,y 两个方向的模板,每种模板只对相应的方向敏感,而对其他方向
的变化响应不大。
①Roberts 算子
Roberts 算子是一种利用局部差分算子寻找边缘的算子 ,它由下式给出:
22
)),1()1,(())1,1(),((),(R jifjifjifjifji
它是由两个 2 ×2 模板作用的结果(标注•的是当前像素的位置):
(1)用卷积函数 conv2 处理的 Matlab 程序代码:
a=imread('lena','tif');
b=[0 1;-1 0]/126;c=[1 0;0 -1]/126; %参数 126 是实验时为增强图像对比度试验出来的
d=conv2(a,b,'same');d=abs(d); %处理水平方向算子的结果,参数'same'使得得到的图像
与原图大小相等。
e=conv2(a,c,'same');e=abs(e); %处理垂直方向算子的结果
f=max(d,e); %取水平及垂直方向上的大值
subplot(1,3,1),imshow(d), title(' roberts 水平')