图像是现代信息社会中最基本的信息。数字图像处理的研究对象是图像处理技术,这是计算机技术的重要分支和发展方向。数字图像处理是信息科学、工程学、医学、生理学、遥感技术、地学甚至社会科学等许多学科的重要基础,同时也是一种具有巨大的经济和社会效益的实用技术,广泛应用于军事、气象、交通、探矿、水利、农业甚至娱乐等领域。随着信息高速公路和数字地球等概念的提出和发展,数字图像处理技术已得到更加充分的发展,并在现代信息社会中占据了非常重要的地位。.
数字图像处理既是一门实用的学科,又需要一定的理论基础支持。许多的实际编程涉及图像处理算法的编程实现。本书尽量将图像处理的理论和实际编程结合起来,使读者既能从中获得必要的理论知识,又能学到实际的编程技巧,并直接将书中介绍的技术用于实际编程。
数字图像处理是一个很大的话题,本书不可能详细介绍其中的所有细节。与前两版《精通Visual C++图像处理编程》一样,本书仍然着重于实用性,大量的篇幅用于介绍图像处。理的编程技术。相对于前两版,本书增加了大量的内容,介绍了图像处理的常用算法和图像格式,使得本书的内容更为全面。此外,这一版还将书中介绍的所有技术集成到一个通用的图像处理类库中,以方便读者直接在实际的图像编程中应用。
本书的适用对象
本书面向所有希望了解和掌握数字图像处理编程的开发人员。只要对图像处理感兴趣,无论是刚刚接触这一技术,还是已有一定的工作经验的读者,都能从书中找到自己所需要的内容。
本书的所有程序都是基于面向对象编程技术并用Visual C++来实现的,因此对那些想提高自己面向对象设计和Visual C++编程技巧的读者来说,也是一本很好的参考书。
本书假定读者具有一定的Visual C++编程经验。如果读者不熟悉如何使用Visual C++,建议还是先阅读一本Visual C++编程的教科书之后再阅读本书。
本书的主要内容
本书在讲解了基本的图像处理理论和分析常用的图像处理技术的基础上,基于面向对象的编程技术,结合大量的示例,向读者展示了用Visual C++进行图像处理编程的基本方法和技巧。
本书按不同的图像处理技术分专题组织内容,共分为9章。
第1章 Visual C++编程概述
本章全面介绍了Visual C++的技术概要和面向对象的技术特征,还讨论了编程风格问题。本章推荐的是一种便于调试的实用编程风格。
第2章 图像基础
本章介绍了数字图像处理的一些基本概念,包括图像、调色板,以及设备相关位图和设备无关位图等。本章的示例程序ShowDIB说明了基本的位图编程方法。..
第3章 面向对象的图像编程
本章是以后各章的基础,首先定义了一套位图处理的函数集,并在此基础上设计了与操作设备无关位图的CDib类。本章示例程序ViewDIB实现的功能与上一章的ShowDIB完全相同,但ViewDIB是基于CDib类来编写的。比较这两个示例的异同有助于体会CDib类的强大功能。
第4章 图像的特技显示
本章主要介绍图像显示特技。在讨论了图像特技显示技术基础之后,本章详细介绍了扫描、移动、百叶窗、栅条、马赛克、渐显与渐隐和透明显示的实现方法,并在CDib类中实现这些功能。
第5章 图像变换
本章的主题是图像变换。首先介绍图像空间变换的理论基础,然后讨论了裁剪与合并、缩放、旋转及镜像等图像空间变换的编程技术,并将这些功能增加到CDib类中。
. 第6章 颜色处理
本章主要介绍颜色处理。在介绍颜色处理理论的基础上,探讨灰度化与伪彩色处理、颜色分离和滤色、颜色调整、亮度/对比度调整、Gamma校正、颜色量化与减色、抖动以及颜色均值映射的实现技巧,并在CDib类中实现这些功能。
第7章 图像处理
本章主要介绍数字图像处理的理论与方法,是全书的核心。首先介绍数字图像处理的基础理论,包括卷积、滤波、正交变换及数字形态学理论等。然后介绍正交变换(傅里叶变换、余弦变换、沃尔什变换)、卷积、图像平滑与锐化、边缘增强、边缘检测(Sobel边缘检测、Hough边缘检测、均匀边缘检测、差异边缘检测和Canny边缘检测)、艺术效果(浮雕和油画)、腐蚀与膨胀、图像的开和闭、边缘提取及细化和去除随机噪声的编程方法。最后将所有这些功能增强到CDib类中。
第8章 图像格式
本章主要介绍图像编码和图像格式。8.1节介绍了图像编码的基础理论,详细说明了Huffman,LZW和RLE编码的实现细节。随后的4节讨论了PCX,GIF,TGA,JPEG和TIFF文件格式的操作技术,并基于CDib类实现操作这些文件格式的CPcx,CGif,CTga,CJpeg和CTif类。
第9章 图像处理类库ImageLib及其应用实例
本章综合运用前几章的知识,以CDib,CPcx,CGif,CJpeg,CTga,CTif类为基础,以动态链接库的形式构建了一个可以直接用于实际图像处理编程的通用图像处理类库ImageLib,并详细说明了用ImageLib编写一个功能较完整的图像处理程序ImageBoard的方法和过程。
本书附光盘1张,提供了各章的源程序代码(readme.txt文件)介绍了使用光盘的方法,以及光盘中各个目录与本书各章节的对应关系。
如何使用本书
本书提供了大量的实用代码和例程,涉及图像处理的各个方面。在阅读本书时,读者最好能准备好一台计算机,以便能随时尝试本书所提供的例程代码。
为了能够正确地使用本书提供的工具库和示例程序,读者的计算机系统应满足如下基本要求:
·CPU:奔腾Ⅲ或更高
·内存:不少于64MB
·操作系统:Windows 95/98/Me或Windows NT/2000/XP
·编程环境:Visual C++.NET(包含在Visual Studio.NET中)或Visual C++ 6.0
第3版的新增内容
与第2版比较,第3版中新增加或者修改了如下内容:
·在CDib类中增加了拷贝构造函数和赋值函数(3.3节)。
·Gamma校正(6.7节)。
·颜色均值映射(底片和曝光)(6.8节)。
·均匀边缘检测和差异边缘检测(7.6.2节和7.6.3节)。
·Canny边缘检测(7.6.4节)。
·艺术效果(浮雕和油画)(7.7节)。
·完全重写了TIFF格式的操作代码,改正了第2版中的一个缺陷,现在支持TIFF文件读和写操作(8.6节)。
·改正了在Visual C++ 6.0中编译ImageBoard项目时的一个问题,提供了一个vcip.dsw,将所有的项目集成到一个工作区上。
·校正了一些印刷和代码中的错误。
如何发表意见和获得技术支持
笔者欢迎读者提出宝贵意见。读者在阅读本书时遇到任何问题,或者发现了本书存在的错误和纰漏(限于笔者的能力,本书中出现错误、浅陋和陈旧之处在所难免),以及发表意见和建议,都请直率地告诉笔者。笔者会通过电子邮件尽力回复读者提出的问题。请通过如下电子邮件地址与笔者联系:
darin.zhou@gmail.com
致谢
感谢所有对本书的写作有过帮助的人。周建欣、林琳、黄家辉、邓优、李秀鹃、刘烁和何西涛等参加了本书有关内容的讨论和资料收集,周建欣、彭文、黄娅丽测试了本书的所有示例程序,辛平测试了图像工具库ImageLib。
感谢电子工业出版社博文视点资讯有限公司为本书的出版付出的努力。
最后要感谢本书第1版和第2版的广大读者,他们的鼓励和批评是第3版得以出版的最大动力。实际上,这一版中的许多新增内容都是根据读者的反馈信息而增补的,许多问题也是热心读者所指出的。我在此向所有的读者表示衷心的感谢!我希望读者继续关心本书,也继续期待着读者的建议意见和批评指正。...
周长发
2006年