资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
数字图像采集与处理数字图像采集与处理 工程导论大作业工程导论大作业学院:电子工程学院学院:电子工程学院班级:班级:021061021061学号:02106020 姓名:赖贤军数字图像采集与处理工程导论数字图像采集与处理工程导论边缘检测是数字图像处理与模式识别中最基础的内容之一,边缘提取与检测在图像处理中占有很重要的地位,其算法的优劣直接影响着所研制系统的性能。经过人们长期的研究,已经提出了很多种不同的边缘检测方法。这些方法各有其特点,同时也都存在着各自的局限性和不足之处,因此图像的边缘检测这个领域还有待于进一步的改进和发展。本文通过对各种边缘检测方法的对比研究,着重选取几种具有代表性的边缘检测算法进行详细的分析,并用 Matlab 软件实现该算法,通过对这些算法的分析比较,给出了这些算法的适用领域和适用范围,为人们使用这些算法提供实验依据。1.1 基于一阶微分的边缘检测算法Roberts 算子:由 Roberts 提出的算子是一种利用局部差分算子寻找边缘的算子,对于边界陡峭且噪比较小的图像检测效果比较好,它在 22 邻域上计算对角导数, 22,=,1,11,1G i jf i jf ijf ijf i jGi,j又称为 Roberts 交叉算子。在实际应用中,为简化运算,用梯度函数的 Roberts 绝对值来近似:* MERGEFORMAT (1-2),=,1,11,1G i jf i jf ijf ijf i j用卷积模板,上式变成:* MERGEFORMAT (1-3),xyG i jGG其中 Gx和 Gy由下面图 3 所示的模板计算:图 3 Robert 边缘检测算子的模板Roberts 算子是该点连续梯度的近似值,而不是所预期的点处的近似值。由上面两个卷积算子对图像运算后,代入(1-3)式,可求得图像的梯度幅度值 Gi,j,然后选取适当的门限 TH,作如下判断:Gi,jTH,i,j为阶跃状边缘点,Gi,j为一个二值图像,也就是图像的边缘。由于利用局部差分检测比较陡峭的边缘,但对于噪声比较敏感,经常会出现孤立点,于是人们又提出了 Prewitt 算子。Prewitt 算子:为在检测边缘的同时减少噪声的影响,Prewitt 算子从加大边缘检测算子出发。由 22 扩大到 33 来计算差分算子,所以其卷积模板为图 4 所示:图 4 Prewitt 边缘检测算子的模板在图像中的每个像素位置都用这 2 个模板做卷积,Prewitt 算子将方向差分运算与局部平均结合起来,表达式如下:1,1,11,11,1,11,1xff xyf x yf xyf xyf x yf xy * MERGEFORMAT (1-4)1,11,1,11,11,1,1yff xyf xyf xyf xyf xyf xy * MERGEFORMAT (1-5)根据(1-4)和(1-5)式可以计算 Prewitt 梯度,选取适当的阈值 T,对梯度图像二值化,得到一幅边缘二值图像。采用 Prewitt 算子不仅能检测边缘点,而且还能抵制噪声的影响5。 Kirsch 算子: 1971 年,R.Kirsch 提出了一种能检测边缘方向的Kirsch 算子新方法:它使用了 8 个模板来确定梯度幅度值和梯度的方向。Kirsch 算子是用一组模板对图像中同一像素求卷积,选取其中最大的值作为边缘强度,而将与之对应的方向作为边缘方向6。常用的八方向 Kirsch 模板各方向间的夹角为 45 度,模板如图 5 所示:图 5 Kirsch 边缘检测算子的模板上述算子都是计算一阶导数的边缘检测器。其基本思想都是:如果所求的一阶导数高于某一阈值,则确定该点为边缘点。但是这样做会导致检测的边缘点太多。总的来说,造成这些算子不能准确判定边缘的存在及正确位置的原因在于:(1)实际的边缘灰度与理想的边缘灰度值间存在差异,这类算子可能检测出多个边缘。(2)边缘存在的尺度范围各不相同,这类算子固定的大小不利于检测出不同尺度上的所有边缘。(3)对噪声比较敏感为了解决这一问题,发展并产生了平滑滤波边缘检测方法,也就是边缘检测中理论最成熟的线性滤波方法,也称线性边缘检测算子。在线性滤波边缘检测方法中,最具代表性的是 Marr-Hildreth 提出的 LoG(Laplacian of Gaussian)算法、Canny 最优算子的边缘检测方法。Roberts 算子程序:clcclear allclose allA = imread(cameraman.tif); % 读入图像imshow(A);title(原图);x_mask = 1 0;0 -1; % 建立X方向的模板y_mask = rot90(x_mask); % 建立Y方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像即边缘图像title(Roberts)Prewitt 算子程序:clcclear allclose allA = imread(cameraman.tif); % 读入图像imshow(A);title(原图);y_mask = -1 -1 -1;0 0 0;1 1 1; % 建立Y方向的模板x_mask = y_mask; % 建立X方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像即边缘图像title(Prewitt) Kirsch 算子程序clcclear allclose allA = imread(cameraman.tif); % 读入图像imshow(A);title(原图);mask1=-3,-3,-3;-3,0,5;-3,5,5; % 建立方向模板mask2=-3,-3,5;-3,0,5;-3,-3,5;mask3=-3,5,5;-3,0,5;-3,-3,-3;mask4=-3,-3,-3;-3,0,-3;5,5,5;mask5=5,5,5;-3,0,-3;-3,-3,-3;mask6=-3,-3,-3;5,0,-3;5,5,-3;mask7=5,-3,-3;5,0,-3;5,-3,-3;mask8=5,5,-3;5,0,-3;-3,-3,-3;I = im2double(A); % 将数据图像转化为双精度d1 = imfilter(I, mask1); % 计算8个领域的灰度变化d2 = imfilter(I, mask2);d3 = imfilter(I, mask3);d4 = imfilter(I, mask4);d5 = imfilter(I, mask5);d6 = imfilter(I, mask6);d7 = imfilter(I, mask7);d8 = imfilter(I, mask8);dd = max(abs(d1),abs(d2); % 取差值变化最大的元素组成灰度变化矩阵dd = max(dd,abs(d3);dd = max(dd,abs(d4);dd = max(dd,abs(d5);dd = max(dd,abs(d6);dd = max(dd,abs(d7);dd = max(dd,abs(d8);grad = mat2gray(dd); % 将灰度变化矩阵转化为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像figure, imshow(BW); % 显示分割后的图像,即边缘图像title(Kirsch)以 cameraman 图片为例,分别用 Roberts、Prewitt 和 Kirsch 三种算法,在无噪声(图 1)和有高斯白噪声(图 2)的环境下,分别给检测结果。图 1 对未加噪声图片的检测结果图 2 对加入高斯白噪声图片的检测结果1.1.1实验结果分析通过图 1 和图 2 知,在图像没有噪声的情况下,Roberts 算子、Prewitt 算子、Kirsch 算子,都能够比较准确的检测出图像的边缘。加入高斯白噪声后,三种边缘检测算子的边缘检测效果都多少受到噪声的干扰,检测出大量的噪声点和伪边缘,甚至无法检测出边缘。Roberts 算子受噪声的影响最大,Kirsch 算子、Prewitt 算子受噪声影响比 Roberts 算子小。由于各种原因,图像总是受到随机噪声的干扰,可以说噪声无处不在。经典的边缘检测方法由于引入了各种形式的微分运算,从而必然引起对噪声的极度敏感,边缘检测的结果常常是把噪声当作边缘点检测出来,而真正的边缘也由于受到噪声干扰而没有检测出来。对于有噪声图像来说,一种好的边缘检测方法应该具有良好的噪声抑制能力,同时又有完备的边缘保持特性。基于一阶微分的边缘检测算子具有实现简单、运算速度快等特点,但其检测受噪声的影响很大,检测结果不可靠,不能准确判定边缘的存在及边缘的准确位置,造成这种情况的原因:(1)实际边缘灰度与理想边缘灰度值间存在差异,这类算子可能检测出多个边缘;(2)边缘存在的尺度范围各不相同,这类算子固定的大小不利于检测出不同尺度上的所有边缘;(3)对噪声都比较敏感。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号