1、数字图像处理实验报告实 验 报 告 书系部名称:学生:专业名称:班 级:实验时间:实验一 直方图均衡一、实验目的 在学习图像直方图的概念、计算方法、性质和相关应用基础上,生成、绘制图像的直方图,并应用MATLAB编程实现图像直方图均衡化程序。二、实验容(1)计算并绘制图像直方图;(2)编程实现图像的直方图均衡化处理,显示均衡前后的直方图和图像;三、实验运行结果四、实验中遇到的问题及解决方法1、显示无法找到图像文件,应将图片与xx.m文件置于同一文件夹;2、编程过程中应注意标点的输入法,应该用英文输入,否则会报错。3、编程完成后运行时输入文件名与保存时文件名相同,区分大小写。五、思考题(1)、灰
2、度直方图可以反映一幅图像的哪些特征?答:1、表征了图像的一维信息。只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。2、与图像之间的关系是多对一的映射关系。一幅图像唯一确定出与之对应的直方图,但不同图像可能有相同的直方图。3、子图直方图之和为整图的直方图。(2) 均衡化后的直方图有何特点? 答:经直方图均衡化处理后,可以得到一副改善了质量的新图像。这幅图像的灰度层次将不再是呈黑暗色调的图像,而是一副灰度层次较为适中的、比原始图像清晰、明快得多的图像。处理的结果使图像更适合与人的视觉特征或机器的识别系统。六、实验心得体会 本次实验中,因为初学这个软件,我学习到了在程序中关于图像
3、的运用,以及也复习了课本上的许多知识,加深了对直方图均衡化的理解。七、程序清单clear all;I=imread(lena_gray_256.tif); %打开一幅灰度图像m,n=size(I);p=m*n;J=imhist(I)./p; %计算图像的归一化直方图subplot(1,3,1),imshow(I);subplot(1,3,2),imhist(I,64);subplot(1,3,3),plot(J); (2)直方图均衡化clear all;Im=imread(region.jpg);J=histeq(Im); %均衡化subplot(2,2,1);imshow(Im);title
4、(原图); %显示原图subplot(2,2,2);imhist(Im);title(原图直方图); %显示原图的直方图subplot(2,2,3);imshow(J);title(均衡化结果); %显示均衡化后的图像subplot(2,2,4);imhist(J);title(均衡化结果的直方图); %显示均衡化后的直方图实验二 频域图像增强一、实验目的1、频域图像增强2、掌握基于频域的图像增强方法。二、实验容(1)编程实现图像的理想低通和高通滤波;(2)编程实现图像的巴特沃斯低通和高通滤波。三、实验运行结果四、实验中遇到的问题及解决方法 显示图像无法打开,最终查出来时图像格式弄错了。五、思
5、考题分析为什么图像通过低通滤波器后变得模糊?为什么通过高通滤波器后得到锐化结果? 答:图像的精细结构及突变部分主要由高频成分起作用,故经低通滤波后图像的精细结构消失,变得模糊;经高通滤波后图像得到锐化。六、实验心得体会本实验中遇到很多问题及错误,例如图像打不开、处理后图像模糊等,都是经常容易发生的错误,最后实验几次,就能够逐一自己解决了。使自己对数字图像处理课程中的许多问题有了更实际和确切的深入了解。七、程序清单clc;clear;data4=imread(lena.gif);subplot(3,2,1); imshow(data4);title(原图);i=fft2(data4);subpl
6、ot(3,2,2); i=fftshift(i); z=log(abs(i); x=0:1:255;y=0:1:255;x,y=meshgrid(x,y);mesh(z); %以三维坐标显示该图像频谱图title(原图频谱);n,m=size(i); %对该图进行低通滤波for k=1:1:n for l=1:1:m if (k2+l2)=1902 %选取D=190 result(k,l)=0; else result(k,l)=i(k,l); end endendsubplot(3,2,4);z=log(abs(result); %三维方式显示低通滤波后的频谱图x=0:1:255;y=0:1
7、:255;x,y=meshgrid(x,y);mesh(z);title(理想低通滤波后的频谱);subplot(3,2,3); %新建图像显示窗口result=fftshift(result); %滤波后的数据去中心化b=ifft2(result); %逆傅里叶变换imshow(uint8(abs(b);title(理想低通滤波后的图像);subplot(3,2,6); %新建图像显示窗口 % n,m=size(c); %对原图进行高通滤波 for k=1:1:n for l=1:1:m if (k2+l2)=1902 %选取D=190 result(k,l)=0; else result(
8、k,l)=i(k,l); end endendz=log(abs(result);x=0:1:255; %三维方式显示高通滤波前的频谱图 y=0:1:255;x,y=meshgrid(x,y);mesh(z);title(理想高通滤波后的频谱);subplot(3,2,5); result=fftshift(result); %滤波后的数据去中心化d=ifft2(result); %逆傅里叶变换imshow(uint8(abs(d);title(理想高通滤波后的图像);%频域增强(巴特沃斯原型)%二阶巴特沃斯(Butterworth)低通滤波器%clc;%clear;Figure;J1=imr
9、ead(lena.gif);subplot(3,2,1);imshow(J1);title(原图);f=double(J1); g=fft2(f); % 傅立叶变换g=fftshift(g); % 转换数据矩阵subplot(3,2,2);x=0:1:255;y=0:1:255;x,y=meshgrid(x,y);z=log(abs(g); %取幅度mesh(z); %以三维坐标显示该图像频谱图title(原图频谱);M,N=size(g);nn=2; % 二阶巴特沃斯(Butterworth)低通滤波器d0=20;m=fix(M/2); n=fix(N/2);for i=1:M for j=
10、1:N d=sqrt(i-m)2+(j-n)2); h=1/(1+0.414*(d/d0)(2*nn); % 计算低通滤波器传递函数 result(i,j)=h*g(i,j); endendsubplot(3,2,4);x=0:1:255;y=0:1:255;x,y=meshgrid(x,y);z=log(abs(result); %取幅度mesh(z); %以三维坐标显示该图像频谱图title(低通滤波后的频谱);result=ifftshift(result);J2=ifft2(result);J3=uint8(abs(J2);subplot(3,2,3);imshow(J3);title
11、(低通滤波后的图像);%利用二阶巴特沃斯(Butterworth)高通滤波器nn=2; % 二阶巴特沃斯(Butterworth)高通滤波器d0=5;m=fix(M/2);n=fix(N/2);for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); if (d=0) h=0; else h=1/(1+0.414*(d0/d)(2*nn);% 计算传递函数 end result(i,j)=h*g(i,j); endendsubplot(3,2,6);x=0:1:255;y=0:1:255;x,y=meshgrid(x,y);z=log(abs(result); %取幅
12、度mesh(z); %以三维坐标显示该图像频谱图title(高通滤波后的频谱);result=ifftshift(result);J2=ifft2(result);J3=uint8(abs(J2);subplot(3,2,5);imshow(J3);title(高通滤波后的图像); 实验三 图像边缘检测与连接一、实验目的 图像边缘检测与连接二、实验容 (1)编程实现一阶差分边缘检测算法,包括Robert梯度算子、Prewitt算子、Sobel算子等; (2)编程实现二阶差分拉普拉斯边缘检测算法以及LoG检测法和Canny检测法; (3)分析与比较各种边缘检测算法的性能; (4)编程实现Houg
13、h变换提取直线 (5)分析Hough变换检测性能;三、实验运行结果四、实验中遇到的问题及解决方法 拷贝文件后没改文件名,直接执行时出现错误,最后重新修改后重新编译,使之成功。五、思考题(1)边缘的方向是什么意思?为什么要考虑边缘的方向? 答:边缘常常意味着一个区域的终结和另一个区域的开始,图像的边缘也包含了物体的形状的重要信息,他不仅在分析图像时大幅度的减少了要处理的信息量,而且还保护了目标的边界结构。所以考虑边缘的方向很重要。(2)Hough变换原理是什么? 答:Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。这样就把原始图像中
14、给定曲线的检测问题转化为准找参数空间的峰值问题。也即把检测整体特性转化为检测局部特性。比如直线、椭圆、圆、弧线等。六、实验心得体会 对于一些图像处理的函数不是很了解,只能够按课本的参照函数拷贝做实验,对于其中的一些函数问题理解不是很透彻,有些甚至完全不懂。还得继续努力。七、程序清单1、边缘检测由edge函数实现各算子对图像的边缘检测clear all;I = imread(d:office.bmp);I=rgb2gray(I);BW1 = edge(I,sobel); %利用Sobel算子进行边缘检测BW2 = edge(I,roberts); %利用roberts算子进行边缘检测BW3 =
15、edge(I,prewitt); %利用prewitt算子进行边缘检测BW4 = edge(I,log); %利用log算子进行边缘检测BW5 = edge(I,canny); %利用canny算子进行边缘检测subplot(2,3,1),imshow(I)subplot(2,3,2),imshow(BW1)subplot(2,3,3),imshow(BW2)subplot(2,3,4),imshow(BW3)subplot(2,3,5),imshow(BW4)subplot(2,3,6),imshow(BW5)2、边缘连接使用Hough变换作线检测和连接clear all; RGB = im
16、read(d:M_M.bmp);I=RGB;%I = rgb2gray(RGB);BW = edge(I,canny); % 利用Canny算子提取图像边缘H,T,R = hough(BW,RhoResolution,0.5,ThetaResolution,0.5);figure(1),imshow(T,R,H,notruesize), axis on, axis normalxlabel(T), ylabel(R)p = houghpeaks(H,5,threshold,ceil(0.3*max(H(:); %找到5个较明显的Hough变换峰值hold onplot(T(p(:,2),R(p(:,1),s,color,white);lines = houghlines(BW,T,R,p,FillGap,10,MinLength,10); %查找并线段figure, imshow(BW), hold on %在二值图中叠加显示这些线段for k = 1:length(lines) xy = lines(k).point1; lines(k).point2; plot(xy(:,1),xy(:,2),LineWidth,2,Color,green);end
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1