《数图》实验报告.docx
- 文档编号:26175164
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:14
- 大小:222.09KB
《数图》实验报告.docx
《《数图》实验报告.docx》由会员分享,可在线阅读,更多相关《《数图》实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
《数图》实验报告
西安邮电大学
实验报告书
系部名称
:
自动化学院
学生姓名
:
姓名:
专业名称
:
班级
:
实验时间
:
实验一直方图均衡
一、实验目的:
在学习图像直方图的概念、计算方法、性质和相关应用基础上,生成、绘制图像的直方图,并应用MATLAB编程实现图像直方图均衡化程序。
二、实验内容:
(1)计算并绘制图像直方图;
(2)编程实现图像的直方图均衡化处理,显示均衡前后的直方图和图像
3、实验运行结果
(1)生成并绘制灰度图像的直方图及归一化直方图
(2)直方图均衡化
4、实验中遇到的问题及解决方法
显示无法找到图像文件应将图片与XX.m文件置于同一文件夹
编辑过程中应注意标点的输入法应该用英文输入否则会报错。
五、思考题
(1)灰度直方图可以反映一幅图像的哪些特征?
(2)均衡化后的直方图有何特点?
答:
(1)直方图反映了图像的清晰程度,当直方图分布均匀时,图像最清晰。
(2)暗图像对应的直方图组成成分几种在灰度值较小的左边一侧,明亮的图像的直方图则倾向于灰度值较大的右边一侧。
对比度较低的图像对应的直方图窄而集中于灰度级的中部,对比度高的图像对应的直方图分布范围很宽而且分布均匀。
六、实验心得体会
本次实验用到matlab工具,这个工具在本学期学过,但是有些命令还没有掌握,所以在刚开始的时候还有些吃力,在参考了实验报告上的程序后,对其有了进一步的了解,按照程序和老师给的图片完成了实验,s书本上我们学习了图像直方图的概念、计算方法、性质等知识,本次试验又学会了生成、绘制图像的直方图。
在接下来还是要多练习,更好的掌握知识。
七、程序清单
(1)clearall;
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)直方图均衡化
clearall;
Im=imread('region.jpg');
J=histeq(Im);%均衡化
subplot(2,2,1);
imshow(Im);
title('原图');%显示原图
subplot(2,2,2);
imhist(Im);
title('原图直方图');%显示原图的直方图
subplot(2,2,3);
imshow(J);
title('均衡化结果');%显示均衡化后的图像
subplot(2,2,4);
imhist(J);
title('均衡化结果的直方图');%显示均衡化后的直方图
实验二频域图像增强
一、实验目的:
掌握基于频域的图像增强方法。
二、实验内容:
(1)编程实现图像的理想低通和高通滤波;
(2)编程实现图像的巴特沃斯低通和高通滤波。
三.运行结果
4、实验中遇到的问题及解决方法
显示图片无法打开最终查出来是图像的格式弄错
5、思考题
分析为什么图像通过低通滤波器后变得模糊?
为什么通过高通滤波器后得到锐化结果?
答:
图像的精细结构及突变部分主要由高频成分起作用故经低通滤波后图像的精细结构消失变得模糊经高通滤波后图像得到锐化。
6、实验心得体会
本次试验刚开始把图像格式弄错了导致无法打开图像,处理后图像也有些模糊。
本次试验程序比较多,刚开始有些看不懂,最后在请教同学和查阅资料后才慢慢地读懂程序,按照程序完成了实验。
在以后还是要对查阅一些资料做好基础知识的学习。
七程序清单
完整的代码:
%%%%理想低通和高通
clc;
clear;
data4=imread('lena_gray_256.tif');
subplot(3,2,1);
imshow(data4);
title('原图');
i=fft2(data4);
subplot(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);%对该图进行低通滤波
fork=1:
1:
n
forl=1:
1:
m
if(k^2+l^2)>=190^2%选取D=190
result(k,l)=0;
elseresult(k,l)=i(k,l);
end
end
end
subplot(3,2,4);
z=log(abs(result));%三维方式显示低通滤波后的频谱图
x=0:
1:
255;
y=0:
1:
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);%对原图进行高通滤波
fork=1:
1:
n
forl=1:
1:
m
if(k^2+l^2)<=190^2%选取D=190
result(k,l)=0;
elseresult(k,l)=i(k,l);
end
end
end
z=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=imread('lena_gray_256.tif');
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);
fori=1:
M
forj=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);
end
end
subplot(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('低通滤波后的图像');
%利用二阶巴特沃斯(Butterworth)高通滤波器
nn=2;%二阶巴特沃斯(Butterworth)高通滤波器
d0=5;
m=fix(M/2);
n=fix(N/2);
fori=1:
M
forj=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);
end
end
subplot(3,2,6);
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,5);
imshow(J3);
title('高通滤波后的图像');
实验三图像边缘检测与连接
一、实验目的:
掌握图像边缘检测的主要原理和常用方法;依据边缘检测理论,实现灰度图像一阶和二阶边缘检测方法;编程实现Hough变换提取直线;启发学生依据边缘特征进行图像分析与识别,提高学生图像处理与分析能力和实际动手能力。
二、实验内容:
(1)编程实现一阶差分边缘检测算法,包括Robert梯度算子、Prewitt算子、Sobel算子等;
(2)编程实现二阶差分拉普拉斯边缘检测算法以及LoG检测法和Canny检测法;
(3)分析与比较各种边缘检测算法的性能;
(4)编程实现Hough变换提取直线
(5)分析Hough变换检测性能;
4、实验运行结果
4、实验中遇到的问题及解决方法
拷贝文件后没改文件名直接执行时出现错误最后重新修改后重新编译使之成功
五、思考题
(1)边缘的方向是什么意思?
为什么要考虑边缘的方向?
答:
边缘常常意味着一个区域的终结和另一个区域的开始图像的边缘也包含了物体的形状的重要信息他不仅在分析图像时大幅度的减少了要处理的信息量而且还保护了目标的边界结构。
所以考虑边缘的方向很重要。
(2)Hough变换原理是什么?
答:
Hough变换的基本原理在于利用点与线的对偶性将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点。
这样就把原始图像中给定曲线的检测问题转化为寻找参数空间中的峰值问题。
也即把检测整体特性转化为检测局部特性。
比如直线、椭圆、圆、弧线等。
6、实验心得体会
本次试验主要依据边缘检测理论,实现灰度图像一阶和二阶边缘检测方法和编程实现Hough变换提取直线;在实验的过程中对于一些图像处理的函数不是很了解,对于其中的一些函数问题理解的不是很透彻,感觉自己欠缺的东西太多,在接下来我会对不懂的知识作进一步的学习,直到掌握。
七、程序清单
1、边缘检测
由edge函数实现各算子对图像的边缘检测
clearall;
I=imread('d:
\office.bmp');
I=rgb2gray(I);
BW1=edge(I,'sobel');%利用Sobel算子进行边缘检测
BW2=edge(I,'roberts');%利用roberts算子进行边缘检测
BW3=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变换作线检测和连接
clearall;
RGB=imread('d:
\M_M.bmp');
I=RGB;
BW=edge(I,'canny');%利用Canny算子提取图像边缘
[H,T,R]=hough(BW,'RhoResolution',0.5,'ThetaResolution',0.5);
figure
(1),
imshow(T,R,H,[],'notruesize'),axison,axisnormal
xlabel('\T'),ylabel('\R')
p=houghpeaks(H,5,'threshold',ceil(0.3*max(H(:
))));
%找到5个较明显的Hough变换峰值
holdon
plot(T(p(:
2)),R(p(:
1)),'s','color','white');
lines=houghlines(BW,T,R,p,'FillGap',10,'MinLength',10);
%查找并链接线段
figure,imshow(BW),holdon%在二值图中叠加显示这些线段
fork=1:
length(lines)
xy=[lines(k).point1;lines(k).point2];
plot(xy(:
1),xy(:
2),'LineWidth',2,'Color','green');
end
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数图 实验 报告