第1章 数字图像概述 1
1.1 数字图像概论 1
1.1.1 数字图像及图像处理 1
1.1.2 数字图像处理的目的和主要内容 2
1.1.3 数字图像处理的应用 4
1.1.4 数字图像处理的发展动向 5
1.2 数字图像的存储 5
1.2.1 位映射图像 6
1.2.2 矢量图像 7
1.3 BMP图像文件格式 7
1.3.1 位图文件头 8
1.3.2 位图信息头 8
1.3.3 颜色表 8
1.3.4 实际的位图数据 9
1.4 TIFF图像文件格式 10
1.4.1 TIFF图像文件头 11
1.4.2 TIFF文件目录 11
1.4.3 TIFF数据区块 11
1.4.4 TIFF图像文件分类 12
1.4.5 TIFF数据压缩方法 12
1.5 JPEG图像文件格式 12
1.6 PNG图像文件格式 15
1.6.1 PNG图像文件结构简介 15
1.6.2 PNG文件署名域 15
1.6.3 PNG数据块结构 15
1.6.4 PNG数据块摘要 16
1.7 小结 17
第2章 Visual C++数字图像编程基础 18
2.1 图像和调色板 18
2.1.1 图像 18
2.1.2 调色板 19
2.1.3 色彩系统 20
2.1.4 灰度图 21
2.2 GDI位图 21
2.2.1 从资源中装入GDI位图 21
2.2.2 伸缩位图 23
2.3 设备无关位图(DIB) 23
2.4 构造自己的DIB函数库 25
2.4.1 CDib类声明 25
2.4.2 CDib类实现 26
2.5 使用DIB读/写BMP文件示例 34
2.5.1 创建工程 34
2.5.2 工程文件的声明部分 35
2.5.3 工程文件的实现部分 40
2.6 小结 51
第3章 图像的几何变换 52
3.1 图像几何变换的基础知识 52
3.2 图像平移 57
3.3 图像旋转 61
3.4 图像镜像 66
3.5 图像转置 71
3.6 图像缩放 74
3.7 插值算法 78
3.7.1 最近邻插值 78
3.7.2 双线性插值 78
3.7.3 双三次插值:三次卷积法 79
3.8 小结 80
第4章 图像的点运算 81
4.1 灰度直方图 81
4.2 灰度的线性变换 85
4.3 灰度的阈值变换 89
4.4 灰度的窗口变换 91
4.5 灰度拉伸 94
4.6 灰度均衡 98
4.7 非线性变换 102
4.7.1 对数变换 102
4.7.2 其他变换 104
4.8 小结 104
第5章 图像的正交变换 105
5.1 正交函数的概念 105
5.2 傅里叶变换 106
5.2.1 傅里叶变换的定义及基本概念 106
5.2.2 博里叶变换的性质 108
5.3 离散傅里叶变换 110
5.3.1 离散傅里叶交换的基本概念 110
5.3.2 离散傅里叶变换的性质 112
5.3.3 二维傅里叶变换 114
5.3.4 快速傅里叶变换 115
5.3.5 编程实现 121
5.4 离散余弦变换 127
5.5 沃尔什-哈达玛变换 132
5.6 离散K-L变换 139
5.7 小波变换 147
5.8 小结 160
第6章 图像增强 162
6.1 灰度变换修整法 162
6.2 直方图修整法 167
6.3 图像平滑 171
6.4 中值滤波 177
6.5 图像锐化 182
6.6 低通滤波 186
6.7 高通滤波 195
6.8 小结 203
第7章 图像复原 204
7.1 概述 204
7.2 逆滤波器方法——非约束复原 208
7.2.1 逆滤波器方法 208
7.2.2 Visual C++编程实现 209
7.3 最小二乘类约束复原 213
7.3.1 维纳滤波方法 213
7.3.2 约束最小平方滤波 215
7.3.3 编程实现 217
7.4 非线性复原方法 221
7.4.1 最大后验复原 221
7.4.2 最大熵复原 221
7.4.3 投影复原方法 223
7.5 几种其他图像复原技术 224
7.5.1 几何畸变校正 224
7.5.2 盲目图像复原 226
7.6 小结 227
第8章 图像的压缩编码 228
8.1 图像编码概述 228
8.1.1 图像编码原理 228
8.1.2 图像编码方法 229
8.1.3 图像编码的新技术 230
8.2 霍夫曼编码 231
8.3 香农-弗诺编码 239
8.4 行程编码 247
8.4.1 理论基础 248
8.4.2 PCX文件格式及其编码方法 248
8.4.3 编程实现 249
8.5 LZW编码 254
8.5.1 理论基础 254
8.5.2 GIF文件格式 257
8.5.3 编程实现 258
8.6 JPEG编码 269
8.6.1 理论基础 269
8.6.2 JPEG的文件格式 273
8.7 小结 278
第9章 边缘检测与图像分析 279
9.1 边缘检测 279
9.2 Hough变换 288
9.3 轮廓提取与轮廓跟踪 294
9.4 图像分割 302
9.4.1 基于幅度的阈值分割 303
9.4.2 基于区域的图像分割 305
9.4.3 编程实现 307
9.5 投影法与差影法 317
9.5.1 投影法 317
9.5.2 图像的代数运算与差影法 317
9.5.3 编程实现 319
9.6 图像的匹配 326
9.6.1 模板匹配法 327
9.6.2 其他快速计算法 328
9.6.3 编程实现 329
9.7 小结 333
第10章 图像的数学形态学运算 335
10.1 概述 335
10.1.1 数学形态学的概念 335
10.1.2 数学形态学中的基本符号和术语 336
10.2 图像腐蚀(Erosion) 338
10.3 图像膨胀(Dilation) 343
10.3.1 理论基础 343
10.3.2 腐蚀、膨胀运算的代数性质 344
10.3.3 编程实现 345
10.4 开(Open)运算和闭(Close)运算 349
10.4.1 基本概念 349
10.4.2 开、闭运算的代数性质 350
10.4.3 编程实现 351
10.5 数学形态学的其他运算 353
10.5.1 击中/击不中(Hit/Miss)变换 354
10.5.2 细化(Thining) 355
10.5.3 编程实现 356
10.6 小结 360
第11章 图像融合 361
11.1 系统简介 361
11.1.1 图像融合的概念 361
11.1.2 系统平台的设计 362
11.1.3 系统平台的编码实现 363
11.2 HIS变换实现图像融合 369
11.3 主成分分析实现图像融合 377
11.4 Brovey算法实现图像融合 391
11.5 乘积变换融合和小波变换融合 399
11.6 小结 408
第12章 图像特技显示 409
12.1 图像特技显示的基本原理 409
12.2 图像的特技显示 409
12.2.1 图像的扫描显示 410
12.2.2 图像的插入 413
12.2.3 图像的百叶窗显示 416
12.2.4 图像的马赛克效果 418
12.2.5 图像的栅格条交错 420
12.2.6 图像从全黑淡入 422
12.2.7 图像的伸缩 424
12.3 小结 427
第13章 图像处理综合运用——人脸检测 428
13.1 人脸检测、识别概述 428
13.1.1 人脸识别技术概述 428
13.1.2 人脸识别系统模块设计 430
13.2 人脸检测系统的方案设计 431
13.2.1 人脸检测方法概述 431
13.2.2 基于肤色信息的人脸分割 431
13.2.3 人脸检测系统设计 437
13.3 图像数据读取与预处理 439
13.3.1 图像数据读取 439
13.3.2 图像的预处理 440
13.4 人脸区域检测 442
13.4.1 肤色建模——人脸区域的粗标定 443
13.4.2 膨胀与腐蚀 448
13.4.3 去除非人脸区域 453
13.4.4 再次膨胀与腐蚀 456
13.4.5 人脸区域定位 457
13.5 眼睛的检测与定位 460
13.5.1 眼睛的匹配 461
13.5.2 去掉非眼睛区域 466
13.5.3 膨胀眼睛区域 467
13.5.4 眼睛中心的定位 468
13.6 人嘴的检测与定位 470
13.6.1 嘴的匹配 470
13.6.2 腐蚀出嘴巴区域 472
13.6.3 去除离散点 475
13.6.4 定位嘴巴中心 477
13.7 人脸及其主要特征的标定 479
13.8 小结 482
附录A Visual C++开发环境 483
A.1 Visual C++概述 483
A.2 认识Visual C++集成开发环境 484
A.3 IDE菜单栏介绍 486
A.4 工具栏 493
A.5 输出窗口 494
A.6 资源编辑器 495
A.7 Visual C++学习常见问题 496
A.8 Visual C++学习方法简介 497
A.9 小结 498
附录B 利用集成开发环境生成程序 499
B.1 生成项目(Project) 499
B.2 添加和编辑源文件 500
B.3 建立程序 501
B.4 运行程序 502
B.5 调试程序 502
B.6 Visual C++生成的项目文件 503
B.7 编写控制台应用程序 504
B.8 小结 507