




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 PAGE44 / NUMPAGES50 基于VC+的图像特效显示研究 XXX专业名称:电子信息科学与技术指导教师:XXX讲师摘要图像的特效显示在计算机技术领域应用广泛,Windows的屏幕保护程序就采用了各种各样的图像特效显示,使人感到耳目一新。本论文阐述了基于VC+设计图像特效显示的基本原理和方法,研究了现有的扫描特效显示、栅条特效显示、马赛克特效显示,并分析了这些显示的相关算法,通过研究创新设计出两个特效显示渐变百叶窗特效和泡泡腐蚀特效,介绍了这两个特效显示的算法实现与软件界面的设计实现过程。界面是基于MicrosoftVisualC+6.0MFC多文档编程的图像处理界面,实现.bmp格
2、式图像的浏览与编辑,导入和导出,图像特效显示,边缘检测,旋转和翻转图片,图片增强优化,以与打印输出图片。是一款功能较简洁的数字图像管理界面,实现对.bmp格式图像的操作。该界面包含两部分:启动界面和主界面。BMP文件是Windows操作系统所推荐和支持的图像文件格式,是一种将存或显示器的图像数据不经过压缩而直接按位存盘的文件格式,一般来说BMP文件分成4个部分:位图头文件,位图信息头,颜色表,位图数据.同时BMP文件文件可以分为DIB格式和DDB格式,其中DIB格式是与设备无关的BMP文件,通用性很强.Windows支持一些重要的DIB访问函数,但都没有封装到MFC中,这里我们封装了一个DIB
3、类,其包含DIB文图处理所需要的基本成员变量和成员函数,进而以该类为基类派生其他类,实现程序的维护和移植,从而利用面向对象的方式实现图像的可视化编程。 关键词:特效显示;扫描;栅条;马赛克;VC+;数字图像处理 Abstract Special effects show for images is applied in the field of computer technology widely. The Windows screen savers use a variety of image special effects which feel refresh. This paper de
4、scribes the basic principles and methods of image special effects show based on VC+. The algorithm of the effect shows including scanning special effect show, bar special effect show and mosaic special effect show are studied. This paper also designes two special effectsGradually changing blinds and
5、 corroding bubble. The implementation of the display algorithm and software interface designment are realized in this paper.ThedigitalimageprocessinginterfaceisbasedonMicrosoftVisualC+6.0MFCmulti-documentimageprocessingprogramminginterface,toachieve.Bmpformatforimagebrowsingandediting,importandexpor
6、t,imageeffectsshowedthatedgedetection,rotateandflipimages,picturesenhancetheoptimization,aswellasprintoutputpicture.Isafunctionofthedigitalimagethanthesimplemanagementinterface,toachieve.Bmpformatimagesoftheoperation.Theinterfacecontainstwoparts:interfaceandthemaininterfacetostart.BMPfileisaWindowso
7、peratingsystemandsupporttherecommendedimagefileformat,isamemoryordisplaythecompressedimagedataisnotdirectlybasedondigitalarchivingoffileformats,BMPfilesaregenerallydividedintofourparts:thefirstbitmapdocuments,BITMAPINFOHEADER,colortable,thebitmapdata.Atthesametime,BMPfileformatsandcanbedividedintoDI
8、BformatDDB,DIBformatwhichhasnothingtodowiththeequipmentoftheBMPfiles,astrongGM.WindowsinsupportoftheDIBtovisitanumberofimportantfunction,butarenotpackagedintheMFC,wherewehaveapackagetypeDIB,theDIBincludesVenturaneededtodealwithmembersofthebasicvariablesandmemberfunctions,andsuchabaseclassforothertyp
9、esofderivatives,therealizationoftheproceduremaintenanceandtransplantation,andthustheuseofobject-orientedwayofprogrammingthevisualimage.Key words: Special effects show,scanning, bar; mosaic,VC + +目 录TOC o 1-3 h u HYPERLINK l _Toc29103 摘 要 PAGEREF _Toc29103 I HYPERLINK l _Toc8166 Abstract PAGEREF _Toc
10、8166 II HYPERLINK l _Toc31692 目 录 PAGEREF _Toc31692 III HYPERLINK l _Toc29034 1 数字图像发展概述 PAGEREF _Toc29034 1 HYPERLINK l _Toc32206 1.1 数字图像引言 PAGEREF _Toc32206 1 HYPERLINK l _Toc13655 1.2 数字图像简史 PAGEREF _Toc13655 2 HYPERLINK l _Toc19277 1.3 数字图像现状 PAGEREF _Toc19277 3 HYPERLINK l _Toc7080 1.4 数字图像未来方
11、向 PAGEREF _Toc7080 3 HYPERLINK l _Toc23571 2 基于VC+图像显示的理论基础 PAGEREF _Toc23571 5 HYPERLINK l _Toc3535 2.1 Microsoft Visual C+编程概述 PAGEREF _Toc3535 5 HYPERLINK l _Toc18767 2.1.1 Windows程序特点 PAGEREF _Toc18767 5 HYPERLINK l _Toc26533 2.1.2 C+语言 PAGEREF _Toc26533 6 HYPERLINK l _Toc4437 2.1.3 Microsoft Vi
12、sual C+ 6.0环境 PAGEREF _Toc4437 6 HYPERLINK l _Toc24729 2.1.4 MFC简介 PAGEREF _Toc24729 7 HYPERLINK l _Toc16001 2.1.5 图形设备接口、GDI对象 PAGEREF _Toc16001 7 HYPERLINK l _Toc28576 2.2 OpenCV的简介 PAGEREF _Toc28576 8 HYPERLINK l _Toc12780 2.2.1 OpenCV概述 PAGEREF _Toc12780 8 HYPERLINK l _Toc1917 2.2.2OpenCV的特点 PAG
13、EREF _Toc1917 9 HYPERLINK l _Toc6424 3 常见的图像特效显示 PAGEREF _Toc6424 10 HYPERLINK l _Toc13903 3.1显示特效方法理论概述 PAGEREF _Toc13903 10 HYPERLINK l _Toc3524 3.1.1特效显示基础 PAGEREF _Toc3524 10 HYPERLINK l _Toc19081 3.1.2显示特效过程 PAGEREF _Toc19081 10 HYPERLINK l _Toc6525 3.1.3显示特效类 PAGEREF _Toc6525 11 HYPERLINK l _T
14、oc28870 3.2 栅条显示 PAGEREF _Toc28870 12 HYPERLINK l _Toc25264 3.2.1栅条显示特效的特效预览 PAGEREF _Toc25264 12 HYPERLINK l _Toc6418 3.2.2 基本原理和实现方法 PAGEREF _Toc6418 12 HYPERLINK l _Toc14146 3.3 马赛克显示特效 PAGEREF _Toc14146 14 HYPERLINK l _Toc10139 3.3.1马赛克显示特效的特效预览 PAGEREF _Toc10139 14 HYPERLINK l _Toc2304 3.3.2基本原
15、理和实现方法 PAGEREF _Toc2304 15 HYPERLINK l _Toc21493 3.3.3编程实现 PAGEREF _Toc21493 16 HYPERLINK l _Toc21083 3.4移动显示特效 PAGEREF _Toc21083 18 HYPERLINK l _Toc29512 3.4.1 移动显示特效显示预览 PAGEREF _Toc29512 18 HYPERLINK l _Toc20053 3.4.2基本原理和实现方法向右移动 PAGEREF _Toc20053 18 HYPERLINK l _Toc3362 3.4.3 编程实现 PAGEREF _Toc3
16、362 20 HYPERLINK l _Toc1163 3.5百叶窗显示特效 PAGEREF _Toc1163 21 HYPERLINK l _Toc22480 3.5.1 基本原理和实现方法 PAGEREF _Toc22480 21 HYPERLINK l _Toc29364 3.5.2 基本原理和实现方法 PAGEREF _Toc29364 22 HYPERLINK l _Toc24668 3.5.3 编程实现 PAGEREF _Toc24668 23 HYPERLINK l _Toc10012 3.6 对于常见特效显示算法的改进 PAGEREF _Toc10012 25 HYPERLIN
17、K l _Toc934 4 设计一个图像浏览工具GraphShower PAGEREF _Toc934 26 HYPERLINK l _Toc31706 4.1 两个特效显示与其算法 PAGEREF _Toc31706 26 HYPERLINK l _Toc18746 4.1.1 渐变百叶窗显示 PAGEREF _Toc18746 26 HYPERLINK l _Toc24787 4.1.2 泡泡腐蚀显示 PAGEREF _Toc24787 30 HYPERLINK l _Toc30154 4.2 VC+程序界面设计 PAGEREF _Toc30154 35 HYPERLINK l _Toc2
18、1199 4.2.1 CDC类的派生类设计 PAGEREF _Toc21199 35 HYPERLINK l _Toc6770 4.2.2 CDialog类的派生类的成员函数设计 PAGEREF _Toc6770 36 HYPERLINK l _Toc20515 4.2.3 基本窗口设计 PAGEREF _Toc20515 37 HYPERLINK l _Toc20277 4.3 测试分析与总结 PAGEREF _Toc20277 38 HYPERLINK l _Toc24510 结 语 PAGEREF _Toc24510 40 HYPERLINK l _Toc31318 致 PAGEREF
19、_Toc31318 42 HYPERLINK l _Toc9633 参考文献 PAGEREF _Toc9633 431 数字图像发展概述1.1 数字图像引言数字图像处理就是用计算机对图像进行分析和处理,它是一门跨学科的技术。视觉是人类从大自然中获取信息的最主要的手段,而图像正是人类获取视觉信息的主要途径,图像处理,就是对图像信息进行加工以满足人的视觉心理或应用需求的行为。随着电子技术和计算机技术的不断提高和普与,图像处理学逐渐进入到数字图像处理阶段,计算机的运算速度大大提高,这大大促进数字图像处理技术的发展,数字图像处理也称之为计算机图像处理。目前数字图像处理的应用越来越广泛,已经渗透到工业、
20、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用,其中最典型的应用是在通信工每个图像的像素通常对应于二维空间中一个特定的位置,并且有一个或者多个与那个点相关的采样值组成数值。根据这些采样数目与特性的不同数字图像可以划分为:HYPERLINK :/baike.baidu /view/285059.htm t _blank 二值图像(Binary Image): 图像中每个像素的亮度值(Intensity)仅可以取自0到1的图像。 灰度图像 (Gray Scale Image),也称为HYPERLINK :/baike.baidu /view/92687.htm t _blank
21、 灰阶图像: 图像中每个像素可以由0(黑)到255(白)的亮度值表示。0-255之间表示不同的灰度级。 彩色图像 (Color Image):每幅彩色图像是由三幅不同颜色的灰度图像组合而成,一个为红色,一个为绿色,另一个为蓝色。 伪彩色图像(false-color) multi-spectral thematicHYPERLINK :/baike.baidu /view/1082043.htm t _blank 立体图像(Stereo Image):立体图像是一物体由不同角度拍摄的一对图像,通常情况下我们可以用立体像计算出图像的深度信息。 三维图像 (3D Image):三维图像是由一组堆栈的
22、二位图像组成。每一幅HYPERLINK :/baike.baidu /view/4301255.htm t _blank 图像表示该物体的一个横截面。数字图像也用于表示在一个HYPERLINK :/baike.baidu /view/530652.htm t _blank 三维空间分布点的数据,例如计算机断层扫描(:en:tomographic,CT)设备生成的图像,在这种情况下,每个数据都称作一个HYPERLINK :/baike.baidu /view/1237346.htm t _blank 体素。1.2 数字图像简史数字图像处理始于20世纪50年代,之后便迅速发展,尤其是在1964年,
23、美国喷射推进实验室(NASA JPL)使对“徘徊者7号”探测器发来的几千月球照片进行几何校正、灰度变换、去除噪声等处理,得到了清晰逼真的图像,使这门技术受到了广泛的关注,它成为这门技术发展的重要里程碑,此后数字图像处理技术在空间研究方面得到了广泛的应用。1972年HYPERLINK :/baike.baidu /view/3565.htm t _blank 英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(Computer Tomograph)。CT的基该方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。目前,数
24、字图像处理在生物医学、通信、流通领域,产业界、文件处理领域,军事、遥感,宇宙探险与日常生活中被广泛应用,已经成为当代不可缺少的一门技术。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就,属于这些领域的有航空航天、HYPERLINK :/baike.baidu /view/35644.htm t _blank 生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等,使图像处理成为一门引人注目、前景
25、远大的新型学科。随着图像处理技术的深入发展,从70年代中期开始,随着计算机技术和HYPERLINK :/baike.baidu /view/2949.htm t _blank 人工智能、思维科学研究的迅速发展,数字图像处理向更高、更深层次发展。人们已开始研究如何用HYPERLINK :/baike.baidu /view/1130583.htm t _blank 计算机系统解释图像,实现类似HYPERLINK :/baike.baidu /view/1027876.htm t _blank 人类视觉系统理解外部世界,这被称为图像理解或HYPERLINK :/baike.baidu /view/
26、155265.htm t _blank 计算机视觉。很多国家,特别是发达国家投入更多的人力、物力到这项研究,取得了不少重要的研究成果。其中代表性的成果是70年代末MIT的Marr提出的视觉计算理论,这个理论成为计算机视觉领域其后十多年的主导思想。图像理解虽然在理论方法研究上已取得不小的进展,但它本身是一个比较难的研究领域,存在不少困难,因人类本身对自己的视觉过程还了解甚少,因此计算机视觉是一个有待人们进一步探索的新领域。1.3 数字图像现状Mallat在1988年有效地将小波分析应用于图像分解和重构小波分析被认为是信号与图像分析在数学方法上的重大突破。随后数字图像处理技术迅猛发展,到目前为止,
27、图像处理在图像通讯、办公自动化系统、地理信息系统、医疗设备、卫星照片传输与分析和工业自动化领域的应用越来越多。当今社会数字图像应用相当广泛,包括应用于生物医学、通信、流通领域、军事和公安、遥感等方面,并且有着不可替代的作用!进入21世纪,随着计算机技术的迅猛发展和相关理论的不断完善,数字图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成就。属于这些领域的有航空航天、生物医学工程、工业检测、机器人视觉、公安司法、军事制导、文化艺术等。该技术成为一门引人注目、前景远大的新型学科。1.4 数字图像未来方向图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉与到人类生活和工作的
28、方面。MFC,微软基础类(MicrosoftFoundationClasses),同VCL类似,是一种ApplicationFramework,随微软VisualC+开发工具发布。该类库提供一组通用的可重用的类库供开发人员使用。大部分类均从CObject直接或间接派生,只有少部分类例外。数字图像的优点体现在:再现性好:数字图像处理与模拟图像处理的根本不同在于,它不会因图像的存储、传输或复制等一系列变换操作而导致图像质量的退化。只要图像在数字化时准确地表现了原稿,则数字图像处理过程始终能保持图像的真实再现。处理精度高:按目前的技术,几乎可将一幅模拟图像数字化为任意大小的二维数组,这主要取决于图像
29、数字化设备的能力。现代扫描仪可以把每个像素的灰度等级量化为位甚至更高,这意味着图像的数字化精度可以满足任一应用需求。从原理上讲不论图像的精度有多高,处理总是能实现的,只要在处理时改变程序中的数组参数就可以了。适用面宽:图像可以来自多种信息源。从图像反映的客观实体尺度看,可以小到电子显微镜图像,大到航空照片、遥感图像甚至天文望远镜图像。这些来自不同信息源的图像只要被变换为数字编码形式后,均是用二维数组表示的灰度图像组合而成,因而均可用计算机来处理。灵活性高:由于图像的光学处理从原理上讲只能进行线性运算,极限制了光学图像处理能实现的目标;而数字图像处理不仅能完成线性运算,且能实现非线性处理,即凡是
30、可以用数学公式或逻辑关系来表达的一切运算均可用数字图像处理实现。信息压缩的潜力大:数字图像中各个像素是不独立的,其相关性大。在图像画面上,经常有很多像素有一样或接近的灰度。就电视画面而言,同一行中相邻两个像素或相邻两行间的像素,其相关系数可达以上,而相邻两帧之间的相关性比帧相关性一般说还要大些。因此,图像处理息压缩的潜力很大。随着科学技术的发展,数字图像处理技术的应用领域也将随之不断扩大。数字图像处理技术未来应用领域主要有航天航空技术方面、生物医学工程方面、通信工程方面、工业工程方面、军事公安方面、文化艺术方面的应用、其它方面的应用。2 基于VC+图像显示的理论基础2.1 Microsoft
31、Visual C+编程概述Microsoft VisualHYPERLINK :/baike.baidu /view/824.htm t _blank C+是Microsoft公司推出的开发Win32环境程序,HYPERLINK :/baike.baidu /view/125370.htm t _blank 面向对象的可视化集成编程系统。它不但具有程序HYPERLINK :/baike.baidu /view/66971.htm t _blank 框架自动生成、灵活方便的类管理、代码编写和HYPERLINK :/baike.baidu /view/119481.htm t _blank 界面设
32、计集成交互操作、可开发多种程序等优点,而且通过简单的设置就可使其生成的程序框架支持HYPERLINK :/baike.baidu /view/4556838.htm t _blank 数据库接口、OLE2,HYPERLINK :/baike.baidu /view/339343.htm t _blank WinSock网络、3D控制界面。它以拥有“语法高亮”,HYPERLINK :/baike.baidu /view/4853354.htm t _blank IntelliSense(自动完成功能)以与高级除错功能而著称。HYPERLINK :/baike.baidu /view/681412
33、0.htm t _blank 比如,它允许用户进行远程调试,单步执行等。还有允许用户在调试期间重新编译被修改的代码,而不必重新启动正在调试的程序。其编译与建置系统以预编译头文件、最小重建功能与累加连结著称。这些特征明显缩短程式编辑、编译与连结花费的时间,在大型软件计划上尤其显著。2.1.1 Windows程序特点Windows下的应用程序使用图形设备接口(GDI)来进行图形输出。GDI屏蔽了不同设备的差异,提供了设备无关的图形输出能力,Windows应用程序只要发出设备无关的GDI请求(如调用Rectangle画一个矩形),由GDI去完成实际的图形输出操作。对于一台具有打印矩形功能的PostS
34、cript打印机来说,GDI可能只需要将矩形数据传给驱动程序就可以了,然后由驱动程序产生PostScript命令绘制出相应的矩形;而对于一台没有矩形输出功能的点阵打印机来说,GDI可能需要将矩形转化为四条线,然后向驱动程序发出画线的指令,在打印机上输出矩形。2.1.2 C+语言C+语言是一种优秀的HYPERLINK :/baike.baidu /view/125370.htm t _blank 面向对象HYPERLINK :/baike.baidu /view/128511.htm t _blank 程序设计语言,它在C语言的基础上发展而来,但它比C语言更容易为人们学习和掌握。C+以其独特的语
35、言机制在计算机科学的各个领域中得到了广泛的应用。HYPERLINK :/baike.baidu /view/125370.htm t _blank 面向对象的设计思想是在原来HYPERLINK :/baike.baidu /view/260077.htm t _blank 结构化程序设计方法基础上的一个质的飞跃,C+完美地体现了面向对象的各种特性。图2.1体现了C+语言的运行过程:图2.1 C+程序运行过程2.1.3 Microsoft Visual C+ 6.0环境Visual C+ 6.0,简称VC或者VC6.0,是HYPERLINK :/baike.baidu /view/2353.ht
36、m t _blank 微软推出的一款C+HYPERLINK :/baike.baidu /view/487018.htm t _blank 编译器,将“高级语言”翻译为“HYPERLINK :/baike.baidu /view/111847.htm t _blank 机器语言(低级语言)”的程序。Visual C+是一个功能强大的可视化HYPERLINK :/baike.baidu /view/973702.htm t _blank 软件开发工具。自1993年Microsoft公司推出Visual C+1.0后,随着其新版本的不断问世,Visual C+已成为专业HYPERLINK :/ba
37、ike.baidu /view/39175.htm t _blank 程序员进行HYPERLINK :/baike.baidu /view/37.htm t _blank 软件开发的首选工具。虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C+6.0为平台。2.1.4 MFC简介HYPERLINK :/baike.baidu /view/2353.htm t _blank 微软基础类(Microsoft Foundatio
38、n Classes),同VCL类似,是一种应用程序框架,随微软HYPERLINK :/baike.baidu /view/100377.htm t _blank Visual C+开发工具发布。目前最新版本为10.0(截止2011年3月),并且发布了中文版。该类库提供一组通用的可重用的类库供开发人员使用,大部分类均从CObject 直接或间接HYPERLINK :/baike.baidu /view/359926.htm t _blank 派生,只有少部分类例外。MFC实际上是微软提供的,用于在C+环境下编写应用程序的一个框架和HYPERLINK :/baike.baidu /view/536
39、07.htm t _blank 引擎。VC+是Windows下开发人员使用的专业C+ SDK(SDK,Standard SoftWare Develop Kit,专业HYPERLINK :/baike.baidu /view/37.htm t _blank 软件开发平台),MFC就是挂在它之上的一个辅助软件开发包。MFC作为与VC+血肉相连的部分(注意C+和VC+的区别:C+是一种HYPERLINK :/baike.baidu /view/128511.htm t _blank 程序设计语言,是一种大家都承认的软件编制的通用规;而VC+只是一个HYPERLINK :/baike.baidu /
40、view/487018.htm t _blank 编译器,或者说是一种编译器+源程序HYPERLINK :/baike.baidu /view/499644.htm t _blank 编辑器的IDE( IDE的英文全称为“Integrated Development Environment”,即“集成开发环境”。),WSPlatForm,这跟HYPERLINK :/baike.baidu /view/9355.htm t _blank Pascal和HYPERLINK :/baike.baidu /view/3297.htm t _blank Delphi的关系一个道理。Pascal是Delp
41、hi的语言基础,Delphi使用Pascal规来进行Win下应用程序的开发和编译,却不同于HYPERLINK :/baike.baidu /view/7334.htm t _blank Basic语言和HYPERLINK :/baike.baidu /view/3063.htm t _blank VB的关系。Basic语言在VB开发出来被应用的年代已经成了Basic语言的新规,VB新加的HYPERLINK :/baike.baidu /view/7334.htm t _blank Basic语言要素,如HYPERLINK :/baike.baidu /view/249254.htm t _bl
42、ank 面向对象程序设计的要素,是一种性质上的飞跃,使VB既是一个IDE,又成长成一个新的程序设计语言)。MFC同VC+集成的HYPERLINK :/baike.baidu /view/464293.htm t _blank VCL一样是一个非外挂式的HYPERLINK :/baike.baidu /view/600107.htm t _blank 软件包类库,只不过MFC类是微软为VC+专配的。2.1.5 图形设备接口、GDI对象 以往许多MSDOS程序采用直接向视频存储区或打印机端口输送数据,这种做法不利之处是需要各种显示卡(低分辨率彩色图形显示卡、加强图形显示卡、图像图形阵列以与VGA)
43、或打印机驱动程序,支持所有这些设备意味着要用大量的编程来包含这些驱动程序(为每一个设备编定不同的代码)。为了减轻开发程序的难度,Windows提供了一个抽象的接口,图形设备接口Graphics Device Interface(GDI)。另外Windows还提供了各种显示卡与打印机的驱动程序,这样在写程序时就可以不必关心显示卡和打印机的类型,简化了程序开发的难度。GDI是个抽象的概念,GDI接口是微软公司提供的一组绘图函数,通常称之为GDI函数,使用这些函数可以绘制各种图形。MFC类库对GDI函数进行封装,将其封装为不同的GDI对象,采用GDI对象进一步简化了图形、图像处理程序的开发难度。常用
44、到的GDI对象有: 1.CPen:笔是一种用来画线与绘制有形边框的工具,可以指定它的颜色与厚度,并且可以指定它画实线、点线或虚线; 2.CBrush:刷子定义了一种位图形式的像素,利用它可对区域部填充颜色; 3.CBitmap:位图是一种位矩阵,每一个显示像素都对应于其中的一个或多个位。可以利用位图来表示图像,也可以利用它来创建刷子; 4.CRgn:区域是由多边形、椭圆或二者组合形成的一种围,可以利用它来填充、裁剪以与鼠标点中测试; 5.CFont:字体是一种具有某种风格和尺寸的所有字符的完整集合,它常常被当作资源存于磁盘中,其中有一些还依赖于某种设备; 6.CPalette:调色板是一种颜色
45、映射接口,它允许应用程序在不干扰其他应用程序的前提下,充分利用输出设备的颜色描绘能力。2.2 OpenCV的简介2.2.1 OpenCV概述penCV于1999年由HYPERLINK :/baike.baidu /view/2396.htm t _blank Intel建立,如今由Willow Garage提供支持。OpenCV是一个基于(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效由一系列 C 函数和少量 C+ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了HYPERLINK :/baike.bai
46、du /view/14662.htm t _blank 图像处理和计算机视觉方面的很多通用算法。OpenCV 拥有包括 300 多个C函数的跨平台的中、高层 API。它不依赖于其它的外部库尽管也可以使用某些外部库。OpenCV 为Intel Integrated Performance Primitives (IPP) 提供了透明接口。 这意味着如果有为特定处理器优化的的 IPP 库, OpenCV 将在运行时自动加载这些库。2.2.2OpenCV的特点计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉HYPERLINK :/baike.baidu /view/37.ht
47、m t _blank 软件大概有以下三种:1.研究代码(慢,不稳定,独立并与其他库不兼容)2.耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)3.依赖硬件的一些特别的解决方案(比如HYPERLINK :/baike.baidu /view/1242856.htm t _blank 视频监控,制造HYPERLINK :/baike.baidu /view/57978.htm t _blank 控制系统,HYPERLINK :/baike.baidu /view/1786846.htm t _blank 医疗设备),这是如今的现状。而标准的API将简化计算机视觉程序和解决
48、方案的开发。OpenCV致力于成为这样的标准API。OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。右图为OpenCV与当前其他主流视觉函数库的性能比较。3 常见的图像特效显示本章主要研究了目前比较流行的图像特效显示中的栅条显示、马赛克显示、移动显示特效和百叶窗显示特效的效果,分析其实用性并对相关算法进行优化改进。3.1显示特效方法理论概述3.1.1特效显示基础扫描显示图像是最基本的特效显示方法,可以分为上下左右
49、四个方向的扫描显示,对于向下的显示它表现为图像一行一行的从最顶端开始显示图像直到整个图像显示出来,效果有点像拉幕布的感觉。图像显示特效主要包括显示和擦出两大部分。显示特效就是利用特效将图像显示在屏幕上的过程,而擦出是显示的逆过程利用特效将图像还原为背景色。特效实现的原理是图像分块显示,简单说来,就是将图像分成不同的小块,按照一定的方向、顺序先后显示在屏幕上。3.1.2显示特效过程其实现方法为:取图像最上面一行像素点显示出来,再加上时间延迟,再取剩下的图像部分中的最上面一行,如此循环,直至整个加载入设备存中的图像显示完成。显示特效的整个过程如图3.1所示:图3.1 显示特效的过程3.1.3显示特
50、效类 其关键实现代码如下:int SleepTime=20; int temp=10; for(UINT y=0;yStretchBlt(IncX, IncY+y, /显示在设备上的起点x,y坐标 bs.bmWidth,temp, /显示在设备上的宽度和高度 &dc, /源位图设备情境对象 0, y, /提取源位图中显示区起点x,y坐标 bs.bmWidth,1,/提取源位图像素宽高 SRCCOPY);显示模式 Sleep(SleepTime);/时间延迟 SleepTime默认为20 3.2 栅条显示HYPERLINK l _Toc326134399 3.2.1栅条显示特效的特效预览栅条显示
51、特效的特效如图3.2所示:图3.2 栅条显示运行效果图3.2.2 基本原理和实现方法 栅条显示即交错显示。垂直交错效果表现为:设备上端下端各出现一幅由横向线条组成的图像相对移动,直至两图像刚好重叠成一幅完整清晰的图像。其实现方法为:分别取待显示位图的奇数行和偶数行做为向上和向下的两幅图,分别向上和向下移动,直至显示到待定的位置,此时两图刚好组合成一幅完整的图像。栅条显示的基本原理如表3.1:表3.1 编程实现类别说明图像分块将图像按照一定宽度分成横向的图像块。图像块的编号从上到下分别为1、2、3n显示顺序编号为奇数的图像块从左向右移动,编号为偶数的图像块从右向左移动显示方法 将编号为技术的图像
52、块向左移动距离i,所有编号为偶数的图像块向右移动距离i。延时如果i不等于nWidth,则使i加1,重复步骤栅条实现代码如下: int i,j;int buf=1;/栅条的高度 取奇数跟偶数号行时用1int SleepTime=10;/时间延迟int low_height=(bs.bmHeight-bs.bmHeight/buf*buf); int temp_height= bs.bmHeight-low_height-(bs.bmHeight/buf-bs.bmHeight/buf/2*2)*buf; /当buf!=1时 取偶数根buf高度像素条后剩下的最小高度 /用于放置在最下面到最后显示出
53、来 使不影响整体效果if(low_height0) this-StretchBlt(IncX,IncY+bs.bmHeight-low_height,bs.bmWidth, low_height, &dc,0,0,bs.bmWidth,low_height,SRCCOPY), Sleep(speed*buf);/对上面提与的low_height高度像素条区域置图像for(i=1;i=1;j-) this-StretchBlt(IncX,IncY+(j-1)*2*buf,bs.bmWidth,buf, &dc,0,(bs.bmHeight/buf/2-i)*2*buf+(j-1)*2*buf,b
54、s.bmWidth,buf,SRCCOPY);this-StretchBlt(IncX,IncY+temp_height-(2*j-1)*buf,bs.bmWidth,buf, &dc, 0,(i-j)*2*buf+buf,bs.bmWidth,buf,SRCCOPY); /对上下出现的栅条进行相对移动this-StretchBlt(IncX,IncY+bs.bmHeight-low_height, bs.bmWidth,low_height, &dc, 0,i*2*buf,bs.bmWidth,low_height,SRCCOPY); /对由于buf!=1时产生的图像最后空隙进行填补 /填补
55、的高度与上面的buf不同Sleep(SleepTime*buf);this-BitBlt(IncX,IncY,bs.bmWidth,bs.bmHeight,&dc,0,0,SRCCOPY);/对整个图像显示的最后一次产生的空隙进行填补3.3马赛克显示特效3.3.1马赛克显示特效的特效预览马赛克显示特效如图3.3所示:图3.3马赛克特效显示运行效果图3.3.2基本原理和实现方法就用RGB来举例子,R(red红色),G(green绿色),B(blue蓝色)。这三种颜色每种都有0255围的强度值,数字越高越亮,例如,亮红色使用 R 值 255、G 值 0 和 B 值 0,有色光可被无色光冲淡并变亮。
56、如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。所以R、G、B的值的不同来混合颜色。例如一图片,他们当中是有很多不同颜色的小色块的,由于这些色块的像素非常非常的小而且密密麻麻的,而打马赛克就是圈出一个围(小色块为整数的围,所以一般都用长方形或正方形去圈),把在圈的小色块的R值全加起来,求出平均数。然后再把G值全加起来,求平均数。接着把B值全加起来,求平均。最后把上面总R值的平均数为R值,上面总G值的平均数为G值,上面总B值的平均数为B值,就形成了一种颜色,然后就把这种颜色涂满圈,这样就形成了马赛克。马赛克显示特效原理如表3.2:表3.2马赛克特效的基本原理类别说明图像分块将图像分成大小一样的
57、小方块,每个小方块就是一个图像块显示顺序随即显示显示方法对所有图像块编号通过程序产生随机数,挑选需要显示的图像块并将其复制显示将已显示的图像块从集合中剔除延时如果集合中还有图像块,重复步骤3.3.3编程实现马赛克特效显示编程如下:*作用:马赛克特效*/void EffectDisplay:MosaicDisplay(CDC* pDC, CDC* pMemDC)int nTileSize = 24; / 马赛克小方块大小int nRw = 0;int nRh = 0;if (s_nPicWidth % nTileSize != 0)nRw = 1;if (s_nPicHeight % nTile
58、Size != 0)nRh = 1;/ 计算小方块的个数int nTileCount = (s_nPicWidth / nTileSize + nRw) * (s_nPicHeight / nTileSize + nRh);CPtrArraypoints;/ 保存所有小方块的左上坐标longlx = 0;longly = 0;for (int k = 0; k x = lx;point-y = ly;lx = lx + nTileSize;if (lx = s_nPicWidth)lx = 0;ly = ly + nTileSize;points.Add(point);int nDelayTi
59、me = 2;if (s_nPicHeight * s_nPicWidth 600 * 500)nDelayTime = 1;LARGE_INTEGER seed;QueryPerformanceFrequency(&seed);QueryPerformanceCounter(&seed);/初始化一个以微秒为单位的时间种子srand(int)seed.QuadPart);for (int i = nTileCount - 1; i = 0; i-)int n = rand() % (i + 1);CPoint* point = (CPoint*)pointsn;lx = point-x;ly
60、 = point-y;pDC-BitBlt(lx + s_nOffsetX, ly + s_nOffsetY, nTileSize, nTileSize, pMemDC, lx + s_nOffsetX, ly + s_nOffsetY, SRCCOPY);SAFE_DELETE (point);points.RemoveAt(n);PDelayTime(nDelayTime);3.4移动显示特效3.4.1 移动显示特效显示预览移动显示特效通过不断改变图像显示的大小和位置,使图像呈现水平或者垂直的效果。按照移动方向分为向上移动、向下移动、向左移动和向右移动四种。图3.4显示了向右移动显示的效果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西省上饶市广丰县2025届四下数学期末检测试题含解析
- 产业经济学与2025年相关知识考试试卷及答案
- 2025年特殊教育教师资格考试试题及答案
- 2025年文化产业管理职业能力测评试卷及答案
- 咸阳师范学院《免疫与病原生物学实验Ⅲ》2023-2024学年第二学期期末试卷
- 九州职业技术学院《学术英语阅读与写作》2023-2024学年第一学期期末试卷
- 2025年英语专业八级考试试卷及答案
- 潜江市2024-2025学年初三中考模拟最后一卷生物试题含解析
- 辽宁省东港地区市级名校2025年初三3月中考适应性调研考试数学试题试卷含解析
- 高端私人直升机航拍影像作品版权授权及收益分成协议
- PSP问题解决流程分析
- 6.5 国家司法机关 课件-2024-2025学年统编版道德与法治八年级下册
- 语文-华大新高考联盟2025届高三3月教学质量测评试题+答案
- 低空经济行业分析报告
- 2025年安徽省C20教育联盟中考三模语文试题(含答案)
- 2025年中考语文备考之课内文言文主题阅读训练主题二:治国劝谏篇(解析版)
- 计算机毕设管理系统答辩
- 2025年湖北行测试题及答案
- 闽教版四年级英语下册全册单元知识点
- 新高考背景下2025年高考物理命题趋势分析与复习备考策略讲座
- 2025年四川成都农业科技职业学院招聘工作人员16人高频重点模拟试卷提升(共500题附带答案详解)
评论
0/150
提交评论