《图像灰度变化程序》由会员分享,可在线阅读,更多相关《图像灰度变化程序(24页珍藏版)》请在金锄头文库上搜索。
1、*实践教学*兰州理工大学计算机与通信学院2012 年秋季学期图像处理综合训练题 目: 图像灰度变化程序设计 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目 录摘 要 .1一、前言 .2二、算法分析与描述 .3三、详细设计过程 .6四、调试过程中出现的问题及相应解决办法 .7五、程序运行截图及其说明 .8六、简单操作手册 .14设计总结 .15参考资料 .16致谢 .17附录 .180摘 要本程序设计主要实现对对比度线性展宽、灰级窗处理和直方图均衡化的处理,从而达到我们所需的要求,进而将其应用到特殊领域。在图像处理中主要用 Matlab 编写图像处理程序,并调用 Matlab 图像处理
2、的部分内部函数进行处理。关键词:数字图像处理;Matlab;点运算;直方图均衡化1一、 前言21 世纪是一个信息的时代,图像作为人们感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。研究表明,人类获取的视觉图像信息在人类接受的信息中的比重达到 3/4,“百闻不如一见”便是非常形象的例子之一。图像是对客观对象的一种相似性的、生动性的描述或写真。或者说图像是客观对象的一种表示,它包含了有关被描述对象的信息,它是人们最主要的信息源。据统计,一个人获取的信息大约有 75%来自视觉。数字图像处理技术是 20 世界 60 年代发展起来的一门新兴学科随着图像处理理论和方法的进一步完善使得数字
3、图像处理技术在各个领域得到了广泛应用并显示出广阔的应用前景。MATLAB 既是一种直观、高效的计算机语言同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的 500 多个数学和工程函数工程技术人员和科学工作者可以在它的集成环境中交互或变成以完成各自的计算。MATLAB 中集成了功能强大的图像处理工具箱。由于 MATLAB 语言的语法特征与 C 语言极为相似而且更加简单更加符合科技人员对数学表达式的书写格式而且这种语言可移植性好、可扩展性强再加上其中有丰富的图像处理函数所以 MATLAB 在图像处理的应用中具有很大的优势。灰度变换主
4、要针对独立的像素点进行处理,通过改变原始图像数据所占有的灰度范围而使图像在视觉上得到改观,没有利用像素点之间的相互关系。因此,灰度变换处理方法也叫点运算。点运算是一种既简单又重要的技术,一幅输入图像经过点运算后将产生一幅新的输出图像,由输入像素点的灰度值决定相应的输入像素点的灰度值。2二、算法分析与描述2.1 对比度扩展设有一幅图,由于成象时光照不足,使得整幅图偏暗, (灰度范围从 0 到63) ;或者成象时光照过强,使得整幅图偏亮, (灰度范围从 200 到 255) 。我们称这些情况为低对比度,即灰度都挤在一起,没有拉开。灰度扩展的意思就是把感兴趣的灰度范围拉开,使得该范围内的像素,亮的越
5、亮,暗的越暗,从而达到了增强对比度的目的。设原图、处理后的结果图的灰度值分别为 f(i,j)和 g(i,j);要求 f(i,j)和g(i,j)均在0,255间变化,但是 g 的表现效果要优于 f。因为 f 和 g 的取值范围相同,所以通过抑制 不重要的部分,来扩展 所关心部分的对比度。对比度:通俗地讲,就是亮暗的对比程度。我们可以用图 2-1 来说明对比度扩展的原理。255a bfg255gagb3图 2-1 对比度扩展的原理图 2.1 中的横坐标 g 表示原图的灰度值,纵坐标 ga,gb 表示 g 经过对比度扩展后得到了新的灰度值。, 为三段直线的斜率,因为是对比度扩展,所以斜率 1。fa
6、和 fb 表示原图中要进行对比度扩展的范围,g a和 gb表示对应的新值。用公式表示为图 2-2 对比度扩展数学公式显然要得到对比度扩展后的灰度,我们需要知道 ,,g a,gb五个参数。由于有新图的灰度级别也是 255 这个约束,所以满足 g a+(g b-ga)+ (255-g b)=255 这个方程。这样,我们只需给出四个参数,而另一个可以代入方程求得。我们假设 =,这样,我们只要给出 ,g a和 gb,就可以求出=(255-(g b-ga)/(255-(gb-ga)2.2 灰级窗处理灰级窗也称为灰度窗口,灰级窗可以看作是对比度扩展的一个特例, 它是将某一区间的灰度级和其它部分(背景)分开
7、,只显示指定灰度级范围内的信息。4图 2-3 灰级窗的原理不难看出,只要令比度扩展中的=0就实现了灰级窗。我们只要给出范围的两个端点,斜率就可以用方程(b-a)=255求出,灰级窗的原理和对比度扩展的原理类似。2.3 直方图均衡直方图均衡化处理的中心思想是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。是对在图像中像素个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减。从而达到清晰图像的目的。直方图均衡化(平滑化)是一种最常用的直方图修正,它是把给定图像的直方图分布改造成均匀直方图分布。直方图均衡化导致图像的对比度增加。由信息学的理论来解释,具有最大熵(信息量
8、)的图像为均衡化图像。直观地讲,直方图均衡化一方面要求尽量扩展灰度的分布域;另一方面更重要的是努力使每一个灰度级上的频度尽可能一致。频度趋于一致的图像使人感觉色调沉稳、安定,意味着图像质量好直方图均衡化方法的具体步骤如下: 求原图像 f(i,j)的灰度直方图,设用 256 维的向量 hj 表示; 由 hj 求原图的灰度分布概率,记作 Pf,则有其中,Nf=MN(M,N 分别为图像的长和宽)为图像的总像素个数; 计算图像各个灰度值的累计分布概率,记作 pa,则有 其中,令 pa(0)= 0 进行直方图均衡化计算,得到处理后图像的像素值 g(i,j)为:。5三、详细设计过程3.1 层次图图 3-1
9、 层次图3.2 打开函数详细设计fpath=pathname filename;%将文件名和目录名组合成一个完整的路径 img_a1=imread(fpath);imshow(img_a1);%用 imread 读入图片,并用 imshow 在 axes_src 上显示setappdata(handles.figure_he,img_a1,img_a1); %完成 Callback 之间的数值传递img_a1=getappdata(handles.figure_he,img_a1);%和 setappdata 配套使用,用于在其他函数的 Callback 中读取数据set(handles.m_
10、image,Enable,on)%实现在打开图片之前不能使用 tag 为m_image 的功能63.3 对比度线性展宽详细设计f=rgb2gray(A); 先用 Matlab 自带函数把真彩图像转化成一幅灰度图像,索引图像的颜色映射表转化成灰度颜色映射表在一个255,255矩阵中通过一个 for()语句达到线性扩宽的效果imshow(g);通过 imshow 函数显示图片3.4 灰级窗详细设计原理上和对比度线性展宽类同,实现也类同。f=rgb2gray(A); 先用 Matlab 自带函数把真彩图像转化成一幅灰度图像,索引图像的颜色映射表转化成灰度颜色映射表在一个255,255矩阵中通过一个
11、for()语句达到灰度窗处理的效果imshow(g);通过 imshow 函数显示图片3.5 直方图均衡化处理详细设计f=rgb2gray(A); 先用 Matlab 自带函数把真彩图像转化成一幅灰度图像,索引图像的颜色映射表转化成灰度颜色映射表c=histeq(b); %调用 Matlab 自带的 histeq()函数使图像完成直方图均衡化四、调试过程中出现的问题及相应解决办法1.课设最初没有用过 Matlab 编程难度很大,做出来的程序是散的 .m 文件并且没有可视化的界面操作。通过参考老师的点拨和同学们的指引完成可视化。2.程序只能对在代码中填路径,没有实现处理选择的图片。通过问同学看书
12、上网查资料用 setappdata() igetappdata()完成了 Callback 之间的数值传递3.程序对一些 bmp 格式的图片还不能完成设计的操作,原因在于 rgb2gray()函数处理黑白图片报错,由于时间有限水平有限还不能解决。4.由于平时编程少,课程设计过程中遇到许多的问题,有同学的帮助才得以解决7五、程序运行截图及其说明1.开始运行程序图 5-1 运行程序的界面82. 打开预处理图像图 5-2 打开预处理图像的界面93.对比线性展宽图 5-3 进行对比线性展宽的图片104.灰级窗图 5-4 进行灰级窗处理的图片115.直方图均衡化图 5-5 进行直方图均衡化处理126 显示作者信息,图 5-5 显示作者信息13六、简单操作手册第一步:打开程序第二步:在开始界面中选择文件点击,并打开相对应的文件夹,选择要处理的图片,单击打开第三步:打开图片后右侧的按钮可选,选择所要执行图像处理的方法单击即可14设计总结刚开始拿到自己的题目时,大家脸上都露出了茫然的表情,感觉无从下手,但在老师耐心的启发和开导下,终于摸着了头绪,在一番深思熟虑和查阅资料之后终