计算机图形湖南大学 chapter-10 多媒体编程 下载本文

第10讲 图象处理编程工具的介绍,简单的多媒体编程

第10讲 图象处理编程工具的介绍,简单的多媒体编程

在前九讲,我们主要是介绍一些数字图象处理的基本原理和算法,很多细节和优化的算法都没有提,

所以程序的通用性和效率并不理想。其实有很多优秀的图象处理编程工具,功能强大,速度很快。在实际的编程中,可以调用它们提供的功能来满足我们自己的需求,提高了编程效率和代码的正确性。

在这一讲里,将介绍图象处理编程工具LeadTools(OCX)。给出的例程中要用到Visual C++(以下简称VC)的AppWizard和MFC的一些特性,不熟悉C++的读者可以先看看相关的参考书。

LeadTools

LeadTools(OCX)是Lead Technologies公司出品的一款功能强大的图象处理编程工具,目前的最新版本是Lead8.0(1997.7.25)。LeadTools实质上是一个OCX控件。先来说说什么是OCX控件?

如果你用过Visual Basic(以下简称VB)或者Delphi一类的可视化编程工具,那么你对控件这个概念一定不会陌生,就是那些工具条上的小按钮,如EditBox,Grid,ImageBox,Timer等等。每个控件都有自己的事件(事件),方法(方法)和属性(属性)。使用了控件的编程非常容易,首先,在程序的设计阶段可以设置一些属性,如大小,位置,标题(Caption)等等,在程序运行阶段,可以更改这些属性,还可以针对不同的事件,调用不同的方法来实现对该控件的控制。控件就好象一块块的积木,程序要做的事只是将这些积木搭起来。控件的最大好处是可以重复使用,甚至可以在不同的编程语言之间使用,例如你可以在VB中嵌入用VC开发的控件。

控件的本质是微软公司的对象链接和嵌入(OLE)标准。由于它充分利用了面向对象的优点,使得程序效率得到了很大的提高,从而得到了广泛的应用。国外有很多公司就是专门制作各种各样控件的。控件的最早形式是以.VBX的格式出现的,后来变成了.OCX。由于Internet的广泛流行,微软公司推出了ActiveX技术,就是从OLE发展起来的,加入了WWW上的功能。所以目前最流行的是ActiveX控件。

介绍完了OCX控件的概念,下面我们以Lead Version5.1为例,来看看LeadTools究竟有哪些功能?Lead Version5.1可以在正版MicroSoft Visual C++4.1安装光盘中Msdev\\samples\\ocx\\leadtools和Msdev\\redist\\redist下找到,主要是4个文件, Lead51n.dll,Lead32.ocx,Lead.lic,Ltocx.hlp。如果你想了解LeadTools的最新信息,可以访问以下www网址:http://www.leadtools.com/。

LeadTools主要有以下几大功能:

1. 对显示设备的全面支持:在显示时,你的程序中无需考虑是哪种显示模式,如:是16色还是真彩色。LeadTools为你做了所有的事。当然你也可以通过设置参数获得对显示设备更多的控制。你还可以实现自己的调色板。

2. 支持多种文件格式:下表是LeadTools所支持的常用文件格式,其中读表示用LeadTools能打开的文件格式,写表示LeatTools能存成的文件格式: 文件格式 读(位/像素) 写(位/像素) JFIF. 一种常用的Jpeg文件YUV 4:4:4, 4:2:2, 4:1:1(彩 8 (灰度)24(彩色) 格式,LeadTools支持 色)YUV 4:0:0(灰度) 8 (灰度)24(彩色)

TIFF. Tiff文件有很多种,

phoneix的Photoshop

- 1 -

第10讲 图象处理编程工具的介绍,简单的多媒体编程

LeadTools支持常用的几种

1,4,8,16,24,32,还包 括另一种颜色表示方法 CMYK (LZW压缩) 和 RLE (LZW压缩)

1, 4, 8, 16, 24

MPT. 一种多页(MultiPage)的 Tiff文件格式,类似于动画 Gif。

1,4,8,16,24,32,还包 括另一种颜色表示方法 CMYK (LZW压缩) 和 RLE (LZW压缩)

1, 4, 8, 16, 24

TIFF LZW. 采用LZW压缩 的Tiff格式,使用时要获得 Unisys公司的认可。 1, 4, 8, 16, 24, 32 1, 8, 16, 24

TIFF CCITT Group 3. 是一种 用于二值黑白图(如传真)的 Tiff压缩格式。 1 1

TIFF CCITT Group 4. 是一种 用于二值黑白图(如传真)的 Tiff压缩格式。比Group 3有 更高的压缩比。 1

1

TGA (TARGA). Truevision公 司的一种文件格式,

LeadTools支持所有未压缩 的,及用RLE算法压缩的 TGA文件。 8, 16, 24, 32 8, 16, 24, 32

GIF. 由CompuServe公司定 义的一种文件格式,是html 语言采用的一种文件格式。 要注意的是,使用采用了 LZW压缩的Gif文件时,首 先要获得Unisys公司的认 可。 1, 4, 8 8

phoneix的Photoshop

- 2 -

第10讲 图象处理编程工具的介绍,简单的多媒体编程

Photoshop 3.0 (PSD). Adobe

公司PhotoShop3.0所采用的 文件格式。 1, 8, 24

1, 8, 24

Windows Bitmap (BMP). 由 微软公司定义的文件格式。 1, 4, 8, 24(未压缩) 1, 4, 8 (采用RLE压缩) 1, 4, 8, 24

Windows Metafile (WMF). 一 种矢量图文件格式。在Word 中用到。 8, 24 8, 24

PCX. 由Zsoft公司制定的一 种文件格式,采用了行程编 码。

1, 4, 8, 24 1, 4, 8, 24

SUN Raster (RAS). 在Sun UNIX平台上的一种文件格 式。

1, 4, 8, 24, 32

1, 4, 8, 24, 32

PCD. 柯达公司的PhotoCD 文件格式。要注意的是要有 PCDLIB32.DLL这个文件。 所有

不能写

表10.1 LeadTools支持的常用文件格式 以上只是常用的文件格式,除此以外还有很多其它的文件格式,感兴趣的读者可以参考帮助。

3. 图象处理:如二值化,平滑,加噪声,增加对比度,色调,饱和度,亮度,Gamma校正,中值滤波,半影调,抖动,橡皮筋,滚动,填充,反色,镜象,马赛克,浮雕,打印,扫描,拷贝,粘贴,裁剪,缩放,截屏,调色板,直方图,有关数据库的操作,还有制作幻灯的功能,如淡入,淡出,卷帘等等,真的很爽。下表是Version5.1的所有属性,事件,和方法列表,看看有没有你所需要的功能。以字母顺序排列,其中标[P]的表示只有专业级(Professional)和特殊级(Express)用户才能使用。 AboutBox

方法:显示LeadTools的“关于”信息 方法:增加随机噪声

属性:该属性为真时,位图自动重画

属性:该属性为真时,当位图超出窗口范围时,自动出现滚动条 属性:该属性为真时,自动调整窗口大小 方法:平滑

属性:该属性设置位图的背景色 属性:该属性为真时,擦除控件的背景 方法:对黑色对象进行腐蚀或膨胀操作

phoneix的Photoshop

[P] AddNoise AutoRepaint AutoScroll AutoSetRects [P] Average BackColor

BackErase [E] BinaryFilter

- 3 -

第10讲 图象处理编程工具的介绍,简单的多媒体编程

Bitmap

BitmapBits

属性:该属性为位图句柄

属性:该属性为每个像素所占的比特数 属性:该属性为位图的高

属性:该属性设置调色板中某一项的RGB值

BitmapHeight BitmapPalette

BitmapWidth 属性:该属性为位图的宽 BitmapXRes 属性:该属性为位图的水平分辨率 BitmapYRes 属性:该属性为位图的垂直分辨率

[E] BitonalScaling 属性:设置该属性,以增强二值图的显示效果 BorderStyle [P] Capture

属性:该属性为0时,控件周围没有边框,为1时有边框

方法:从某一设备上下文指定的矩形区域中获得位图(截屏) 事件:当用户点击控件时,触发该事件 方法:融合调色板

属性:该属性为灰度图的调色板数组

Click [P] ColorMerge [P] ColorPlanes

ColorRes 方法:颜色数转换

[P] ColorSeparate 方法:按照调色板将位图分离成一个个的灰度图 [P] Combine Contrast Copy CreateBitmap [P] dbAddNew

方法:将两幅图结合,例如另一幅图是一个边沿检测的滤波器 方法:增加或减少位图的对比度

方法:将位图拷贝至剪贴板

方法:对位图初始化并分配内存,但不调入任何数据 方法:为当前记录集增加一个新的空记录

属性:该属性为真时,表示可以在当前记录集中增加一个记录 属性:该属性为真时,表示可以从数据库中重建记录集

属性:该属性为真时,表示数据源支持dbMove方法,可以在记录集中滚动 属性:该属性为真时,表示可以在当前记录集中增加或者更新一个记录

[P] dbCanAppend [P] dbCanRestart [P] dbCanScroll [P] dbCanUpdate

[P] dbClose 方法:关闭当前记录集和数据库 [P] dbCurrentRecord 属性:记录集中当前记录号 [P] dbDelete 方法:删除当前记录 [P] dbEdit 方法:为更新当前记录做准备 [P] dbEditMode [P] dbIsBOF [P] dbIsDeleted [P] dbIsEOF [P] dbIsOpen DblClick [P] dbLoadBits

属性:指示当前记录的编辑模式,如只读,可编辑,可添加 属性:指示是否到了最前面的记录 属性:指示当前记录是否已经被删除 属性:指示是否到了最后面的记录 属性:指示是否和一个数据库相连

事件:当用户双击控件时,触发该事件

属性:指示从数据库中调入位图时,每个像素所占的比特数,为0时,和原来位图

的颜色数保持一致

[P] dbLockingMode 属性:当对数据库中已有记录进行更新时,该属性用来指定记录锁定模式 [P] dbMove

方法:将当前记录移动到指定位置 方法:选定记录集中的第一个记录 方法:选定记录集中的最后一个记录 方法:选定记录集中的下一个记录 方法:选定记录集中的前一个记录

[P] dbMoveFirst [P] dbMoveLast [P] dbMoveNext [P] dbMovePrev

[P] dbOpen 方法:在ODBC类型的数据库中打开一个记录集 [P] dbRecordCount 属性:指示记录集中的记录数 [P] dbRequery [P] dbUpdate

方法:从数据库中重建记录集

方法:更新数据库(当调用dbAddNew或者dbEdit后)

phoneix的Photoshop

- 4 -