数字图像处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[1] 杨枝灵,王开.Visual C++ 数字图像获取、处理及实践应用.人民邮电出版社,2003 .
[2] 李红俊,韩冀皖.数字图像处理技术及其应用.计算机测量与控制,2002.10(9):620~622
[3] W.K.Pratt.DIGITAL IMAGE PROCESSING.John wiley & Sons,inc.,1978 . Visual C++数字图像处理
作/译者:谢凤英赵丹培出版社:电子工业出版社
出版日期:2008年09月
ISBN:9787121067488 [十位:712106748X]
第1章
Visual C++数字图像编程基础主要介绍了使用Visual C++进行图像处理编程的一些基
本概念,其中包括调色板,设备相关位图,设备无关位图等等,除此之外,还设计了一个能用来操作DIB位图的ImgCenterDib类,后面的章节所介绍的算法都在这个ImgCenterDib类的基础上实现,从面向对象程序设计的角度来讲述这些图像处理算法的实现过程。
1
第2章
图像的灰度变换介绍图像灰度变换的概念、原理及典型算法,包括二值化和阈值处理,直方图的概念、绘制及直方图均衡,灰度的线性变换和灰度拉伸等。
58
第3章
图像的几何变换介绍几何变换的基本概念及典型算法,包括图像的缩放、旋转、平移、转置及镜像等变换,介绍图像几何校正的概念及典型校正算法,以及为了解决几何变换和校正问题所涉及的图像插值,包括近邻、双线性和立方卷积插值等。
109
第4章
图像的变换域处理变换域的处理方法使得各种图像处理技术得以在变换域空间实现,该部分内容重点介绍傅里叶变换与反变换,离散余弦变换和小波变换的基本原理与算法实现,并结合小波变换的多分辨分析特性,介绍小波变换在图像去噪中的应用实例。
161
第5章
图像的增强技术介绍图像获取过程中噪声的产生、噪声模型、信噪比的定义以及如何实现图像中随机噪声和高斯噪声的添加过程;同时,针对不同的应用需求和算法特点分别介绍了
图像的灰度修正方法、空间域平滑方法以及图像的锐化方法等。
236
第6章
图像的分割技术介绍经典的域值分割、边缘检测和区域生长算法,介绍Hough变换的实现以及目标轮廓的提取与跟踪技术等。
279
续表
章名主要内容页码
第7章【6】
图像的复原技术以运动模糊图像复原的基本原理和图像退化模型的建立为切入点,重点对运动模糊图像的形成过程、匀速直线运动的退化模型及点扩散函数的参数确定问题进行了详细介绍,并根据算法的不同性能,分别介绍了逆滤波法、维纳滤波法、RL法和投影恢复方法在图像复原中的具体应用。为了更好地评价图像的复原质量,也介绍了图像复原方法的质量评价指标。
340
第8章
图像的形态学处理介绍数学形态学的概念,腐蚀、膨胀、开闭运算等形态学基本运算,介绍形态学梯度、Top-Hat变换及流域分割等灰值形态学处理方法。
367
第9章
运动图像分析及其应用技术介绍运动的定义、分类、表达方式和运动分析中涉及的主要内容,详细介绍了利用频域下的平移运动参数估计方法实现运动目标检测的基本原理、静态背景和动态背景下的运动目标检测方法和基于mean shift的运动目标跟踪方法,从不同角度分析了运动分析在应用过程中涉及的关键问题,并结合了电视跟踪测量系统中的典型应用实例。
438
第10章
图像的配准技术介绍图像配准的定义以及图像配准过程中的关键问题,介绍了模板匹配的原理以及三种相关性测度的选择方法,在基于特征点的配准方法中,介绍了Harris角点的提取及基于特征点的匹配算法,针对变换域的处理方法,介绍了基于傅里叶变换的相位相
关配准方法并给出了应用实例。
484
Visual C++作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。Microsoft的基本类库MFC使得开发Windows应用程序比以往任何时候都要容易。C++提供的各种函数、指针操作和直接对硬件操作使得图像处理速度较快,专门为VC++设计的OpenGL和DirectX技术可以使开发人员在Windows环境下比较容易地完成图像图形的高性能处理和显示。用VC++编制的应用软件无论在处理速度和图像的显示等方面都表现出较高的效率,因此在编制基于Windows的各类数字图像处理程序时,VC++无疑是程序员进行图像处理的最佳选择。
本文主要介绍了本人在用VC++进行图像基本处理时获得一些技巧与经验,希望与广大爱好图像处理的编程者分享。
一、模板(template)的使用
对于图像处理应用软件来说,图像数据的管理是至关重要的,在"电脑编程与技巧"杂志99年11期,本人介绍了一个封装的通用图像基类(CImage),可完成BMP格式图像数据的管理和一些基本的图像处理功能。但是该CImage类只是对位图进行处理,即操作的数据类型为无符号8位字符型(BYTE)。但是在进行边缘检测、相关跟踪、快速傅立叶变换等图像处理中经常需要定义一些int或float类型的二维数组来保存处理的中间结果或最终结果。另外如果用OpenGL编程来进行图像处理和显示,为了保证跨平台特性,OpenGL定义了一套数据类型:有无符号8位字符型(BYTE)、16位短整型(short)、无符号16位短整型(unsigned short)、32位字符型(int)、无符号32位字符型(unsigned int)、单精度浮点数(float)等类型。如果对应于每一种数据类型都定义一个类,这样
虽然能解决问题,但并不是一个明智的办法。例如要修改一个变量或函数,那对应于每一种数据类型定义的类多要做同样的修改,毫无疑问,这种方法操作繁琐,容易发生错误,需要做大量的拷贝修改工作,因此是一种低效的方法。
C++引入的模板(template)概念,这一个关键字会告诉编译器下面的定义将操作一个或更多的非特定的类型。只有当对象被定义时,这些类型才必须被指定以使编译器能够替代它们。因此可以用一个非特定的参数来作类型名称,用该非特定的参数来定义一个通用的数据类或一个函数,诸如于MFC类库中的CArrary、CTypedPtrList等类。下面给出了支持不同数据类型的一个图像二维数据模板类和一个快速排序类。
1.定义不同数据类型的数据模板类
数据模板类的定义如下: