数字图像灰度变换软件系统的设计_第1页
数字图像灰度变换软件系统的设计_第2页
数字图像灰度变换软件系统的设计_第3页
数字图像灰度变换软件系统的设计_第4页
数字图像灰度变换软件系统的设计_第5页
已阅读5页,还剩42页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、毕业设计报告册课程名称: 数字图像灰度变换软件系统的设计专 业: 班 级: 姓 名: 学 号: 指导教师: 前言数字图像处理技术是20世界60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应用,并显示出广阔的应用前景。MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。它为数据分析和数据可视化、算法和应用程序开发提供了最核心的数学和高级图形工具。根据它提供的500多个数学和工程函数,工程技术人员和科学工作者可以在它的集成环境中交互或变成以完成各自的计算。MATLAB中集成了功能强大的图像处理工具箱。由于MATLAB语言

2、的语法特征与C语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式,而且这种语言可移植性好、可扩展性强,再加上其中有丰富的图像处理函数,所以MATLAB在图像处理的应用中具有很大的优势。MATLAB是一种以矩阵运算为基础的交互式程序语言,能够满足科学、工程计算和绘图的要求,与其它计算机语言相比,其特点是简洁和智能化,适应科技专业人员的思维方式和书写习惯,使得编程和调试效率大大提高。我们学习掌握MATLAB,也可以说是在科学工具上与国际接轨。目录第1章 绪论11.1 本课题的研究目的及意义11.2 本课题研究的现状11.2.1 国内研究现状11.2.2 国外研究现状21.3 本课题

3、的研究内容31.4 本课题的设计方案31.5 本课题的技术路线41.6 本课题的预期目标51.7 论文主要内容5第2章 灰度变换基础知识72.1图像旋转82.1.1图像旋转变换82.1.2 图像旋转变换案例分析112.2 灰度线性变换122.2.1 图像反转122.2.2 线性变换132.2.3 分段线性灰度变换152.3 灰度非线性变换182.3.1 对数变换182.3.2 指数变换202.3.3 自定义曲线21第3章 系统设计过程233.1 图像的读入和显示233.1.1 打开图像233.1.2 显示原图像243.1.3 图像灰度处理243.1.4 显示灰阶后图像243.1.5 生成直方图

4、253.2 分段线性变换253.3 自定义曲线调节263.3.1 自定义曲线263.3.2 层次曲线263.3.4 Curve调节工具的总结293.3.5 关于自定义曲线的相关代码解释29第4章 设计结果344.1 图像反转变换结果示意图344.2 线性变换结果示意图344.3 分段线性变换结果示意图354.4 对数变换结果示意图364.5 指数变换结果示意图364.6 自定义曲线变换结果示意图37参考文献38附录39第1章 绪论1.1 本课题的研究目的及意义数字图像处理技术是20世界60年代发展起来的一门新兴学科,随着图像处理理论和方法的进一步完善,使得数字图像处理技术在各个领域得到了广泛应

5、用,并显示出广阔的应用前景。各大高校更是在课堂上,增设了数字图像处理这门课程。通过对此课程的学习,学生可以较深入地理解数字图像处理的基本概念、基础理论以及解决问题的基本思想方法,掌握基本的处理技术,了解与各个处理技术相关的应用领域。图像的灰度变换就是数字图像处理技术的一种,这是图像增强处理技术中一种非常基础、直接的空间域图像处理方法。灰度变换是指根据某种目标条件按一定变换关系逐点改变原图像中每一个像素灰度值的方法。由于图像灰度变换的基本原理比较简单,所涵盖的内容也较少,所以,在授课中,老师也就采取了简单的讲授式教学法,让同学们仅仅通过文字与图片的结合,自己理解记忆。但是,传统的教学方法会使学生

6、集中精神不够,认为教学乏味,容易形成被动听讲的习惯;不利于因材施教,不能顾及学生的个性差异。根据此现状,本课题将制作数字图像灰度变换软件系统的设计,并将该软件引入到数字图像处理课堂教学中,通过软件来辅助教学,提供一个良好的交互式平台,将抽象的理论转化为可视化的图形,可以让学生更直观地理解和教会关于灰度变换中抽象的内容以及其操作后的效果图,尤其是分段线性和自定义曲线中关于点运算的实现,可让学生自己去研究体验一下。使学生在实践中获得直观、典型的感性认识;有助于培养学生的观察力, 激发学生的认识兴趣,提高智慧潜力;学会发现的试探法。1.2 本课题研究的现状1.2.1 国内研究现状早在1998年,我国

7、已经开始利用教学辅助软件进行试点教学,其主要是,利用服务平台构建个性化的教学环境,以辅助教师教学,促进教师和学生之间的交流,促进学生协作学习,是辅助教学的延伸和新的发展。在此工作开展后,许多学者加入到了辅助教学的研究当中,涌现出了一批优秀案例以及论文。截至目前,从事此项工作的高校已达68所,在读学生有开始试点时的3000多人扩展到今天的200万余人,并每年以48%的速度递增,辅助教学的教育覆盖范围已达全国31个省、自治区、直辖市,并逐步扩大到县市。国内在开发数字图像处理教学辅助软件的研究中具有代表性的是清华大学,他们研制了数字图像处理实验开发系统TDB-IDK。该系列产品是一款基于TMS320

8、C6OO0 DSP数字信号处理器的高级视频和图像系统,也是一套DSP的完整的视频、图像解决方案,适合院校、研究所和企业进行视频、图像方面的实验与开发。该软件处理的图像数据和DSP相互独立,便于开发人员对处理图像。此外,该软件还融合DSP和FAA/CPLD两个高端技术,用户可分析黑白和彩色信号,以及显示图形。此外,南京东大互联技术有限公司研制了数字图像采集传输与处理实验软件。该软件可以实现对数字图像的采集、传输与处理,还包含了图像的灰度变换、轮廓提取与增强、滤波、平滑、锐化、伪彩、格式转换等功能。1.2.2 国外研究现状20世纪50年代的行为主义学习理论,采用“黑箱”理论的方法,着重强调学习的外

9、部行为反应,将复杂的心理活动成为可分析、可操作的事件,为辅助教学的发展和应用提供了理论上的依据。其代表人物如美国著名的心理学家BF斯金纳认为,学习起因于对刺激的反应。因此,通过对反应的及时强化,是学习者正确地建立反应和刺激之间的联系便成了早期辅助教学软件设计的基本思路。辅助教学产生后,其普及速度快,覆盖范围广,对传统的学校教育产生了巨大的冲击,是当今教育学中研究的热点。尽管现在对辅助教学的有关理论问题在学术界和教育界认识并不统一,但辅助教学日益显现的优越性和科学性,使人们在开展辅助教学的研究和应用上达成共识,发达国家和发展中国家都在研究并推广辅助教学。自辅助教学产生以来,世界各国都逐渐认识到其

10、对未来教育发展的重大意义,它的发展现状已成为一个国家教育水平、一个学校教学水平的重要标志之一。现今,在美国从高等学府到一般小学,辅助教学早已成为众多教师必不可少的得力助手,在日常的教学工作中发挥着积极的作用。面对21世纪高新技术革命的挑战,美国政府从战略高度上予以充分重视,在1989年的普及科学美国2061计划报告中明确指出给予应用与教学特别的考虑。日本作为我国的邻国,也对辅助教学的研究、开发和普及应用投入巨大的人力和物力。为了促进学校教育的革新和发展,在1989年,由日本文部省颁布了新教学指导纲要中,着重强调了要在学校各年级教学活动中加强辅助教学教育,以全面提高教学的质量和效率。虽然起步比美

11、国晚,但日本充分利用政府的宏观调控力量,积极倡导,扶持辅助教学的研究和应用,使得日本辅助教学技术在义务教育领域中得到了全面的普及,在高等教育、继续教育领域也获得较大的发展。日本开展辅助教学工作的思路和方法与美国不同,其特色之一就是发挥“官、产、学”相结合的优势,由政府出面制定政策,企业利用电子工业的技术优势不断开发新产品,而学校负责推广使用并反馈意见,学术界则主要进行相关理论和技术方面的研究,从而凝聚成一种从上到下、范围广泛的合力,对计算机辅助教学在教育实践中的发展,构成了良好的外部环境和运行机制。1.3 本课题的研究内容1) 研究“图像传输与处理”课程中灰度变换知识点的教学内容,重点和难点。

12、2) 研究和设计灰度变换知识点的教学方法。3) 采用MATLAB图形用户界面GUI开发工具,设计数字图像灰度变换软件系统,优化设计模块结构和界面布局, 完成程序设计和调试。1.4 本课题的设计方案本设计是根据数字图像处理的基本理论知识,运用MATLAB图像处理工具箱开展GUI界面和软件设计。首先,灰度变换包含线性变换与非线性变换两个模块,分析每个模块的功能进行演示操作。然后,结合MATLAB的GUI设计环境设计合理的图形用户界面。通过运行GUI界面对运行结果进行分析,再对每个功能模块进行调试和优化。在整个设计中,包括操作区,图像显示区和菜单栏三个区域。1.5 本课题的技术路线首先,灰度变换包含

13、线性变换与非线性变换两个模块,模块一是指线性变换包含图像反转、线性变换和分段线性变换,同时,对于每一种变换画出相应的映射变换图,处理结果图以及直方图。在线性变换中,图像反转和线性变换,通过简单的代码,即可实现其相应的映射变换图,处理结果图以及直方图。然后,在进行分段线性变换时,由于其可在空间上任意取点、移动点位置的特征,需要对其进行取点,判断是拖动点还是增加点,记下点的索引,画出相应的折线,更加明确的展示了特征物体的灰度细节。模块二是指非线性变换包含对数变换、指数变换和自定义曲线,同时,对于每一种变换画出相应的映射变换图,处理结果图以及直方图。在非线性变换中,为获得相对应的效果图,对图片进行相

14、对应的对数变换或是指数变换,操作者可通过拖动指数与系数的移动条,来改变指数系数的数值,从而改变效果图,也可以直接在静态文本框输入限定范围内的数值,观察效果。若是要对图片的某一点,或是要将图片的某一部分突出化,则可对其进行自定义曲线变换,将特征处放大化,使之更为明了。在本设计中,对自定义曲线选择了插值法,即在原来分段线性的基础上增加了20个点,其实曲线的画法就是在直线上取很多个点然后连接起来,实际上曲线也是直线,只不过很密集,看起来是曲线而已。其次,图形界面,包括操作区,图像显示区和菜单栏。所谓的操作区,包括着对通道的选择,图像的旋转,线性变换和非线性变换,在这块区域里,可对各个变换进行选择,转

15、换以及对相应变换的数值进行更改。具体来说,也就是说,RGB通道是对图片进行灰度的选择,不同的灰度通道,出来的各个效果图都将有所不同;图像的旋转可以将图片进行其中固定的旋转角度,也可以选择自定义角度,设定自己想要的角度,观察效果。线性变换包含反转、线性、分段线性。操作者可在该区域内,自由选择线性变换中的任意一种变换,随意切换,观察效果。非线性变换包含对数、指数、自定义曲线。操作者亦可在该区域内,自由选择非线性变换中的任意一种变换,随意切换,观察效果。而在图像显示区域里,总共有4个axes,分别存放原图,处理结果图,渐变映射图和直方图。随着不同的变换,各个区域里将呈现不同的效果图,尤其是在选择分段

16、线性和自定义曲线时,操作者可以在渐变映射图所在的轴上,进行取点、移动点,对特征部分进行一个拉伸变换。在菜单栏这个区域里,包括文件、编辑、视图和帮助。文件中包括打开、保存和退出,可以选择计算机中的任一图片;对操作结果进行保存;并且可随时退出。编辑中包括放大、缩小和拖拽,这些操作可将相应的图片进行放大、缩小和拖拽。视图包括显示状态栏、隐藏状态栏,可对状态栏进行设置。所谓的帮助,就是指引、帮助大家对这一软件的认识,更加熟悉操作,帮助里具体包括实例演示、知识点、操作方法和版本信息。所谓的实例演示,是指在当操作者点击这一步骤是就会弹跳出一个新的界面,是对其中一个变换的再一说明,在本设计中,实例演示选择了

17、对数变换和指数变换。而知识点,则是对灰度变换这一整体内容,做一知识点的罗列,这边选择了以网页的形式来呈现给大家看。操作方法即是对这一软件的整体操作做一个演示,这里是通过视频的方式来呈现的,在这段视频里,会详细的操作讲解给大家看,让大家更一目了然。1.6 本课题的预期目标(1) 模块具有人机交互功能,界面包含图像显示区、用户操作区、菜单栏等部分。图像显示区显示原图或处理结果图,用户操作区允许用户修改参数,菜单栏包括文件、编辑、帮助等命令项。(2) 线性变换中有图像反转、线性变换和分段线性变换,非线性变换中有对数变换、指数变换和自定义曲线。(3) 软件模块与课程实验内容一致,软件交互性强,操作方便

18、。1.7 论文主要内容全文共分四章,具体安排如下:第一章介绍本的研究背景、目的及研究意义、研究现状和发展趋势以及论文主要内容。第二章主要介绍了灰度变换包含了线性变换和非线性变换,以此展开详细解说。第三章主要介绍了系统设计过程第四章主要介绍了设计结果参考文献附录第2章 灰度变换基础知识灰度变换分为线性变换 (正比或反比)和非线性变换。非线性变换有对数的(对数和反对数的),幂次的(n次幂和n次方根变换) 。下面是一些灰度变换曲线。 用于图像增强的某些基本灰度变换函数灰度变换是图像处理最基本的方法之一,灰度变换可使图像动态范围加大,图像对比度增强,图像清晰,特征明显,是图像增强的重要手段。灰度变换在

19、图像复制中也称为层次校正,印刷制版中的层次校正就是对印刷图像在成像过程中,扫描系统、光电转换系统、印刷工艺等诸多因素所造成的像质恶化进行校正,从而改善图像的质量。2.1图像旋转 2.1.1图像旋转变换旋转(Rotation)有一个绕着什么转的问题。通常的做法是,以图像的中心为圆心旋转,将图像上的所有像素都旋转一个相同的角度。图像的旋转变换是图像的位置变换,但旋转后,图像的大小一般会改变。和图像平移一样,在图像旋转变换中,可以把转出显示区域的图像截去,旋转后也可以扩大图像范围以显示所有的图像。 图2-1 原图 图2-2 保持原图大小的旋转 图2-3 图像变大的旋转采用图2-3是不裁掉转出部分,旋

20、转后图像变大的做法,首先给出变换矩阵。在我们熟悉的坐标系中,如下图2.-4所示,将一个点顺时针旋转角,r为改点到原点的距离,b为r与x轴之间的夹角在旋转过程中,r保持不变。 图2-4 旋转示意图 图2-7 两种坐标系间的转换关系设旋转前x0,y0的坐标分别为x0=r*cos(b);y0=r*sin(b),当旋转角度后:旋转后的坐标x1、y1的值分别为: 写成矩阵表达式为 (2.2.7)式(2.2.7)中坐标系x y是以图像的中心为原点,向右为x轴正方向,向上为y轴正方向。它与以图像左上角点为原点O',向右为x'轴正方向下为y'轴正方向的坐标系x' y'之

21、间的转换关系图如上图2-7所示。设图像的宽为w,高为h,从而得到图像的矩阵表达式: (2.2.8)逆变换为: (2.2.9)有了式(2.2.7)、式(2.2.8)和式(2.2.9),可以将变换分成3步来完成:1 将坐标系O变成O;2 将该点顺时针旋转a角;3 将坐标系O变成O',这样就得到了如下的变换矩阵; (2.2.10)注意:因为新图变大,所以上面公式中出现了 ,它们分别表示原图(old)和新图(new)的宽和高。式(2.2.10)的逆变换为: (2.2.11)这样,对于新图中的每一点,就可以根据式(2.2.10)求出对应原图中的点,并得到它的灰度。如果超出原图范围,则填成白色。要

22、注意的是,由于有浮点运算,计算出来的点的坐标肯呢过不是整数,需采用取整处理,即找最接近的点,这样会带来一些误差(图像可能会出现锯齿)。 2.1.2 图像旋转变换案例分析例1.将原图所示图像分别逆时针旋转60度和顺时针旋转60度用MATLAB显示旋转后结果。 运行结果如下图所示: 原图 逆时针旋转60度图像 顺时针旋转60度图像2.2 灰度线性变换 2.2.1 图像反转 1.原理描述:图像反转简单地说就是使黑变白,使白变黑,将原始图像的灰度值进行翻转,是输出图像的灰度随输入图像的灰度增加而减少。这种处理对增强嵌入在暗背景中的白色或灰色细节特别有效,适于处理增强嵌入于图像暗色区域的白色或灰色细节,

23、特别是当黑色面积占主导地位时。如下图所示。 图像反转变换函数 原图 反转后图像根据上图图像反转的变换关系,由直线方程截斜式可知,当k=-1,b=255时,其表达式是: g(x,y)=k*f(x,y)+b=-f(x,y)+255 (2.2.12)式中:0,255为图像灰度级范围。 2.2.2 线性变换1.线性变换原理:利用线性函数进行变换。原稿被数字化后,可使用灰度直方图检查输入图像的质量。如果检查表明规定的灰度分级没有得到充分利用,则可用线性灰度变换来解决。简单的线性灰度变换法可以用下式表示: (2.2.13)其中:b和a分别是输入图像亮度分量的最大值和最小值,d和C分别是输出图像亮度分量的最

24、大值和最小值。经过线性灰度变换法,图像亮度分量的线性范围从a,b到c,d,如图2-5所示。 若图像中大部分像素的灰度级分布在区间a,b内,Mf为原图的最大灰度级,只有很小一部分的灰度级超过了此区间,则为了改善增强效果,可以令:2.作用:使曝光不充分图像中黑的更黑,白得更白,从而提高图像对比度。如下图所示: 图像线性变换函数 原图 线性变换后图像在曝光不足或过度的情况下,图像灰度可能会局限在一个很小的范围内。这时就形成一个模糊不清,似乎没有灰度层次的图像。采用线性变换对图像每一个像素灰度做线性拉伸,可有效地改善图像视觉效果。 本课题将在分段线性部分,着重讲解对图像每一个像素灰度做线性拉伸。 2.

25、2.3 分段线性灰度变换1.分段线性原理:进行像素点对点的,灰度级的影射。2.应用目的:为了突出感兴趣目标所在的灰度区间,相对抑制那些不感兴趣的灰度空间,可采用分段线性变换。设新、旧图的灰度级分别为g和f,要求g和f均在0,255间变化,但是g的表现效果要优于f。(1)扩展感兴趣的,牺牲其他对于感兴趣的a,b区间,采用斜率大于1的线性变换来进行扩展,而把其他区间用a或b来表示。变换函数是:(2)扩展感兴趣的,压缩其他在扩展感兴趣的a,b区间的同时,为了保留其他区间的灰度层次,也可以采用其它区间压缩的方法,既有扩有压,变换函数为: 分段线性变换,是将图像的灰度范围增加了,并且压缩了图像的中间部分

26、,而对图像的暗调及高光部分进行了一定的扩展。分段线性变换的优点是可以根据客户的需要,拉伸特征物体的灰度细节,相对抑制不感兴趣的灰度级。采用分段线性法,可将需要的图像细节灰度级拉伸,增强对比度,将不需要的细节灰度级压缩。本课题更人性化的展示了,在空间上任意移动点、取点位置的特征,更加明确的展示了特征物体的灰度细节。区间边界的随意确定,说明了这是一种比较灵活的方法,而且由于硬件实现比较简单,在图像增强中得到了广泛的应用。任意移动点的映射变换图如下所示: 任意取点的映射变换图如下所示: 在通过分段线性变换的任意拉伸、抑制,很好的把需要的目标突出显示出来了,有效地改善图像视觉效果。 2.3 灰度非线性

27、变换很多情况下,仅仅用线性灰度变换法无法达到图像处理的要求,需要采取非线性变换,对于图像中的不同灰度进行不同的处理。非线性变换的样式很多,各有不同的复杂度。 2.3.1 对数变换1.对数变换原理:对数变换非线性变换曲线形式如下图所示,其表达式为: g(x,y)=C*lg1+|f(x,y)|式中:C是调节常数。用于调节变换后的灰度值,使其符合实际要求;1+|f (x,y)|是为了避免对零求对数。2.对数变换作用:扩展图像的低灰度范围,同时压缩高灰度范围。对数变化常用来扩展低值灰度,压缩高值灰度,这样可以使低值灰度的图像细节更容易看清,从而达到增强的效果。3.对数变换应用(非线性动态范围调整):通

28、常用取对数的方法。原因是人眼对信号的处理是有一个近似对数算子的环节。 g(i,j)=c*lg1+f(i,j)例:(非线性动态范围调整例题)1399821373360646820529260 g(i,j)=9*logf(i,j)+13599943585580868940749480作用:将暗的部分扩展,而将亮的部分抑制。 2.3.2 指数变换1.原理:和对数变换的效果相反,指数变换使得高灰度范围扩展,压缩低灰度范围,其一般表达是为: g(m,n)=c*f(m,n)其中,c和为常数。值的选择对于变换函数的特性有很大影响,如下图示。应用范围,比较广泛,可代替对数变换和反对数变换。² <

29、;1,dark pixels are stretched.² >1,bright pixels are stretched.为矫正量,其取值决定了输入图像到输出图像的灰度映射方式,即决定了增强低灰度还是增强高灰度。Ø 当=1时,为线性变换(正比变换)。Ø 当<1时,会将原图像的灰度向高亮度部分映射,即映射将会对图像的像素值加权,使输出像素灰度值比原来大,此时扩展低灰度级,压缩高灰度级,使得图像变亮。Ø 当>1时,会将原图像的灰度向底亮度部分映射,那么映射加权后的灰度值比原来小,此时扩展高灰度级,压缩低灰度级,使得图像变暗。 (1)原图像

30、 (2)=0.5时的变换结果图 (3)=1.5时的变换结果图取不同值得指数变换结果对比图 2.3.3 自定义曲线表示图像中各层次的输入信息和输出信息关系的曲线叫做层次曲线。其横坐标表示调节前各层次的输入灰度值,纵坐标表示调节后各层次的输出灰度值。Curve调节工具的工作原理是:通过改变曲线的形状来对某一阶调范围的灰度进行层次调节。跟之前的分段线性一样,同样是根据客户的需要,拉伸特征物体的灰度细节,相对抑制不感兴趣的灰度级。其映射变换图也有同样的特征,即可以任意移动点、取点的。有所不同的是,在分段线性中,两点之间的相连线是直线,而这里是由曲线相连接的。如下图所示: 但是,变换后的效果图是一样的,

31、如下图所示: 第3章 系统设计过程 3.1 图像的读入和显示采用MATLAB Guide设计图像界面;可以读入并显示图像,设计实现下列功能的按钮,点击相应的按钮可以实现相应的功能。在本课题中,已预先设定了每一坐标系的默认图片。 3.1.1 打开图像从计算机中查找要打开的图片 3.1.2 显示原图像把选中的图片显示在第一显示区 3.1.3 图像灰度处理 利用灰度处理函数rgb2gray()对原真彩图像灰阶化 3.1.4 显示灰阶后图像对两幅图片进行比较,观察两者特点。结论:对图像灰阶处理就是对原图像黑白化。 3.1.5 生成直方图图像的直方图,是表示数字图像中每一灰度级与该灰度级出现的频数,函数

32、为imhist(X,map) 3.1.6 图像灰度变换模块的实现要进行灰度变换,首先要生成转换曲线。所谓转换曲线实际上是一个一维数组,每种变换对应一组数据。在该软件中给出了6种转换曲线,它们是指图像反转、线性变换、分段线性变换、对数变换、指数变换、自定义曲线。本文将在下一节以曲线为例,着重说明一下。灰度变换是通过修改像素数据来实现。实际上是通过生成各种算法的转换曲线,即转换表,查表进行转换。3.2 分段线性变换灰度变换包含线性变换与非线性变换两个模块,模块一是指线性变换包含图像反转、线性变换和分段线性变换,同时,对于每一种变换画出相应的映射变换图,处理结果图以及直方图。当选择分段线性时,渐变映

33、射图中会出现一条直线,这是通过(0,0)、(1,1)两点实现的,对坐标轴实现归一化,当鼠标点击axes3,也就是存放映射变换图所在的轴上中任一位置时,若这个点的横纵坐标与当前点的横纵坐标的差的绝对值,皆小于0.05(这边的0.05是又设计者随便定义的一个很小的数值),就是选中了这个点,是将这个点的位置进行拖动,否则就是新增点。同时,对移动点还有个限制,本设计将移动点限制在与之相邻最近的两个点内,不让其造成折线折叠交错的现状。3.3 自定义曲线调节 3.3.1 自定义曲线非线性变换包含对数变换、指数变换和自定义曲线,同时,对于每一种变换画出相应的映射变换图,处理结果图以及直方图。当选择自定义曲线

34、时,渐变映射图中也会出现一条直线,这跟上面的分段线性是一样的,对于点的判断也是跟分段线性一样的,唯一的区别就在于,在自定义曲线中,选择了插值法,在原来分段线性的基础上增加了20个点,其实曲线的画法就是在直线上取很多个点然后连接起来,实际上曲线也是直线,只不过很密集,看起来是曲线而已。 3.3.2 层次曲线表示图像中各层次的输入信息和输出信息关系的曲线叫做层次曲线。其横坐标表示调节前各层次的输入灰度值,纵坐标表示调节后各层次的输出灰度值。Curve调节工具的工作原理是:通过改变曲线的形状来对某一阶调范围的灰度进行层次调节。Curve调节工具,用于调节图像层次时,一般是对各种色彩模式图像的混合通道

35、进行操作的。下面主要说明如何用Curve工具来调节图像的层次。Curve工具控制面板如上图所示。调节图像时,把光标移动到图像中想要调节的某一阶调的位置上,点击一下鼠标,在自定义曲线上即可显示这一阶调对应的位置,在此位置上把曲线上拉或下拉,改变曲线的形状,就可以让图像上对应阶调范围内的灰度值产生变化。在曲线中间还可以加上一些节点作为转折以此来控制所调节的阶调范围,而且,在除0、255的两点之外,曲线在拉动时,图像的各层次都会有一些相同趋向的变化,这样对一般原稿来说也不会产生太大的畸变。由于曲线可调节成各种形状,因此,用Curve来调节层次更为直观、更为灵活。当一些图像的亮调和暗调层次进行粗掉后,

36、可根据需要,用Curve工具对图像的各层次进行更细致的调节和控制。3.3.3 Curve调节层次举例下图以原稿为例来说明Curve工具的功能。Ø 当自定义曲线调成图(a)时,图像的颜色整体加深,由于曲线的高调部分斜率变大,所以,图像的高调层次反差增大了。同理,中间调层次的反差变平,暗调图像层次反差也变小。Ø 当自定义曲线调成图(b)时,图像的颜色整体变浅,由于曲线的高调部分的斜率降低,所以,图像的高调层次反差变小了。同理,中间调层次的反差变大了,暗调图像层次反差也变大。Ø 当自定义曲线调成图(c)的形状时,图像0128的阶调范围的颜色整体加深,而图像128255的

37、阶调范围的颜色整体变浅;由于曲线的高调部分的斜率变大了,所以,图像的高调层次反差变大了。同理,由于曲线的中间调部分的斜率变小了,所以中间调层次的反差变平。至于暗调,由于曲线的斜率增大了,故暗调图像层次反差也增大。对图像整体来说,由于密度高的地方颜色变浅,密度低的地方颜色变深,故图像的反差是降低了。Ø 当自定义曲线调成图(d)的形状时,图像0128的阶调范围的颜色整体变浅,而图像128255的阶调范围的颜色整体变深;由于曲线的高调部分的斜率变小了,所以,图像的高调层次反差降低了。同理,由于曲线的中间调部分的斜率变大了,所以,中间调层次的反差变大。至于暗调,由于曲线的斜率降低了,故暗调图

38、像层次反差也减小了。对图像整体来说,由于密度高的地方颜色加深,密度低的地方颜色变浅,故图像的反差是增大了。 (a) (b) (c) (d) 3.3.4 Curve调节工具的总结1. Curve工具是基于非线性变换算法的;2. Curve工具可以分成若干个点进行调节,曲线可以调成任意形状,因此,在控制阶调方面跟戏子一些。Curve调节后不保证明者仍明,暗者仍按,可能会阶调反转,几乎是任意变化的。 3.3.5 关于自定义曲线的相关代码解释% 初始化各全局变量值handles.points=; %存点的数组handles.pointNum=0; %点的数量currentCtrlPtNum=0; %当

39、前选中点的索引handles.flag1=0; %是否选中了点% 增加初始点handles.pointNum=2;handles.points=handles.points;0 0;handles.points=handles.points;1 1;hold on;% 取得当前的点 temp=get(handles.axes3,'CurrentPoint'); currentPt=temp(1,1:2); if (currentPt(1)>0 && currentPt(1)<1) && (currentPt(2)>0 &

40、& currentPt(2)<1) % 判断是拖动点还是增加点 pointNum=handles.pointNum; points=handles.points; if pointNum>0 index = 0; handles.flag1=0;%标志位:若鼠标点击点附近有控制点,则flag1置1 for i=1:pointNum point = points(i,:); if norm(currentPt-point)<=0.05 handles.flag1=1; %找到点 记下点索引 currentCtrlPtNum=i; end if currentPt(1)&

41、gt;point(1) index = i; end end if currentCtrlPtNum=0 %未找到 新增点 pointNum=pointNum+1; points=points(1:index,:);currentPt(1) currentPt(2);points(index+1:end,:); handles.points=points; handles.pointNum=pointNum; currentCtrlPtNum=index+1; end guidata(hObject, handles); end end % 取得当前的点 temp=get(handles.ax

42、es3,'CurrentPoint'); currentPt=temp(1,1:2); if (currentPt(1)>0 && currentPt(1)<1) && (currentPt(2)>0 && currentPt(2)<1) axes(handles.axes3); cla; axis(0 1 0 1); hold on; points= handles.points; %限制选中点在两点之间 if(currentCtrlPtNum>1) prePoint = points(curren

43、tCtrlPtNum-1,:); if currentPt(1) < prePoint(1) currentPt(1) = prePoint(1); end end if(currentCtrlPtNum<handles.pointNum) nextPoint = points(currentCtrlPtNum+1,:); if currentPt(1) > nextPoint(1) currentPt(1) = nextPoint(1); end end if(currentCtrlPtNum<1 | currentCtrlPtNum>handles.point

44、Num) return; end i=currentCtrlPtNum; points(i,:)=currentPt; handles.points=points; temp,ind=sort(points(:,1); pointsx=points(ind,1); pointsy=points(ind,2); points=pointsx,pointsy; %曲线 if flag1=2 plot(points(:,1),points(:,2),'blacko','LineWidth',1); ft=my_bezier(points); plot(ft(:,1),

45、ft(:,2),'LineWidth',1); end end guidata(hObject, handles); %取得当前的点 temp=get(handles.axes3,'CurrentPoint'); currentPt=temp(1,1:2); if (currentPt(1)>0 && currentPt(1)<1) && (currentPt(2)>0 && currentPt(2)<1) axes(handles.axes3); cla; axis(0 1 0 1); h

46、old on; points= handles.points; %限制选中点在两点之间 if(currentCtrlPtNum>1) prePoint = points(currentCtrlPtNum-1,:); if currentPt(1) < prePoint(1) currentPt(1) = prePoint(1); end end if(currentCtrlPtNum<handles.pointNum) nextPoint = points(currentCtrlPtNum+1,:); if currentPt(1) > nextPoint(1) cur

47、rentPt(1) = nextPoint(1); end end if(currentCtrlPtNum<1 | currentCtrlPtNum>handles.pointNum) return; end i=currentCtrlPtNum; points(i,:)=currentPt; handles.points=points; temp,ind=sort(points(:,1); pointsx=points(ind,1); pointsy=points(ind,2); points=pointsx,pointsy; %曲线 if flag1=2 plot(points

48、(:,1),points(:,2),'blacko','LineWidth',1); ft=my_bezier(points); plot(ft(:,1),ft(:,2),'LineWidth',1); end end guidata(hObject, handles);第4章 设计结果4.1 图像反转变换结果示意图4.2 线性变换结果示意图4.3 分段线性变换结果示意图4.4 对数变换结果示意图4.5 指数变换结果示意图4.6 自定义曲线变换结果示意图参考文献1 冈萨雷斯.数字图像处理(第二版)M.北京:电子工业出版社,2003.59-62 2

49、 利普曼,劳乔.C+ Primer(第三版)2.北京:中国电力出版社 3 郑莉,董江舟.C+语言程序设计(第四版)M.北京:清华大学出版社 3闫海霞.基于数字形态学的图像边缘检测和增强算法的研究D.吉林大学,20094杨增印,马建峰,孙聪等.一种利用手指图像测量人体心率的方法J.西安电子科技大学学报(自然科学版),2014,(5):91-97.5吴雪垠,吴瑾,张鹤等.逆滤波法在图像复原中的应用J.信息技术,2011,(10):1831856彭晓明.基于MATLAB的数字图像处理课程的教学实验设计J.高等教育研究,20097张强.精通MATLAB图像处理(第2版)M.电子工业出版社,20128卢

50、谢吉.舌图像中瘀斑瘀点检测技术研究D.哈尔滨工业大学,20089黄朝兵,杨杰.图像处理课程教学体系的探索与实践J.电气电子教学报,2012,34(2):17-19.11秦明.图像分割技术研究D.吉林大学,201012孔大力.数字图像处理技术的研究现状与发展方向J.山东水利职业学院院刊,201213陈超.MATLAB应用实例精讲图像处理与GUI设计篇M.电子工业出版社,201114张坤华,纪震.数字图像处理可视化教学体系探索J.电气电子教学学报,200715肖伟、刘忠.MATLAB程序设计与应用M.北京:清华大学出版社,200516闫海霞.基于数字形态学的图像边缘检测和增强算法的研究D.吉林大学,2009附录程序清单:1、 打开图片和灰阶化pname=''fname='8.png'photo=imread('8.png');blank=imread(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论