版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上专心-专注-专业课程设计(论文)任务书 理 学学院院信息与计算科学 专专业业 2015-1班班一、课程设计一、课程设计( (论文论文) )题目:题目: 图像融合的程序设计图像融合的程序设计 二、课程设计二、课程设计( (论文论文) )工作:工作:自 20182018 年 1 1 月 1010 日起至 20182018 年 1 1 月 1212 日止三、课程设计三、课程设计( (论文论文) ) 地点地点: : 2-201 四、课程设计四、课程设计( (论文论文) )内容要求:内容要求:1 1本课程设计的目的本课程设计的目的(1)熟悉 Delphi7 的使用,理论与实际应
2、用相结合,养成良好的程序设计技能; (2)了解并掌握图像融合的各种实现方法,具备初步的独立分析和设计能力; (3)初步掌握开发过程中的问题分析,程序设计,代码编写、测试等基本方法;(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力;(5)在实践中认识、学习计算机图形学相关知识。 2 2课程设计的任务及要求课程设计的任务及要求1 1)基本要求:)基本要求:(1)研究课程设计任务,并进行程序需求分析;(2)对程序进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;(3)实现各功能模块代码; (4)程序组装,测试、完善系统。2 2)创新要求:)创新要求: 在基本要求达到后,可进
3、行创新设计,如改进界面、增加功能或进行代码优化。精选优质文档-倾情为你奉上专心-专注-专业3 3)课程设计论文编写要求)课程设计论文编写要求(1)要按照书稿的规格打印誊写课程设计论文(2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结(3)论文装订按学校的统一要求完成4 4)参考文献:)参考文献:(1)David F.Rogers,计算机图形学的算法基础,机械工业出版社(2)Steve Cunningham,计算机图形学,机械工业出版社(3) 5 5)课程设计进度安排)课程设计进度安排内容内容 天数天数 地点地点程序总体设计 1 实验室软件设计及调试 1 实验室答辩及撰写报
4、告 1 实验室、图书馆 学生签名:学生签名: 2018 年 1 月 12 日精选优质文档-倾情为你奉上专心-专注-专业摘要摘要图像融合是图像处理中重要部分,能够协同利用同一场景的多种传感器图像信息,输出一幅更适合于人类视觉感知或计算机进一步处理与分析的融合图像。它可明显的改善单一传感器的不足,提高结果图像的清晰度及信息包含量,有利于更为准确、更为可靠、更为全面地获取目标或场景的信息。图像融合主要应用于军事国防上、遥感方面、医学图像处理、机器人、安全和监控、生物监测等领域。用于较多也较成熟的是红外和可见光的融合,在一副图像上显示多种信息,突出目标。一般情况下,图像融合由低到高分为三个层次:数据级
5、融合、特征级融合、决策级融合。数据级融合也称像素级融合,是指直接对传感器采集来得数据进行处理而获得融合图像的过程,它是高层次图像融合的基础,也是目前图像融合研究的重点之一。这种融合的优点是保持尽可能多得现场,提供其它融合层次所不能提供的细微信息。像素级融合中有空间域算法和变换域算法,空间域算法中又有多种融合规则方法,如逻辑滤波法,灰度,对比调制法等;变换域中又有金字塔分解融合法,小波变换法。其中的小波变换是当前最重要,最常用的方法。在特征级融合中,保证不同图像包含信息的特征,如对于对象热量的表征,可见光对于对象亮度的表征等等。决策级融合主要在于主观的要求,同样也有一些规则,如法,D-S 和表决
6、法等。融合算法常结合图像的平均值、熵值、平均梯度;平均梯度反映了图像中的微小细节反差与纹理变化特征,同时也反映了图像的清晰度。目前对图像融合存在两个问题:最佳小波基函数的选取和最佳小波分解层数的选取。关键字:信号级、像素级、特征级,决策级。精选优质文档-倾情为你奉上专心-专注-专业 目录目录精选优质文档-倾情为你奉上专心-专注-专业1.1.概述概述图像融合(Image Fusion)是指将多源信道所采集到的关于同一目标的图像数据经过图像处理和等,最大限度的提取各自信道中的有利信息,最后综合成高质量的图像,以提高图像信息的利用率、改善计算机解译精度和可靠性、提升原始图像的和光谱分辨率,利于监测。
7、 待融合图像已配准好且像素位宽一致。图像融合是指将多源按照一定的算法,在规定的,生成新的图像的过程。图像融合技术是指将多源信道所采集到的关于同一目标的图像经过一定的图像处理,提取各自信道的信息,最后综合成同一图像以供观察或进一步处理。将多源信道所采集到的关于同一目标的图像数据经过图像处理和计算机技术等,最大限度的提取各自信道中的有利信息,最后综合成高质量的图像,以提高图像信息的利用率、改善计算机解译精度和可靠性、提升原始图像的空间分辨率和光谱分辨率,利于监测。 待融合图像已配准好且像素位宽一致,综合和提取两个或多个多源图像信息。1.1 图像图像融合融合高效的图像融合方法可以根据需要综合处理多源
8、通道的信息,从而有效地提高了图像信息的利用率、系统对目标探测识别地可靠性及系统的自动化程度。其目的是将单一传感器的多波段信息或不同类传感器所提供的信息加以综合,消除多传感器信息之间可能存在的冗余和矛盾,以增强影像中信息透明度,改善解译的精度、可靠性以及使用率,以形成对目标的清晰、完整、准确的信息描述。这诸多方面的优点使得图像融合在医学、遥感、及军事目标识别等方面的应用潜力得到充分认识、尤其在计算机视觉方面,图像融合被认为是克服目前某些难点的技术方向;在航天、航空多种运载平台上,各种遥感器所获得的大量光谱遥感图像(其中分辨率差别、差别可能很大)的复合融合,为信息的高效提取提供了良好的处理手段,取
9、得明显效益。图像融合就是通过一种特定算法将两幅或多幅图像合成为一幅新图像。该技术有基本的体系,主要包括的内容有:图像预处理,图像融合算法,图像融合精选优质文档-倾情为你奉上专心-专注-专业评价,融合结果。图像融合系统的层次划分为:像素层融合、特征层融合、决策层融合,目前绝大多数融合算法研究都集中在这一层次上。图像预处理技术主要包括两个方面的任务:图像去噪、图像配准;图像融合算法从最初简单的融合算法(加权、最大值法)发展为复杂多分辨率的算法(金字塔、小波法等);图像融合的性能评价主要有两个大的方面:主观评价及客观评价,由于在实际中不存在理想图源,所以一般采用较易实现的评价标准,结合主观视觉给出最
10、合理的评价。1.2 图像融合发展概况图像融合发展概况.1 图像融合技术发展图像融合技术发展过程过程美国是信息融合技术研究起步比较早、发展最快的国家。图像融合技术作为信息融合的一个重要方向,最早是应用于遥感图像的分析和处理。1979 年,Daly 等人首先把雷达图像和 MSS 复合图像应用于地质分析,它的处理过程可以看做事最简单的图像融合;1981 年,laner 等人进行了 landsat-RBV 和 MSS 图像信息的融合试验。到 80 年代中后期,图像融合技术渐渐引起人们的关注,接着便有人将图像融合技术应用于遥感多普图像的分析和处理,例如 1985 年,bonn 博士将多光
11、谱遥感图像与 spot 卫星得到的高分辨率图像进行融合,90 年代以后,随着多颗遥感雷达卫星JERS-1,ERS-1 等的升空,图像融合技术便成为遥感图像处理和分析中的研究热点。目前图像融合技术显示出上升趋势,通过图像融合技术可以改善和提高图像信息的分析和提取能力,然后应用于遥感图像处理,计算机视觉,自动检测,城市规划,交通管制,机器人技术,决策支持系统,大型经济信息,医学图像处理等多个领域。可以相信,随着对多元图像融合技术研究的不断深入,图像融合技术必将得到更为广泛的应用和发展。在国外,显微融合技术上的研究已经趋于成熟和实用化,这些国外的显微融合技术在图像融合的效果和速度上都已达到了一定的水
12、准,但是他们价格极其昂贵并且技术上不对外开放。精选优质文档-倾情为你奉上专心-专注-专业.2 图像融合图像融合主要特点主要特点信号级在最低层对未经处理的传感器输出在信号域进行混合,产生一个融合后的信号。融合后的信号与源信号形式相同但品质更好,来自传感器的信号可建模为混有不同相关噪声的随机变量。此种情况下,融合可以考虑为一种估计过程,信号级图像融合在很大程度上是信号的最优集中或分布检测问题,对信号时间和空间上的配准要求最高。像素级图像融合是三个层次中最基本的融合,经过像素级图像融合以后得到的图像具有更多的细节信息,如边缘、纹理的提取,有利于图像的进一步分析、处理与理解,还能够把潜
13、在的目标暴露出来,利于判断识别潜在的目标像素点的操作,这种方法才可以尽可能多的保存源图像中的信息,使得融合后的图片不论是内容还是细节都有所增加,这个优点是独一无二的,仅存在于像素级融合中。但像素级图像融合的局限性也是不能忽视的,由于它是对像素点进行操作,所以计算机就要对大量的数据进行处理,处理时所消耗的时间会比较长,就不能够及时地将融合后图像显示出来,无法实现实时处理;另外在进行数据通信时,信息量较大,容易受到噪声的影响;还有如果没有将图片进行严格的配准就直接参加图像融合,会导致融合后的图像模糊,目标和细节不清楚、不精确.特征级图像融合是从源图像中将特征信息提取出来,这些特征信息是观察者对源图
14、像中目标或感兴趣的区域,如边缘、人物、建筑或车辆等信息,然后对这些特征信息进行分析、处理与整合从而得到融合后的图像特征。对融合后的特征进行目标识别的精确度明显的高于原始图像的精确度。特征级融合对图像信息进行了压缩,再用计算机分析与处理,所消耗的内存与时间与像素级相比都会减少,所需图像的实时性就会有所提高。特征级图像融合对图像匹配的精确度的要求没有第一层那么高,计算速度也比第一层快,可是它提取图像特征作为融合信息,所以会丢掉很多的细节性特征。决策级图像融合是以认知为基础的方法,它不仅是最高层次的图像融合方法,抽象等级也是最高的。决策级图像融合是有针对性的,根据所提问题的具体要求,将来自特征级图像
15、所得到的特征信息加以利用,然后根据一定的准则以及每个决策精选优质文档-倾情为你奉上专心-专注-专业的可信度(目标存在的概率)直接作出最优决策。三个融合层级中,决策级图像融合的计算量是最小的,可是这种方法对前一个层级有很强的依赖性,得到的图像与前两种融合方法相比不是很清晰。将决策级图像融合实现起来比较困难,但图像传输时噪声对它的影响最小。综合以上,研究和应用最多的是像数级图像融合,目前提出的绝大多数的图像融合算法均属于该层次上的融合。图像融合狭义上指的就是像数级图像融合。本文研究的也正是像素级图像融合算法。像素级融合是最低层次的融合,也是后两级的基础。它是将各原图像中对应的像素进行融合处理,保留
16、了尽可能多的图像信息, 精度比较高, 因而倍受人们的重视。1.3 图像融合技术图像融合技术原理及意义原理及意义拉普拉斯金字塔融合图像金字塔方法的原理是:将参加融合的的每幅图像分解为多尺度的金字塔图像序列,将低分辨率的图像在上层,高分辨率的图像在下层,上层图像的大小为前一层图像大小的 1/4。层数为 0,1,2N。将所有图像的金字塔在相应层上以一定的规则融合,就可得到合成金字塔,再将该合成金字塔按照金字塔生成的逆过程进行重构,得到融合金字塔。这个总的思路就是一下所有基于金字塔融合的算法过程,不同点就在于分解构造的金字塔不同,每层的融合规则不一样,重构的方法不同而已。金字塔方法最先实现了这种思想,
17、之后小波方法进一步完善和发展了这种多尺度融和的思想。2.2.软件工具软件工具DelphiDelphi7 72.1 Delphi 概述概述由 Borland 公司推出的 Delphi 是全新的可视化编程环境,为我们提供了一种方便、快捷的 Windows 应用程序开发工具。它使用了 Microsoft Windows 图形用户界面的许多先进特性和设计思想,采用了弹性可重复 。利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编译器、最为领先的数据精选优质文档-倾情为你奉上专心-专注-专业库技术。对于广大的程序开发人员来讲,使用 Delphi 开发应用
18、软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作Delphi 的每一个设计细节,都将带给您一份欣喜。Delphi 是第四代编程语言,是 RAD(Rapid Application Development,快速应用程序开发)工具的代表。从核心 上说,Delphi 是一个 Pascal 编译器。Delphi 语言的发展历 程如下:从1995 年的 Delphi 1.0 到 1998 年的 Delphi 4.0 四个版本, Borland 放弃了 OWL,取而带之的是全新的 Visual Component Library,从此开始了组件(Component)技
19、 术的时代 ,通过不断的改进和完善增加了数据库和客户端/ 服务器的功能、 Code Insight(代码内视)、Module Explore(模块导航)等许多新技术与Delphi 以前的版本 相比, Delphi 5 是 32 位的应用开发环境。它具有一系列 新特性以满足应用程序开发过程中的各种需求。如改进的 集成开发环境、强劲的工程管理功能、先进的调试技术、 扩展的语言特性以及其强大的数据库应用程序开发能力。DELPHI 拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal 和基于部件的开发结构框架。Delphi 它提供了 500 多个可供使用的构件,利用这
20、些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用 Delphi 本身编写自己的部件。主要特点如下: (1)直接编译生成可执行代码,编译速度快。由于 Delphi 编译器采用了条件编译和选择链接技术,使用它生成的执行文件更加精炼,运行速度更快。在处理速度和存取服务器方面,Delphi 的性能远远高于其他同类产品。 (2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。这样,大大减少了对服务器的请求和网络上的数据传输量,提高了应用处理的速度
21、。 (3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。利用项目模板和专家生成器可以很快建立项目的构架,然后根据用户的实际需要逐步完善。 (4)具有可重用性和可扩展性。开发人员不必再对诸如标签、按钮及对话框等Windows 的常见部件进行编程。Delphi 包含许多可以重复使用的部件,允许用户控精选优质文档-倾情为你奉上专心-专注-专业制 Windows 的开发效果。 (5)具有强大的数据存取功能。它的数据处理工具BDE(BorlandDatabaseEngine)是一个标准的中介软件层,可以用来处理当前流行的数据格式,如 xBase、Paradox 等,
22、也可以通过 BDE 的 SQLLink 直接与Sybase、SQLServer、Informix、Oracle 等大型数据库连接。 Delphi 既可用于开发系统软件,也适合于应用软件的开发。(6)拥有强大的网络开发能力,能够快速的开发 B/S 应用,它内置的 IntraWeb和 ExpressWeb 使得对于网络的开发效率超过了其他任何的开发工具。(7)Delphi 使用独特的 VCL 类库,使得编写出的程序显得条理清晰,VCL 是现在最优秀的类库,它使得 Delphi 在软件开发行业处于一个绝对领先的地位。用户可以按自己的需要,任意的构建、扩充、甚至是删减 VCL,以满足不同的需要。 (8
23、)从 Delphi8 开始 Delphi 也支持.Net 框架下程序开发。当前 DELPHI 已经成为一个品牌,而不仅仅是一个开发平台或开发语言的名称。 当前 DELPHI 产品已经由 CodeGear 公司继续发展,该公司是 BORLAND 公司的全资子公司。当前,CodeGear 为广大开发者提供了 DELPHI FOR PHP,以高度可视化的方式全面支持面向对象的 PHP 网站开发,大大提高了 PHP 开发网站的代码复用程度,成为 WEB 应用开发的新利器。精选优质文档-倾情为你奉上专心-专注-专业2.2 主界面为:主界面为:3.3.图像融合方法图像融合方法高斯金字塔是最基本的图像塔。首
24、先将原图像作为最底层图像 G0(高斯金字塔的第 0 层),利用高斯核(5*5)对其进行卷积,然后对卷积后的图像进行下采样(去除偶数行和列)得到上一层图像 G1,将此图像作为输入,重复卷积和下采样操作得到更上一层图像,反复迭代多次,形成一个金字塔形的图像数据结构,即高斯金字塔。在高斯金字塔的运算过程中,图像经过卷积和下采样操作会丢失部分高频细节信息。为描述这些高频信息,人们定义了拉普拉斯金字塔(Laplacian Pyramid, LP)。用高斯金字塔的每一层图像减去其上一层图像上采样并高斯卷积之后的预测图像,得到一系列的差值图像即为 LP 分解图像。N 为拉普拉斯金字塔顶层的层号 LPl 是拉
25、普拉斯金字塔分解的第 L 层图像。由 LP0,LP1、LP2LPN 构成的金字塔即为拉普拉斯金字塔。它的每一层 L0 图像是高斯金字塔本层 G0 图像与其高一层图像 G1 经内插放大后图像*G1 的差,此过程相当于带通滤波,因此拉普拉斯金字塔又称为带通金字塔分解。内插方法:opencv 中有实现的函数 pyrup。可以得到*G1。然后在两个函数作差,相减就可以得到拉普拉斯金字塔。求得每个图精选优质文档-倾情为你奉上专心-专注-专业像的拉普拉斯金字塔后需要对相应层次的图像进行融合,具体的融合规则有,取大、取小,等等。对融合后的拉普拉斯金字塔,从其顶层开始逐层从上至下按下式进行递推,可以恢复其对应
26、的高斯金字塔,并最终可得到原图像 G0。就是从最高层开始使用内插的方法。图像拉普拉斯金字塔分解的目的是将源图像分别分解到不同的空间频带上,融合过程是在各空间频率层上分别进行的,这样就可以针对不同分解层的不同频带上的特征与细节,采用不同的融合算子以达到突出特定频带上特征与细节的目的。即有可能将来自不同图像的特征与细节融合在一起。采用最高层系数取平均,其余各层系数绝对值取大的融合策略进行融合。融合后图像的系数(灰度值)越接近较清晰图像的灰度值就说明融合效果好。4.4.成果展示成果展示首页:打开图像:精选优质文档-倾情为你奉上专心-专注-专业图像融合:清除图像:精选优质文档-倾情为你奉上专心-专注-
27、专业图像平移:精选优质文档-倾情为你奉上专心-专注-专业帮助页面:5.5.总结总结通过此次课程设计,使我更加扎实的掌握了有关方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践
28、过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给精选优质文档-倾情为你奉上专心-专注-专业了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。通过这次课程设计,我熟悉了图像融合过程;了解了图像融合的方法;以及如何提高图像融合的性能等等,掌握了图像融合的方
29、法和技术,通过查询资料,也了解了图像融合原理。我认为,在这学期的实验中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以
30、巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。实验过程中,也对团队精神的进行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。此次设计也让我明白了思路即出路,有什么不懂不明白的地方要及时请教或上网查询,只要认真钻研,动脑思考,
31、动手实践,就没有弄不懂的知识,收获颇丰。课程设计即将完成,本次课程设计我最想感谢,最应该感谢的是蒋先刚老师,如果不是蒋老师指导,我想我可能不能这么顺利完成。经过大三下这一个学期学习蒋老师的课程,令我受益匪浅!6.6.参考文献参考文献1 A Hashizume, P S Yeh, A Rosenfeld. A Method of Detecting the Orientation of Aligned ComponentsJ. Pattern Recognition Letters, 精选优质文档-倾情为你奉上专心-专注-专业1986,4:125132.2 L.OGorman. The Docu
32、ment Spectrum for Page Layout Analysis. IEEE Transactions. PAMI, Vol.15,No.11, 1993:pp.11621173.3 Procedural Elements for Computer Graphics, Second Edition (美)(Rogers,D.F) 北京:机械工业出版社,2002.24 A Piva, M Barni,F Bartolini, V Cappellini. DCT-based watermark recovering without resorting to the uncorrupte
33、d original imageA.Proceedings of 4th IEEE International Conference on Image Processing ICIP97C.Santa Barbara,CA,USA:ICIP,1997.5 Zhong wei.Image watermarking using Legendre arrayJ.Journal of china institute of communications,2001,22(1):16.6 潘梅森,荣秋生.SOFM 神经网络的图像融合的二值化方法J.光学精密工程,2007,15(3):99104.7 潘梅森,
34、易明.一种基于人类视觉的自适应均值滤波算法J.计算机工程与应用,2006,42(10):6264.8 王建卫.彩色图像的中值滤波算法的改进与应用J.哈尔滨商业大学大学报:自然科学版.2006,22(4):6769. 7.7.附录附录unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm2 = class(TForm) BitBtn1: TBitBtn; L
35、abel1: TLabel; Image1: TImage;精选优质文档-倾情为你奉上专心-专注-专业 Timer1: TTimer; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure FormCreate(Sender: TObject); procedure FormPaint(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private Private declaratio
36、ns public Public declarations end;var Form2: TForm2; step:integer;implementation$R *.dfm uses chapter3;procedure TForm2.FormCreate(Sender: TObject);begin/MediaPlayer1.FileName:=lz.mp3;/MediaPlayer1.open;/MediaPlayer1.Play;step:=0;image1.Canvas.FillRect(rect(0,0,image1.width,image1.height);image1.Can
37、vas.Brush.Style:=bsclear;image1.Canvas.Font.Size:=28;image1.Canvas.Font.Color:=clskyblue;image1.Canvas.TextOut(17,16, );image1.Canvas.Font.Color:=clblack;image1.Canvas.TextOut(17,16, );end; procedure N19Click(Sender: TObject); procedure N20Click(Sender: TObject); procedure method1Click(Sender: TObje
38、ct); procedure FormCreate(Sender: TObject); procedure method2Click(Sender: TObject); procedure ZoomInClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure ZoomOutClick(Sender: TObject);精选优质文档-倾情为你奉上专心-专注-专业 procedure TiltClick(Sender: TObject); procedure method3Click(Sender: TObj
39、ect); procedure N8Click(Sender: TObject); procedure N9Click(Sender: TObject); procedure WrapClick(Sender: TObject); procedure twistClick(Sender: TObject); procedure RotateangleClick(Sender: TObject); procedure N3Click(Sender: TObject); procedure cutClick(Sender: TObject); procedure ToolButton1Click(
40、Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure N14Click(Sender: TObject); procedure N10Click(Sender: TObject); procedure N12Click(Sender: TObject); procedure N15Click(Sender: TObject); procedure N13Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure N18Cl
41、ick(Sender: TObject); procedure N17Click(Sender: TObject); procedure FormPaint(Sender: TObject); procedure N21Click(Sender: TObject); procedure change(sender:Tobject); procedure TrackBar1Change(Sender: TObject); procedure N23Click(Sender: TObject); procedure Image1Click(Sender: TObject); private pro
42、cedure RotateMethod2(aBitmap: TBitmap); procedure TiltBitmap(const InBitmap, OutBitmap: TBitmap; const WidthTop, WidthBottom: integer); procedure RotateMethod3(Bitmap: TBitmap); procedure bmp_rotate(Srcbmp, DestBmp: Tbitmap; angle: extended); procedure TwistPicture(var Bmp, Dst: TBitmap; Amount: int
43、eger); procedure WaveWrap(XDIV, YDIV, RatioVal: Integer); procedure LeftRightMirror(bitmap: TBitmap); procedure ZoomInOut(bitmap: TBitmap; m, n: extended); Private declarations public Public declarations end;var Form1: TForm1; starttime, endtime: longint; OriginalBmp: TBitmap;精选优质文档-倾情为你奉上专心-专注-专业im
44、plementationuses Unit3;$R *.dfmprocedure TForm1.N19Click(Sender: TObject);begin if OpenPictureDialog1.Execute then image1.Picture.Bitmap.LoadFromFile(OpenPictureDialog1.FileName); OriginalBmp.Assign(image1.Picture.Bitmap); Image1.Top := self.Height div 2 - Image1.Picture.Bitmap.Height div 2; Image1.
45、Left := self.Width div 2 - Image1.Picture.Bitmap.Width div 2;end;procedure TForm1.RotateMethod2(aBitmap: TBitmap);var nIdx, nOfs, x, y, i, nMultiplier: integer; nMemWidth, nMemHeight, nMemSize, nScanLineSize: LongInt; aScnLnBuffer: PChar; aScanLine: PByteArray;begin /消耗时间 nMultiplier := 3; nMemWidth
46、 := aBitmap.Height; nMemHeight := aBitmap.Width; /实际需要内存大小 nMemSize := nMemWidth * nMemHeight * nMultiplier; /开辟内存 GetMem(aScnLnBuffer, nMemSize); try /Scanline 的长度 nScanLineSize := aBitmap.Width * nMultiplier; /为 ScanLine 分配内存 GetMem(aScanLine, nScanLineSize); try for y := 0 to aBitmap.Height - 1 d
47、o begin /进行数据块的移动 Move(aBitmap.ScanLiney, aScanLine, nScanLineSize); for x := 0 to aBitmap.Width - 1 do begin精选优质文档-倾情为你奉上专心-专注-专业 nIdx := (aBitmap.Width - 1) - x) * nMultiplier; nOfs := (x * nMemWidth * nMultiplier) + (y * nMultiplier); for i := 0 to nMultiplier - 1 do Byte(aScnLnBuffernOfs + i) :=
48、 aScanLinenIdx + i; end; end; /宽和高交换开始,逆时针旋转 aBitmap.Height := nMemHeight; aBitmap.Width := nMemWidth; for y := 0 to nMemHeight - 1 do begin /数据移动 nOfs := y * nMemWidth * nMultiplier; Move(aScnLnBuffernOfs), aBitmap.ScanLiney, nMemWidth * nMultiplier); end; finally /释放内存 aScanLine FreeMem(aScanLine,
49、 nScanLineSize); end; finally /释放内存 aScnLnBuffer FreeMem(aScnLnBuffer, nMemSize); end;end;procedure TForm1.N20Click(Sender: TObject);begin SavePictureDialog1.Filter := *.bmp|*.bmp; if Self.SavePictureDialog1.Execute then begin Image1.Picture.Bitmap.SaveToFile(SavePictureDialog1.FileName + .bmp); end
50、;end;procedure TForm1.method1Click(Sender: TObject);var i, J: Integer; BmpS, BmpD: TBitmap;begin /创建 Tbitmap 对象 BmpS 和 BmpD BmpS := TBitmap.Create; BmpD := TBitmap.Create; BmpS.Assign(Image1.Picture.Graphic); BmpD.Height := Image1.Picture.Width;精选优质文档-倾情为你奉上专心-专注-专业 BmpD.Width := Image1.Picture.Heig
51、ht; BmpS.PixelFormat := pf24bit; BmpD.PixelFormat := pf24bit; /开始计时 starttime := GetTickcount; for i := 0 to Image1.Height do begin for J := 0 to Image1.Width do begin /象素点颜色赋值 BmpD.Canvas.Pixels(-i + Image1.Height), J := BmpS.Canvas.PixelsJ, I; end; end; /结束时刻 endtime := GetTickcount; /消耗时间 Self.Ca
52、ption := 执行时间为: + inttostr(endtime - starttime) + 毫秒; Image1.Picture.Bitmap.Assign(BmpD); bmps.Free; bmpd.Free;end;procedure TForm1.FormCreate(Sender: TObject);begin self.Image1.AutoSize := True; self.Image1.Stretch := True; OriginalBmp := TBitmap.Create; self.OpenPictureDialog1.Filter := *.bmp|*.bm
53、p;end;procedure TForm1.method3Click(Sender: TObject);begin image1.Picture.Bitmap.PixelFormat := pf24bit; RotateMethod3(image1.Picture.Bitmap);end;procedure TForm1.RotateMethod3(Bitmap: TBitmap);var aStream: TMemorystream; /内存流 header: TBITMAPINFO; dc: hDC; P: THelpRGB; x, y, b, h: Integer;精选优质文档-倾情为
54、你奉上专心-专注-专业 RowOut: pRGBArray;begin /创建内存流 aStream := TMemoryStream.Create; /设置大小,必须是 4 的倍数 aStream.SetSize(Bitmap.Height * Bitmap.Width * 4); with header.bmiHeader do /操作位图文件 begin biSize := SizeOf(TBITMAPINFOHEADER); /大小 biWidth := Bitmap.Width; /位图宽 biHeight := Bitmap.Height; /位图高 biPlanes := 1;
55、biBitCount := 32; /无压缩 biCompression := 0; biSizeimage := aStream.Size; biXPelsPerMeter := 1; /水平分辨率 biYPelsPerMeter := 1; /竖直分辨率 biClrUsed := 0; biClrImportant := 0; end; dc := GetDC(0); P := aStream.Memory; GetDIBits(dc, Bitmap.Handle, 0, Bitmap.Height, P, header, dib_RGB_Colors); ReleaseDC(0, dc)
56、; b := bitmap.Height; /源图高 h := bitmap.Width; /源图宽 /指定要创建的位图的大小尺寸 bitmap.Width := b; bitmap.height := h; for y := 0 to (h - 1) do begin rowOut := Bitmap.ScanLiney; /获取新的位图信息 P := aStream.Memory; /设置文件指针 inc(p, y); /指针移位 for x := 0 to (b - 1) do begin rowoutx := p.rgb; /进行数据转移 inc(p, h); end; end; aS
57、tream.Free; /释放资源end;procedure TForm1.N8Click(Sender: TObject);精选优质文档-倾情为你奉上专心-专注-专业begin LeftRightMirror(self.Image1.Picture.Bitmap);end;procedure TForm1.LeftRightMirror(bitmap: TBitmap);var bmp1, bmp2, bmp3: TBitmap; T, P: pByteArray; X, Y: integer;begin bmp1 := TBitmap.Create; bmp2 := TBitmap.Cre
58、ate; bmp3 := TBitmap.Create; bmp2.Assign(bitmap); bmp1.Assign(bitmap); bmp3.Width := 2 * bmp1.Width; bmp3.Height := bitmap.Height; for Y := 0 to bmp2.Height - 1 do begin T := bmp2.ScanLineY; P := bmp1.ScanLineY; for X := 0 to bmp2.Width - 1 do begin P3 * X + 2 := T3 * (bmp2.Width - 1 - X) + 2; P3 *
59、X + 1 := T3 * (bmp2.Width - 1 - X) + 1; P3 * X := T3 * (bmp2.Width - 1 - X); end; end; bmp3.Canvas.Draw(0, 0, bmp2); bmp3.Canvas.Draw(bmp2.Width, 0, bmp1); bitmap.Assign(bmp3); bmp1.Free; bmp2.Free; bmp3.Free;end;procedure TForm1.N9Click(Sender: TObject);var bmp1, bmp2, bmp3: Tbitmap; i, j: integer; p, p1: pbyteArray;begin bmp1 := Tbitmap.Create; bmp2 := Tbitmap.Create; bmp3 := Tbitmap.Create;精选优质文档-倾情为你奉上专心-专注-专业 bmp1.Assign(Self.Image1.Picture.Bitmap); bmp2.Assign(Self.image1.Picture.Bitmap); bmp3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗器械 合作协议
- 观光旅游情侣船合作协议
- 2025年四川雅安市栈道商务信息咨询有限责任公司招聘笔试参考题库附带答案详解
- 2025年甘肃天祝县农业产业扶贫开发有限责任公司招聘笔试参考题库附带答案详解
- 2025版新能源车辆运输及售后服务合同3篇
- 2025年度店面出租合同风险评估与预防措施2篇
- 2025年度个人债权担保合同参考文本4篇
- 2025年度个人沿街店房租赁合同(含租赁期限调整与续约流程)3篇
- 2025版建筑水电安装工程补充协议书3篇
- 2025年度住宅小区公共区域装修改造合同
- 2024年决战行测5000题言语理解与表达(培优b卷)
- 四年级数学上册人教版24秋《小学学霸单元期末标准卷》考前专项冲刺训练
- 中国游戏发展史课件
- (完整版)减数分裂课件
- 银行办公大楼物业服务投标方案投标文件(技术方案)
- 第01讲 直线的方程(九大题型)(练习)
- 《基础会计》教学课件-整套教程电子讲义
- 微粒贷逾期还款协议书范本
- 人教版七年级上册数学全册课时练习带答案
- NBT 47013.4-2015 承压设备无损检测 第4部分:磁粉检测
- 2024年上海市中考数学真题试卷及答案解析
评论
0/150
提交评论