《matlab图像的边缘检测.doc》由会员分享,可在线阅读,更多相关《matlab图像的边缘检测.doc(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验五 图像的边缘检测一、实验目的1、理解图像边缘提取的基本概念;2、熟悉进行边缘提取的基本方法;3、掌握用MATLAB语言进行图像边缘提取的方法。二、实验原理图像理解是图像处理的一个重要分支,他研究为完成某一任务需要从图像中提取哪些有用的信息,以及如何利用这些信息解释图像。边缘检测技术对于处理数字图像非常重要,因为边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。在图像中,边界表明一个特征区域的终结和另一个特征区域的开始,边界所分开区域的内部特征或属性是一致的,而不同的区域内部的特征或属性是不同的,边缘检测正是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度
2、,颜色或者纹理特征。边缘检测实际上就是检测图像特征发生变化的位置。三、实验要求1、 读取MATLAB图像处理工具箱中提供的rice.tif这幅图像,并显示。2、 分别用Roberts、Sobel和拉普拉斯高斯算子对图像进行边缘检测。比较三种算子处理的结果。A=imread(E:1rice.tif);subplot(2,2,1);imshow(A);BW1=edge(A,sobel);BW2=edge(A,roberts);BW3=edge(A,log);subplot(2,2,2);imshow(BW1),title(用Roberts算);subplot(2,2,3);imshow(BW2),
3、title(用Sobel算子);subplot(2,2,4);imshow(BW3),title(用拉普拉斯高斯算子);3、 用不同方向(水平、垂直、水平和垂直)的Sobel算子对图像进行边缘检测。比较三种情况的结果。A=imread(E:1rice.tif);subplot(2,2,1);imshow(A),title(原图像);BW1=edge(A,sobel,horizontal);BW2=edge(A,sobel,vertical);BW3=edge(A,sobel,both);subplot(2,2,2);imshow(BW1),title(水平方向);subplot(2,2,3);
4、imshow(BW2),title(垂直方向);subplot(2,2,4);imshow(BW3),title(水平和垂直两个方向);4、 (选做内容)读取其它图像,重复2,3要求。A=imread(E:1girl.bmp);figure(1),subplot(2,2,1);imshow(A),title(原图像);BW1=edge(A,sobel);BW2=edge(A,roberts);BW3=edge(A,log);figure(1),subplot(2,2,2);imshow(BW1),title(用Roberts算);figure(1),subplot(2,2,3);imshow(
5、BW2),title(用Sobel算子);figure(1),subplot(2,2,4);imshow(BW3),title(用拉普拉斯高斯算子);B=edge(A,sobel,horizontal);C=edge(A,sobel,vertical);D=edge(A,sobel,both);figure(2),subplot(2,2,1);imshow(A),title(原图像);figure(2),subplot(2,2,2);imshow(BW1),title(水平方向);figure(2),subplot(2,2,3);imshow(BW2),title(垂直方向);figure(2
6、),subplot(2,2,4);imshow(BW3),title(水平和垂直两个方向);5、(选做内容)自编程序,实现边缘检测处理。F,MAP=imread(E:1girl.bmp);f=double(F);m,n=size(f);g=zeros(m,n);for i=2:m-1 for j=2:n-1 DX=(f(i+1,j-1)-f(i-1,j-1)+2*(f(i+1,j)-f(i-1,j)+(f(i+1,j+1)-f(i-1,j+1); DY=(f(i-1,j+1)-f(i-1,j-1)+2*(f(i,j+1)-f(i,j-1)+(f(i+1,j+1)-f(i+1,j-1); g(i
7、,j)=round(sqrt(DX*DX+DY*DY); endendG=uint8(g);subplot(1,2,1), imshow(F,MAP), title(原图像);subplot(1,2,2), imshow(G,MAP), title(取边缘);5、 图像分割clear;I=imread(E:1girl.bmp,bmp);x,map=imread(E:1girl.bmp);h0=imhist(I);h=h0;j=0;k=0;q0=inf; for th0=1:size(h,2)for i=1:size(h,2) if h(i)th0 j=j+1; c1(j)=h(i); else
8、 k=k+1; c2(k)=h(i); endend N1=j;N2=k;N=N1+N2;a1=var(c1);a2=var(c2);p1=N1/N;p2=N2/N;q=p1*a1+p2*a2;if qq0 th=th0;endq0=q;j=0;k=0;endx1=double(x);g1=x1;for i=1:size(x,1) for j=1:size(x,2) if x1(i,j)th g1(i,j)=0; else g1(i,j)=256; end endend g=uint8(g1);subplot(1,2,2);imshow(g,map);subplot(1,2,1);imshow(x,map);