资源预览内容
第1页 / 共14页
第2页 / 共14页
第3页 / 共14页
第4页 / 共14页
第5页 / 共14页
第6页 / 共14页
第7页 / 共14页
第8页 / 共14页
第9页 / 共14页
第10页 / 共14页
亲,该文档总共14页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
中中 国国 地地 质质 大大 学学 ( 武武 汉汉 )数数字字图图像像处处理理报告编号: 03 指导老师: 许丽娜 学生姓名: 王福成 所在班级: 064101 起始日期:2012 年 11 月 14 日截止日期:2012 年 11 月 21 日摘 要本文是关于数字图像处理一学科对图像以及图像矩阵的锐化、滤波、求 MSE 值和绘制等高线图、梯度场图和网格图等的处理,利用MATLAB 语句实现了对图像的这些处理。Task.1 利用 sobel 算子对图像矩阵进行处理,求一阶梯度 g(x),g(y)和 g(x,y),并且通过斜率和角度计算出 f(x,y),最后输出图像矩阵的梯度场。Task.2 利用 matlab 语句输出原图像和加了高斯噪音的等高线图梯度场图和 3D 网格图。Task.3 利用拉普拉斯算子求 L(x,y)=f(x,y)。Task.4 计算并显示拉普拉斯算子对测试图像的破片,分别使用imfilter()和 fspecial()滤波器。Task.5 应用 Laplacian 锐化滤波器来锐化图像和不同 下的平滑图像并计算其 MSE 的值。关键字:滤波器、sobel 算子、 Laplacian 算子、锐化、等高线。技术讨论Task.1 用 sobel 算子对 a 水平、垂直边缘分别求一阶导,得到g(x),g(y),用 quiver(gx,gy)代码绘制出 a 的梯度场图,间接的用k=g(x)./g(y)和 l=atan(k)*180/pi 来求得 f(x,y).Task.2 用 contour(a)、quiver(gx,gy)和 mesh(a)代码输出lena 图像加高斯噪音前后的等高线图、梯度场图和 3D 网格图.Task.3 用拉普拉斯算子 w=1 4 1;4 -20 4;1 4 1求图像矩阵的 L(x,y)=f(x,y).Task.4 先用 imfilter 滤波器对图像用 Laplacian 算子 w=0 1 0;1 -4 1;0 1 0进行滤波,输出原图像和滤波后的图像,然后用h=fspecial(Laplacian),b=imfilter(a,h,corr,replicate)滤波器进行滤波,得到滤波后的图像,一起输出,比较二者的出入。Task.5 对 lena 图像进行 w=2 2 1;1 4 1;1 2 2/16 的均值滤波处理,输出前后图像,然后用拉普拉斯锐化滤波 w1=0 1 0;1 -4 1;0 1 0进行滤波,输出锐化后的图像和平滑图像 = 0.10、0.20和 0.25 的图像,并且求出在 = 0.10、0.20 和 0.25 下的 MSE,并且绘制出-MSE 折线图讨论结果及代码Task.1 a=110 110 110 145 180 200;110 110 145 185 200 210;110 145 185 200 210 215;140 185 200 210 215 220;180 200 210 220 220 220;200 210 215 220 220 220; w1=-1 -2 -1;0 0 0;1 2 1; %对水平边缘有较大响应 w2=-1 0 1;-2 0 2;-1 0 1; %对垂直边缘有较大响应 M,N=size(a); m,n=size(w1); w1=double(w1); %改变成浮点型 a=double(a); gx=zeros(M-2,N-2); %求水平方向上的一阶导数 s1=0; g1=0; for x=(m+1)/2:M-(m-1)/2;for y=(n+1)/2:N-(n-1)/2;for s=1:m;for t=1:n;g1=w1(s,t)*a(x+s-(m+1)/2,y+t-(n+1)/2);s1=s1+g1;endendg(x-1,y-1)=s1;s1=0;end end gx gx = %在水平方向上的一阶导数145 240 215 130235 210 120 65205 125 75 45125 65 40 20 m,n=size(w2); a=double(a); w2=double(w2); gy=zeros(M-2,N-2); %在垂直方向上的一阶导数s1=0; g1=0;for x=(m+1)/2:M-(m-1)/2;for y=(n+1)/2:N-(n-1)/2;for s=1:m;for t=1:n;g1=w2(s,t)*a(x+s-(m+1)/2,y+t-(n+1)/2);s1=s1+g1;endendg(x-1,y-1)=s1;s1=0;endend gygy = %在垂直方向上的一阶导数145 240 205 120245 210 120 65225 125 65 35135 75 40 10 gx,gy=gradient(a); %求梯度 figure; quiver(gx,gy); title(梯度图);gx=double(gx); gy=double(gy); k= gx./gy; %斜率,及正切值 kk =1.0000 1.0000 1.0488 1.08330.9592 1.0000 1.0000 1.00000.9111 1.0000 1.1538 1.28570.9259 0.8667 1.0000 2.0000l=atan(k)*180/pi; %gx 与 gy 夹角 Ll=45.0000 45.0000 46.3639 47.290643.8065 45.0000 45.0000 45.000042.3370 45.0000 49.0856 52.125042.7974 40.9144 45.0000 63.4349 M,N=size(k); m,n=size(l); k=double(k); l=double(l); f=zeros(M,N); for i=1:M;for j=1:N;g(i,j)=(k(i,j)2+l(i,j)2)(1/2);end EndFf=45.0111 45.0111 46.3758 47.303043.8170 45.0111 45.0111 45.011142.3468 45.0111 49.0992 52.140942.8074 40.9236 45.0111 63.4665Task.2 a=imread(lena.tif); a=double(a); figure; contour(a); title(lena 的等高线图);gx,gy=gradient(a); %求梯度 figure; quiver(gx,gy); %求梯度的图像 title(lena 的梯度场图);figure; mesh(a); title(lena 的网格图)(b) a=imread(lena.tif); b=imnoise(a,gaussian); b=double(b); figure; contour(a); title(加了高斯噪音后的等高线图);gx,gy=gradient(b); figure; quiver(gx,gy); title(加了高斯噪音后的梯度图像);figure; mesh(b); title(加入高斯噪音后的三维网格图像);Task.3 a=100 100 110 125 120 100;105 110 145 185 170 110;110 160 200 200 200 115;140 185 200 200 200 120;140 180 200 200 200 120;100 110 120 120 120 120; a a =100 100 110 125 120 100105 110 145 185 170 110110 160 200 200 200 115140 185 200 200 200 120140 180 200 200 200 120100 110 120 120 120 120 w=1 4 1;4 -20 4;1 4 1; M,N=size(a); m,n=size(w); a=double(a); w=double(w); f=zeros(M-2,N-2); s1=0; f1=0; for x=(m+1)/2:M-(m-1)/2;for y=(n+1)/2:N-(n-1)/2;for s=1:m;for t=1:n;f1=w(s,t)*a(x+s-(m+1)/2,y+t-(n+1)/2);s1=s1+g1;endendf(x-1,y-1)=s1;s1=0;end end f f =360 105 -510 -400-190 -500 -145 -645-330 -120 0 -485-500 -585 -480 -880 Task.4 imfilter 方法: a=imread(lena.tif); w=0 1 0;1 -4 1;0 1 0; b=imfilter(a,w,corr,replicate); imshow(b); title(滤波后图像); figure; subplot(2,2,1); imshow(a); title(原图像); subplot(2,2,2); imshow(b); title(滤波后图像);fspecial 方法: a=imread(lena.tif); h=fspecial(Laplacian); b=imfilter(a,h,corr,replicate); subplot(1,2,1); imshow(a);title(原图像); subplot(1,2,2); imshow(b);title(滤波后图像);Task.5 对 lena 图进行处理: a=imread(lena.tif); w=2 2 1;1 4 1;1 2 2/16;b=imfilter(a,w,corr,replicate); subplot(1,2,1); imshow(a);title(原图像); subplot(1,2,2); imshow(b);title(滤波后图像);w1=0 1 0;1 -4 1;0 1 0; b1=imfilter(a,w1,corr,replicate); %拉普拉斯锐化滤波 b=double(b); b1=double(b1); b1=double(b1); b2=b-(0.10)*b1; b3=b-(0.20)*b1; b4=b-(0.25)*b1; b2=uint8(b2); b3=uint8(b3); b4=uint8(b4); figure; subplot(1,2,1); imshow(b1);title(锐化后的图像); subplot(1,2,2); imshow(b2);title(0.10);figure; subplot(1,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号