当你看到那些用PhotoShopCorel PhotoPaint等软件绘制出的精美图片,并被它们表现出的神奇效果所折服时,是否曾想到做一个自己的图象处理软件?就象PhotoShop那样。“怎么可能,吹牛吧!”你一定会这么说。呵呵,别着急,待我慢慢讲来。

我是一名清华大学计算机系的研究生,一直对图象处理、多媒体的东西非常着迷,选修过不少这方面的课程,做过许多有意思的实验。我常常有这样一种冲动:把我做过的这些东西拿出来与大家一起分享,把有关的原理、算法、程序介绍给大家。

有这种想法的另一个原因是:数字图象处理(Digital Image Processing)技术是一门非常实用的技术。PhotoShop的核心就是图象处理技术。而目前有关这方面的资料太少了,已有的书不是内容太陈旧(还停留在DOS下的CGAEGA甚至汇编编程阶段),就是理论性太强,不容易懂,没有例子,看过以后也不知道该如何编程。我想:如果能够通过实际的例子来介绍这些图象处理算法,大家就很容易理解了。

这本书的侧重点是介绍数字图象编程,因此在内容的选择上也有所考虑,介绍的都是图象处理中的基本算法,大多可以用程序实现。而那些理论性很强,不易编程的算法,在这本书里是找不到的。书中的每一章可以看做是一个专题,后面都附有实际运行通过的源程序例子,全部程序都采用Windows编程(不过我并不打算介绍Windows的编程,这已经超出了本书的范围)

下面是本书的主要内容:

(1)    windows位图bitmap(bmp文件)的结构和调色版的概念;

(2)    图象的平移、旋转、镜象变换、转置变换、放缩;

(3)    图象的平滑(去噪声)、锐化;

(4)    图象的半影调、抖动技术;

(5)    图象的直方图修正、彩色变换;

(6)    图象的腐蚀和膨胀效果、细化算法、骨架的提取;

(7)    图象的边沿检测与抽取、hough变换、轮廓跟踪;

(8)    图象的检测、模板匹配;

(9)    图象的压缩编码、JPEG压缩编码标准;

(10) 图象处理编程工具lead.ocxDirectDraw及简单的多媒体编程技术。

这里面有一些非常有趣的应用。例如第4章介绍了一个将一幅图象转换成ASCII码的算法。对于喜欢上BBS的读者,这个算法是非常有用的。在第10章,介绍了一款非常实用的图象处理编程工具lead.ocx,利用它可以很快地开发出非常棒的图象处理软件。

学习了这些内容,你就掌握了图象处理中的一些最常用的算法。当然,这些内容还不足以编出象PhotoShop那样“牛”的软件来(人家毕竟是Adobe公司的看家宝贝嘛!)。但是要知道:万丈高楼平地起,很多非常复杂的功能可能是一些简单方法的叠加。相信你自己吧,你一定能够成为图象处理大师的。

是不是还有些信心不足?好,让我变一个戏法给你瞧瞧。

图1       普通文本

图2       抽取骨架后的文本

上面有两幅图,图1是未经处理的普通文字,经过骨架抽取,变成了图2的样子。这可不是用PhotoShop做的,而是我自己编的程序处理的。怎么样?还不错吧。

有人会问:“在编这样的程序之前有什么要求吗?”回答是:“有,只有两条:(1)c语言比较熟悉;(2)曾经编过Windows的程序。

有三点要说明:

(1)    文中出现的所有例子都在我自己的机器上编译运行通过,我使用的编程语言为Visual C++4.1,运行环境为中文Windows95Windows98。程序采用的是Windows API接口,全部采用C语言编写,并未用到C++的东西,所以也可以在其他的C编译器,如Borland CWatcom C下编译通过(可能有些函数的名称有些差别,所以建议使用Visual C++4.04.14.25.0版本都可以)。尽管在Windows3.x平台上也能编译运行这些程序,但强烈建议使用Windows95Windows98,因为32位的虚拟内存环境用起来爽极了。

(2)    既然是编图象的程序,当然要把机器的分辨率和颜色数调大一点了,这样显示出来的图象才显得漂亮(我用的是800*60016bits64K)。另外,装备一些好的图象软件是绝对必要的。我经常使用以下几种软件:

l         Sea,在DOS下的看图工具,而且可以很方便地转换图象格式;

l         AcdSee,一个小巧玲珑的看图软件;

l         Ulead IPhotoPlus,最大的优点是可以进行调色板的处理;

l         Windows PaintBrush,不要以为画笔的功能很弱,其实很多情况下还是很有用的;

l         PhotoShop,就不用我多说了。

(3)   图象处理的算法之中不可避免地要遇到一些数学的公式,霍金说过:“每多一个公式就要吓跑一半读者”,我将尽可能用通俗的语言将这些原理,公式讲解出来,力求做到公式尽可能的少;但遇到只有用公式才能讲明白的时候,我也决不回避,希望大家能耐着性子看下去。

本书主要参考的是我上数字图象处理课时的教材,作者是朱志刚老师,在此表示感谢。还要感谢我的好朋友袁昱,诸晓文和清华出版社的各位老师,没有他们的帮助,这本书的的出版是不可能的。

好了,不多说了,现在就让我们进入五彩缤纷的图象世界吧!

作者       

19996月于清华大学

USC does not screen or control the content herein and does not take responsibility for any inaccurate, offensive, infringing, or objectionable content, all of which is the sole responsibility of the author or the users who post content on this website.