图像处理与模式识别作业4图像与滤波_第1页
图像处理与模式识别作业4图像与滤波_第2页
图像处理与模式识别作业4图像与滤波_第3页
图像处理与模式识别作业4图像与滤波_第4页
图像处理与模式识别作业4图像与滤波_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、图像处理与模式识别作业4- 图像 滤波姓名:班级:自动化学院:电信学院联系方式: 日期:2012/4/6【运行环境:vs平台opencv】分别用高斯滤波器和中值滤波器去平滑测试图像test1和2,模板大小分别是3x3 , 5x5 ,7x7 ;1). matlab高斯滤波器程序代码:si=3;ss=(si+1)/2;sig2=1.5*1.5;mins=exp(-2.0*ss*ss/(2*sig2);%令最小项系数为1he=0;%整数系数和guass1=ones(si);for i=1:si for j=1:si temp=(i-ss)*(i-ss)+(j-ss)*(j-ss); guass1(i

2、,j)=round(exp(-temp/(2*sig2)/mins); he=he+guass1(i,j); endendI=imread(F:/图像处理作业/第四次作业/第四次作业/test2.tif);h,w,x=size(I);J=I;for i=ss:h+1-ss for j=ss:w+1-ss tempp=double(I(i-ss+1:i+ss-1,j-ss+1:j+ss-1); z=tempp.*guass1; J(i,j)=round(sum(sum(z)/he); endendfigure;subplot(121);imshow(I);title(原图像)subplot(12

3、2);imshow(J);title(高斯滤波后)执行结果:3x3:5x5:以3x3高斯滤波器为例,test1.pgm:test2.tif:2). c中值滤波器程序代码:si=3;ss=(si+1)/2;I=imread(F:/图像处理作业/第四次作业/第四次作业/test2.tif);h,w,x=size(I);J=I;for i=ss:h+1-ss for j=ss:w+1-ss tempp=; for k=1:si tempp=tempp,(I(i-ss+1:i+ss-1,j-ss+k:j-ss+k); end tempp=sort(tempp); J(i,j)=tempp(round(

4、si*si+1)/2); endendfigure;subplot(121);imshow(I);title(原图像)subplot(122);imshow(J);title(中值滤波后)执行结果: test1.pgm(3x3中值滤波器):test1.pgm(5x5中值滤波器):test1.pgm(7x7中值滤波器):test2.tif(3x3中值滤波器):test2.tif(5x5中值滤波器):test2.tif(7x7中值滤波器):2.利用高通滤波器滤波测试图像test3,4:包括unsharp masking, Sobel edge detector, and Laplace edge

5、detection ; 1).unsharp maskingMatlab程序代码:si=3;ss=(si+1)/2;I=imread(F:/图像处理作业/第四次作业/第四次作业/test4 copy.bmp);h,w,x=size(I);J=I;for i=ss:h+1-ss for j=ss:w+1-ss tempp=double(I(i-ss+1:i+ss-1,j-ss+1:j+ss-1); z=tempp.*1 1 1;1 -9 1;1 1 1; J(i,j)=round(0.1*sum(sum(z)+I(i,j); endendfigure;subplot(121);imshow(I)

6、;title(原图像)subplot(122);imshow(J);title(unsharp masking):test4.tif:2). Sobel edge detector(阈值取100):Matlab 程序代码:si=3;ss=(si+1)/2;I=imread(F:/图像处理作业/第四次作业/第四次作业/test4 copy.bmp);h,w,x=size(I);J=I;for i=ss:h+1-ss for j=ss:w+1-ss tempp=double(I(i-ss+1:i+ss-1,j-ss+1:j+ss-1); te=-1 -2 -1;0 0 0;1 2 1; z1=te

7、mpp.*te; z2=tempp.*te; t1=sum(sum(z1);t2=sum(sum(z2); s=sqrt(t12+t22); if(s50) J(i,j)=255; else J(i,j)=0; end endendfigure;subplot(121);imshow(I);title(原图像)subplot(122);imshow(J);title(soble edge):test4.tif: 3). Laplace edge detection (阈值取10): Matlab 程序代码:si=3;ss=(si+1)/2;I=imread(F:/图像处理作业/第四次作业/第四

8、次作业/test3_corrupt.pgm);h,w,x=size(I);J=I;%sss=;k=1;for i=ss:h+1-ss for j=ss:w+1-ss tempp=double(I(i-ss+1:i+ss-1,j-ss+1:j+ss-1); z=tempp.*0,-1,0;-1,4,-1;0,-1,0; s=sum(sum(z); % sss(k)=s;k=k+1; if(s10) J(i,j)=255; else J(i,j)=0; end endendfigure;subplot(121);imshow(I);title(原图像)subplot(122);imshow(J);

9、title(Laplace edge detection):test4.tif:3.利用canny算法提取测试图像test3,4边缘:.Matlab程序源码:clear;clc;i=imread(test4 copy.bmp);%k=rgb2y(i);%获取h分量,即亮度分量k=double(i);k1=gaosi(k);%横向滤波k1=k1;%对图像进行转置,为下一步纵向滤波作准备(纵向滤波=转置后横向滤波)k1=gaosi(k1);k1=k1;%还原%计算梯度的大小和方向h,w=size(k);for m=2:h-1 for n=2:w-1 zz1=k1(m,n-1)+k1(m+1,n-1

10、); zz2=k1(m,n)+k1(m+1,n); zz3=k1(m,n-1)+k1(m,n); zz4=k1(m+1,n-1)+k1(m+1,n); kp(m,n)=0.5*(zz2-zz1); kq(m,n)=0.5*(zz3-zz4); kfu(m,n)=sqrt(kp(m,n)2)+(kq(m,n)2);%梯度大小 kjiao(m,n)=atan(kq(m,n)/kp(m,n)+0.001); endend%非极大值抑制%首先将梯度方向划分为4个方向0,45,90,135(以及他们的反向延长线)for m=2:h-1 for n=2:w-1 if kjiao(m,n)=3/8*pi k

11、jiao(m,n)=2; else if kjiao(m,n)=1/8*pi kjiao(m,n)=1; else if kjiao(m,n)=-1/8*pi kjiao(m,n)=0; else if kjiao(m,n)=-3/8*pi kjiao(m,n)=3; else kjiao(m,n)=2; end end end end endendk2=k1;for m=2:h-1 for n=2:w-1 if kjiao(m,n)=0 if k1(m,n)k1(m,n-1)&k1(m,n)k1(m,n+1); else k2(m,n)=0; end end if kjiao(m,n)=1

12、if k1(m,n)k1(m+1,n-1)&k1(m,n)k1(m-1,n+1); else k2(m,n)=0; end end if kjiao(m,n)=2 if k1(m,n)k1(m-1,n)&k1(m,n)k1(m+1,n); else k2(m,n)=0; end end if kjiao(m,n)=3 if k1(m,n)k1(m-1,n-1)&k1(m,n)k1(m+1,n+1); else k2(m,n)=0; end end endend%两次阈值分割k3=k2;%以t1为阈值分割后的矩阵k4=k2;%以t2为阈值分割后的矩阵t1=10;t2=30;for m=2:h-1

13、 for n=2:w-1 if kfu(m,n)t1 k3(m,n)=0; else k3(m,n)=255; end if kfu(m,n)t2 k4(m,n)=0; else k4(m,n)=255; end endendfigure;subplot(221);imshow(i);title(原图像);subplot(222);imshow(k3,);title(阈值为50的分割图像);subplot(223);imshow(k4,);title(阈值为100的分割图像);flag=zeros(h,w);%标记该点是否以检测过,1表示检测过for m=2:h-1 for n=2:w-1 if k4(m,n)=0&flag(m,n)=0 k4,flag=findline(k3,k4,flag,m,n); end endend subplot(224);imshow(k4,);title(修正后的分割图像);imwrite(k4,C:try.jpg);其中findline函数代码如下:function ff,flag1=findline(k3,k4,flag,m,n)flag1=flag; m1=m+1;n1=n+1; while(m=m1|n=n1) flagg=0; for i=1:3 if(f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论