内容简介 本书以图像处理编程为主线,将图像的显示、存储、处理与采集的基础知识集中于一起,使读者对计算机图像能有比较完整的了解。本书既介绍原理又给出实现的C语言及C++程序,程序实例在VC下编译、调试,并在Windows环境下运行。本书第1~4章介绍图像显示与存储的基础知识及其编程。第5~9章介绍图像处理的常用算法及其编程。第10~12章介绍Windows C、VC++及C++ Builder环境下的图像编程。第13章介绍电视图像采集卡的工作原理及编程方法。读者可到http://www.tupwk.com.cn/downpage/index.asp下载本书演示程序的全部源代码、相关的字库文件以及所需的图像。本书可作为图像处理编程人员的参考书,以及少学时、应用型数字图像处理课程的教材。书中包含许多常用的图像处理子程序,故也可作为图像处理的程序库使用。
前 言 计算机图像处理技术最早于20世纪60年代出现于遥感和医学图像处理的研究中,70年代在欧美的大学中正式成为教学课程,80年代初我国的许多高校也相继开设了这门课程,我们华东理工大学则于80年代中期开始设置这门课程,采用冈萨雷斯的专著《数字图像处理》作为教材。 近年来,计算机技术突飞猛进。目前,即使家用计算机的功能也已足够强大,足以满足图像处理的要求。这样,计算机的普及改变了计算机教学纸上谈兵的状况,图像处理的教学中也增加了上机实验的内容。同时,由于教学改革强调少而精,课时有了较大的缩减,本专业的学生毕业后真正从事图像处理工作的并不多。因此,从20世纪90年代初开始我们逐渐改变课程的教学内容,从注重理论转向强调基础、注重应用。将课程改造为普及型的计算机图像课程,同时增加了上机实验,借以普及计算机图像知识,提高C语言编程能力,进而加深对计算机工作原理的理解。为此自编了教材以及相应的演示程序。本书是十余年来这方面工作的总结。 图像处理及其相关知识可用表1来概括。从事图像处理工作而不会编程是不可思议的,为此至少应该掌握一种编程语言,其中首选的是C语言。在表1中,第2类知识—— 图像基础知识目前还没有专门的书籍进行介绍,一般散见于图像编程类图书 (如《VC++图像处理程序设计》、《图像文件格式大全》)和介绍图形/图像的应用软件(如Photoshop、CorelDraw等)的图书中,零散而不完整。而数字图像处理教材则只介绍第3、第4类知识。本书与之不同,以介绍第2类知识为起点,结合介绍第1和第3类知识,既介绍原理又给出实现的C及C++程序。全书除了第1章外,第2 ~13章都有演示程序。第4类知识理论性较强,没有选入本书。 表1 图像处理及其相关知识 序号 知 识 类 型 内 容 1 编程语言 C语言(DOS、Windows)、VC++、C++ Builder、MATLAB 2 图像基础知识 图像显示原理、图像文件格式、图文界面制作、人机交互原理、图像的采集 3 常用图像处理算法 图像增强、图像分割、图像的描述与分类 4 图像处理专题 图像变换、图像编码、图像复原、图像重建等 在图像基础知识方面,本书介绍了图像显示原理、图像文件格式、图文界面制作、人机交互原理以及图像的采集等内容。 在图像处理方面则以程序实例的形式出现,介绍了二三十种常用的图像处理算法与典型应用,既介绍算法、编程原理及操作步骤,又提供所需的图像和调用方法,最后还能显示处理效果。 演示程序的特点是渐进、综合、可视化。渐进是指演示程序以增量方式编制,即后面的程序可调用前面已出现过的程序,这样可使后面的程序只需介绍新出现的内容,从而使大部分程序的篇幅保持在两页左右,便于学习、理解。综合是指演示程序本身就是一种典型应用,程序展示了实现的步骤、过程和最终结果。可视化是指演示程序尽量能用生动的画面或动态过程来显示,其中后者既是原理的演示,又是一种程序调试方法的展示。 编程方面强调一个基本思想,即图像的处理与编程环境无关。因此在4种编程环境(DOS、Windows C、VC++和C++ Builder)下都提供了一组图像处理的基本子程序,作为图像处理的底层基础。以此将程序中的图像处理部分同编程环境有关的部分相分离,使得重点突出、容易理解、便于入门。由于软件系统的层次结构,使得提供的图像处理程序在各种编程环境下都可以使用或能方便地进行移植。 基于上述通用性,本书中图像处理的程序主要以C语言编写,前几年在DOS环境的TC 2.0或BC 3.1下编译、调试,在DOS环境下运行。现在通过仿真也能在VC下编译、调试,在Windows环境中运行了。本书后面部分介绍了将它们移植到Windows C、VC++与C++ Builder环境的方法。 计算机编程的技能需要经过大量的编程实践才能获得,而编程练习往往是相当枯燥乏味的。图像处理编程则不同,它比较生动、直观,可以提高学习编程的兴趣。万事开头难,学习编程也一样,开始时几乎是走一步错一步。因此,学习编程的捷径是从观摩、模仿现成的例子程序开始。笔者学习C语言编程和计算机图形学就是从学习TC 2.0提供的图形功能演示程序BGIDEMO开始的,效果极好。在本书的编写过程中也采用了这种方法,在介绍原理的同时提供相应的演示程序供读者学习、参考。 读者可到http://www.tupwk.com.cn/downpage/index.asp下载本书演示程序的全部源代码、相关的字库文件以及所需的图像。 由于本书以图像处理编程为主线,因此在图像处理知识的介绍方面比较简略,只能是初步的,无法做到全面、完整。若需要进一步研究,请参考数字图像处理书籍。 对于不同的编程环境,本书只提供了图像处理的基本子程序和一组演示程序,以及一些最为基本的操作,作为学习该环境下图像处理编程的入门。至于Windows C、VC++和C++ Builder编程的专门知识,限于篇幅,本书不予介绍,请参阅相关参考资料。 多年来,笔者在教学和科研工作中得到了上海交通大学图像所施鹏飞教授,华东理工大学信息学院高敦岳、吴勤勤教授,以及原上海医科大学徐元鼎教授的支持与帮助,借此机会向他们表示衷心的感谢。 笔者在科研工作中使用OK系列图像采集卡多年,因此将此卡的内容也编入了本书。在以前的工作中以及本书的编写过程中都得到了北京嘉恒中自图像技术有限公司的支持,公司技术部门的杨森和何鹏同志还审核了有关OK系列采集卡的内容,在此一并表示感谢。 演示程序中的多幅图像选自本专业的博士研究生梁诚、宋培华和张晓光的学位论文,在此也向他们表示感谢。 本书的编写还得到了华东理工大学教材立项的资助,对于学校教务处的关心和支持在此深表谢意。 最后,对清华大学出版社出版本书表示由衷的感谢。 陆宗骐