当你看到那些用PhotoShop或Corel PhotoPaint等软件绘制出的精美图片,并被它们表现出的神奇效果所折服时,是否曾想到做一个自己的图象处理软件?就象PhotoShop那样。“怎么可能,吹牛吧!”你一定会这么说。呵呵,别着急,待我慢慢讲来。
我是一名清华大学计算机系的研究生,一直对图象处理、多媒体的东西非常着迷,选修过不少这方面的课程,做过许多有意思的实验。我常常有这样一种冲动:把我做过的这些东西拿出来与大家一起分享,把有关的原理、算法、程序介绍给大家。
有这种想法的另一个原因是:数字图象处理(Digital Image Processing)技术是一门非常实用的技术。PhotoShop的核心就是图象处理技术。而目前有关这方面的资料太少了,已有的书不是内容太陈旧(还停留在DOS下的CGA,EGA甚至汇编编程阶段),就是理论性太强,不容易懂,没有例子,看过以后也不知道该如何编程。我想:如果能够通过实际的例子来介绍这些图象处理算法,大家就很容易理解了。
这本书的侧重点是介绍数字图象编程,因此在内容的选择上也有所考虑,介绍的都是图象处理中的基本算法,大多可以用程序实现。而那些理论性很强,不易编程的算法,在这本书里是找不到的。书中的每一章可以看做是一个专题,后面都附有实际运行通过的源程序例子,全部程序都采用Windows编程(不过我并不打算介绍Windows的编程,这已经超出了本书的范围)。
下面是本书的主要内容:
(1) windows位图bitmap(即bmp文件)的结构和调色版的概念;
(2) 图象的平移、旋转、镜象变换、转置变换、放缩;
(3) 图象的平滑(去噪声)、锐化;
(4) 图象的半影调、抖动技术;
(5) 图象的直方图修正、彩色变换;
(6) 图象的腐蚀和膨胀效果、细化算法、骨架的提取;
(7) 图象的边沿检测与抽取、hough变换、轮廓跟踪;
(8) 图象的检测、模板匹配;
(9) 图象的压缩编码、JPEG压缩编码标准;
(10) 图象处理编程工具lead.ocx、DirectDraw及简单的多媒体编程技术。
这里面有一些非常有趣的应用。例如第4章介绍了一个将一幅图象转换成ASCII码的算法。对于喜欢上BBS的读者,这个算法是非常有用的。在第10章,介绍了一款非常实用的图象处理编程工具lead.ocx,利用它可以很快地开发出非常棒的图象处理软件。
学习了这些内容,你就掌握了图象处理中的一些最常用的算法。当然,这些内容还不足以编出象PhotoShop那样“牛”的软件来(人家毕竟是Adobe公司的看家宝贝嘛!)。但是要知道:万丈高楼平地起,很多非常复杂的功能可能是一些简单方法的叠加。相信你自己吧,你一定能够成为图象处理大师的。
是不是还有些信心不足?好,让我变一个戏法给你瞧瞧。
图1 普通文本
图2 抽取骨架后的文本
上面有两幅图,图1是未经处理的普通文字,经过骨架抽取,变成了图2的样子。这可不是用PhotoShop做的,而是我自己编的程序处理的。怎么样?还不错吧。
有人会问:“在编这样的程序之前有什么要求吗?”回答是:“有,只有两条:(1)对c语言比较熟悉;(2)曾经编过Windows的程序。
有三点要说明:
(1) 文中出现的所有例子都在我自己的机器上编译运行通过,我使用的编程语言为Visual C++4.1,运行环境为中文Windows95或Windows98。程序采用的是Windows API接口,全部采用C语言编写,并未用到C++的东西,所以也可以在其他的C编译器,如Borland C,Watcom C下编译通过(可能有些函数的名称有些差别,所以建议使用Visual C++4.0,4.1,4.2,5.0版本都可以)。尽管在Windows3.x平台上也能编译运行这些程序,但强烈建议使用Windows95或Windows98,因为32位的虚拟内存环境用起来爽极了。
(2) 既然是编图象的程序,当然要把机器的分辨率和颜色数调大一点了,这样显示出来的图象才显得漂亮(我用的是800*600,16bits即64K色)。另外,装备一些好的图象软件是绝对必要的。我经常使用以下几种软件:
l Sea,在DOS下的看图工具,而且可以很方便地转换图象格式;
l AcdSee,一个小巧玲珑的看图软件;
l Ulead IPhotoPlus,最大的优点是可以进行调色板的处理;
l Windows PaintBrush,不要以为画笔的功能很弱,其实很多情况下还是很有用的;
l PhotoShop,就不用我多说了。
(3) 图象处理的算法之中不可避免地要遇到一些数学的公式,霍金说过:“每多一个公式就要吓跑一半读者”,我将尽可能用通俗的语言将这些原理,公式讲解出来,力求做到公式尽可能的少;但遇到只有用公式才能讲明白的时候,我也决不回避,希望大家能耐着性子看下去。
本书主要参考的是我上数字图象处理课时的教材,作者是朱志刚老师,在此表示感谢。还要感谢我的好朋友袁昱,诸晓文和清华出版社的各位老师,没有他们的帮助,这本书的的出版是不可能的。
好了,不多说了,现在就让我们进入五彩缤纷的图象世界吧!
作者
1999年6月于清华大学