当前位置:文档之家› 课设报告正文(MATLAB的图像直方图的计算与显示)

课设报告正文(MATLAB的图像直方图的计算与显示)

目录
摘要 (I)
1 基础介绍 (1)
1.1MATLAB简介 (1)
1.2数字图像处理简介 (1)
2 设计原理分析 (3)
2.1灰度直方图的定义 (3)
2.2设计原理 (3)
2.3常用函数介绍 (3)
3 程序及运行结果 (4)
3.1流程图 (4)
3.2源程序 (4)
3.3运行结果 (5)
3.4库函数运行结果 (7)
4设计总结 (8)
5心得体会 (9)
参考文献 (10)
1 基础介绍
1.1MATLAB简介
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。

它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。

MATLAB和Mathematica、Maple并称为三大数学软件。

它在数学类科技应用软件中在数值计算方面首屈一指。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。

在新的版本中也加入了对C,FORTRAN,C++ ,JAVA的支持。

可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

1.2数字图像处理简介
数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。

数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。

数字图像处理作为一门学科大约形成于20世纪60年代初期。

早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。

图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。

随着图像处理技术的深入发展,从70年代中期开始,随着计算机技术和人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。

人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。

很多国家,特别是发达国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。

其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。

图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。

2 设计原理分析
2.1灰度直方图的定义
灰度直方图是灰度级的函数,描述的是图像中该灰度级的像素个数或该灰度级像素出现的频率。

即:横坐标表示灰度级,纵坐标表示图像中该灰度级出现的个数或该灰度级像素出现的频率,这个关系图就是灰度直方图。

它反映了图像灰度分布的情况。

我们可以通过直方图的状态来评断图像的一些性质:明亮图像的直方图倾向于灰度级高的一侧;低对比度图像的直方图窄而集中于灰度级的中部,高对比度图像的直方图成分覆盖的灰度级很宽而且像素的分布没有不太均匀,只有少量的垂线比其他高许多。

直观上来说:若一幅图像其像素占有全部可能的灰度级并且分布均匀,则这样的图像有高对比度和多变的灰度色调。

从概率的观点来理解,灰度出现的频率可看作其出现的概率,这样直方图就对应于概率密度函数pdf(probability density function),而概率分布函数就是直方图的累积和,即概率密度函数的积分。

2.2设计原理
首先读取目标图片,利用函数将其转换为灰度图片。

然后建立一张空表,用于存放灰度值。

利用for循环,检测图片中灰度值为0到255的点求和并存放在add中。

检测图片的横纵坐标像素值,求乘积得到总像素值,利用前面的总和除以总像素值得到每个灰度值的概率,最后得到直方图显示。

2.3 常用函数介绍
imread:图片读取函数
rgb2gray:将图片变换为灰度图片
size:图片大小检测函数
figure:图片显示函数
imshow:显示原图片
3 程序及运行结果
3.1流程图
图3.1 设计流程图3.2 源程序
clear
I=imread('F:\a.jpg');
I=rgb2gray(I);
add=[];
tab1=zeros(1,256);
for n=0:255
X=I==n;
add=[add;sum(sum(X))];
end;
[a b]=size(I);
final=add/(a*b);
figure;
imshow(I);
figure;
bar(0:255,final,'g') %绘制直方图title('原图像直方图') figure;
imhist(I) %利用库函数绘制直方图
3.3 运行结果
图3.2 原图片
3.3 处理后的灰度图片
图3.4 直方图
3.4 库函数运行结果
上述程序中没有使用库函数,现在使用库函数imhist直接获取图像的直方图,并与之前得到的直方图进行比较,可以发现所得结果比较相近。

图3.5 利用库函数所得直方图
4设计总结
此次课程设计要求我们matlab软件设计计算一幅图像中像素值在各个灰度级出现的概率,即图像的直方图的程序(不能用matlab提供的库函数),对给定图像计算直方图,并显示直方图图形。

虽然不能使用matlab软件中自带的库函数,但是我们可以掌握其原理,编写程序将库函数过程化,即编写程序代替库函数并实现同样的功能。

拿到一副图片,如果不是灰度图片的话,很难检测其灰度值,因此必须利用rgb2gray 函数将其变换成灰度图片。

要计算图像中某灰度值的出现概率,首先需要知道该灰度值的数量,因此程序中利用for循环检测该灰度值的次数。

然后利用size函数检测原图中横纵坐标的值,相乘即得到总的像素值。

两者相除即可得到出现的概率。

然后利用figure函数将他们用图片形式显示出来。

随后利用库函数imhist得到的直方图,与自己变成所得直方图进行比较,可发现图形基本一致。

5心得体会
通过这次课程设计,加强了我们动手、思考和解决问题的能力。

在设计过程中,经常会遇到这样那样的情况,就是心里想着这样的程序可以行得通,但实际接上总是实现不了,因此耗费在这上面的时间用去很多。

我觉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个函数的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多,并且对于其在程序中的使用有了更多的认识。

平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。

而且还可以记住很多东西。

比如一些程序的调用,通过动手实践让我们对调用映象深刻。

所以这个课程设计对我们的作用是非常大的。

设计程序时,我发现只有细心才能做到完美,首先是图片大小的选择,还有结果显示部分的设置,兼顾到方方面面去考虑是很需要的,否则只是一纸空话。

同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。

某个人的离群都可能导致导致整项工作的失败。

课程设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。

团结协作是我们实习成功的一项非常重要的保证。

而这次实习也正好锻炼我们这一点,这也是非常宝贵的。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说是困难重重,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

参考文献
[1] 杨杰黄朝兵.数字图像处理及matlab实现.北京:电子工业出版社,2010
[2] 艾德才.数字图像处理程序设计.北京:清华大学出版社,2002
[3] 冯博琴. Matlab原理及应用.北京:清华大学出版社,2000
[4] 薛钧毅. 数字图像处理及matlab程序设计.西安:西安交通大学出版社,2005
[5] 朱志刚. 数字图像处理.北京:高等教育出版社,2004
10。

相关主题