数字图像处理报告(完成版).doc
《数字图像处理报告(完成版).doc》由会员分享,可在线阅读,更多相关《数字图像处理报告(完成版).doc(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、数字图像处理实验报告姓名:班级:学号:专业:指导教师:实验日期:实验一 边缘检测一、基本原理本实验主要是对图像的边缘进行提取,通过对边缘的分析来分析图像的特征。首先,了解一些术语的定义:边缘点:图像中具有坐标i,j且处在强度显著变化的位置上的点。边缘段:对应于边缘点坐标i,j及其方位,边缘的方位可能是梯度角。边缘检测器:从图像中提取边缘(边缘点和边缘段)集合的算法。轮廓:边缘列表,或者是一条表示边缘列表的拟合曲线。边缘连接:从无序边缘表形成有序边缘表的过程,习惯上,边缘表的表示采用顺时针方向来排序。边缘跟踪:一个用来确定轮廓的图像(指滤波后的图像)搜索过程。边缘就是图像中包含的对象的边界所对应
2、的位置。物体的边缘以图像局部特性的不连续性的形式出现的,例如,灰度值的突变,颜色的突变,纹理结构的突变等。从本质上说,边缘就意味着一个区域的终结和另外一个区域的开始。图像边缘信息在图像分析和人的视觉中十分重要,是图像识别中提取图像特征的一个重要属性。边缘检测(edge detection)在图像处理和对象识别领域中都是一个重要的基本问题。由于边缘的灰度不连续性,可以使用求导数的方法检测到。最早的边缘检测方法都是基于像素的数值导数的运算。本实验主要是对图像依次进行Sobel算子,Prewitt算子,Roberts算子,Laplace算子和Canny算子运算,比较处理结果。边缘检测有三个共性准则,
3、1,好的检测结果,或者说对边缘的误测率尽可能低,就是在图像边缘出现的地方检测结果中不应该没有;另一方面不要出现虚假的边缘。2,对边缘的定位要准确,也就是我们标记出的边缘位置要和图像上真正边缘的中心位置充分接近。3,对同一边缘要有尽可能低的响应次数,也就是检测响应最好是单像素的。二、对图像进行各种算子运算本实验中主要是对图像依次进行Sobel算子,Prewitt算子,Roberts算子,Laplace算子和Canny算子运算。Matlab代码:clear all;close all;warning off all;I = imread(cameraman.tif); %没有噪声时的检测结果BW_
4、sobel = edge(I,sobel);BW_prewitt = edge(I,prewitt);BW_roberts = edge(I,roberts);BW_laplace = edge(I,log);BW_canny = edge(I,canny);figure(1);subplot(2,3,1),imshow(I),xlabel(原始图像);subplot(2,3,2),imshow(BW_sobel),xlabel(sobel检测);subplot(2,3,3),imshow(BW_prewitt),xlabel(prewitt检测);subplot(2,3,4),imshow(
5、BW_roberts),xlabel(roberts检测);subplot(2,3,5),imshow(BW_laplace),xlabel(laplace检测);subplot(2,3,6),imshow(BW_canny),xlabel(canny检测);%加入高斯噪声(=0,2=0.01)检测结果I_g1 = imnoise(I,gaussian,0,0.01);BW_sobel = edge(I_g1,sobel);BW_prewitt = edge(I_g1,prewitt);BW_roberts = edge(I_g1,roberts);BW_laplace = edge(I_g1
6、,log);BW_canny = edge(I_g1,canny);figure(2);subplot(2,3,1),imshow(I_g1),xlabel(加入高斯噪声(=0,2=0.01)图像);subplot(2,3,2),imshow(BW_sobel),xlabel(sobel检测);subplot(2,3,3),imshow(BW_prewitt),xlabel(prewitt检测);subplot(2,3,4),imshow(BW_roberts),xlabel(roberts检测);subplot(2,3,5),imshow(BW_laplace),xlabel(laplace
7、检测);subplot(2,3,6),imshow(BW_canny),xlabel(canny检测);%加入高斯噪声(=0,2=0.02)检测结果I_g2 = imnoise(I,gaussian,0,0.02);BW_sobel = edge(I_g2,sobel);BW_prewitt = edge(I_g2,prewitt);BW_roberts = edge(I_g2,roberts);BW_laplace = edge(I_g2,log);BW_canny = edge(I_g2,canny);figure(3);subplot(2,3,1),imshow(I_g2),xlabel
8、(加入高斯噪声(=0,2=0.02)图像);subplot(2,3,2),imshow(BW_sobel),xlabel(sobel检测);subplot(2,3,3),imshow(BW_prewitt),xlabel(prewitt检测);subplot(2,3,4),imshow(BW_roberts),xlabel(roberts检测);subplot(2,3,5),imshow(BW_laplace),xlabel(laplace检测);subplot(2,3,6),imshow(BW_canny),xlabel(canny检测);实验结果:三、实验分析:通过对上述几种算子的研究,我
9、们可以发现,Prewit t 算子和Sobel 算子都是对图像进行差分和滤波运算,仅在平滑部分的权值选择上有些差异,但是图像产生了一定的模糊, 而且有些边缘还检测不出来,所以检测精度比较低, 该类算子比较适用于图像边缘灰度值比较明显的情况。Robert s 算子检测精度比较高, 但容易丢失一部分边缘, 使检测的结果不完整,同时图像没经过平滑处理,不能抑制噪声,所以该算子对具有陡峭的低噪声图像响应最好。Laplace算子通过高斯函数对图像进行了平滑处理,对噪声的抑制作用比较明显, 但处理的同时也可能将原有的边缘平滑, 造成某些边缘无法检测到。此外,噪声对其影响也较大,检测到的图细节很丰富,同时就
10、可能出现伪边缘。但是,如果要降低伪边缘的话,又可能使检测精度下降,丢失很多真边缘。因此, 对于不同图像应选择不同参数。Canny 算子也采用高斯函数对图像进行平滑处理,也具有较强的去噪能力, 但同样可能会丢失一些边缘信息,但是,从图中可以看出,Canny 算子比Laplace算子的检测边缘的精度要高些。通过实验结果可以看出,该算子在上述几种边缘检测算子当中效果最好。通过上述实验结果我们可以发现,在加入高斯噪声以后,canny算子的去噪能力减弱,对边缘检测的效果不太明显。相反,从图中可以发现sobel算子和prewitt算子对噪声的过滤作用较为明显。基本上能够检测出较为完整的边缘信号。自编代码:
11、clc;close all%图读取显示c=imread(cameraman.tif);subplot(1,3,1);imshow(c) M,N=size(c);%得到一个M+2*N+2的矩阵,为模板卷积做准备cc=zeros(M+2,N+2); %初始化矩阵for i=1:M for j=1:N cc(i+1,j+1)=c(i,j); endendcc(1,1)=c(1,1); %四个角的赋值cc(1,M+2)=c(1,M);cc(M+2,1)=c(M,1);cc(M+2,N+2)=c(M,N);for i=1:M %四边的赋值 cc(i+1,1)=c(i,1);endfor i=1:N cc
12、(1,i+1)=c(1,i);endfor i=1:N cc(M+2,i+1)=c(M,i);endfor i=1:M cc(i+1,N+2)=c(i,N);end c1=zeros(M,N); %初始化一个新矩阵,用来存放水平模板卷积后的值c2=zeros(M,N); %初始化一个新矩阵,用来存放垂直模板卷积后的值c3=zeros(M,N); %初始化一个新矩阵,用来存放以2为范数(欧式距离)计算的值c4=zeros(M,N); %初始化一个新矩阵,用来存放以1为范数(城区距离)计算的值%差分模板 d1=-1,0,1;-1,0,1;-1,0,1; %水平模板d2=1,1,1;0,0,0;-1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 报告 完成
限制150内