第1章 图像编程基础 1
1.1 Visual C++程序设计概述 1
1.1.1 C++与面向对象程序设计 1
1.1.2 Visual C++与Windows程序设计 2
1.2 数字图像处理概述 4
1.2.1 图像与数字图像 4
1.2.2 颜色与颜色空间 4
1.2.3 显示卡与调色板 7
1.2.4 数字图像文件格式 13
1.2.5 数字图像处理的研究内容 21
1.2.6 数字图像处理的应用领域 22
1.3 Visual C++处理数字图像的基本方法 23
1.3.1 使用DIB处理数字图像 23
1.3.2 使用自定义CDib类处理数字图像 28
1.3.3 使用GDI+处理数字图像 38
1.4 综合实例——图像浏览器 44
1.5 实践拓展 49
第2章 图像几何变换 50
2.1 图像的位置变换 50
2.1.1 图像平移 51
2.1.2 图像旋转 54
2.1.3 图像镜像 59
2.1.4 图像转置 63
2.2 图像尺度变换 65
2.2.1 图像缩放 66
2.2.2 插值算法 69
2.3 综合实例——魔镜 76
2.4 实践拓展 90
第3章 图像正交变换 92
3.1 基本正交变换 92
3.1.1 离散傅里叶变换 92
3.1.2 离散余弦变换 102
3.1.3 离散沃尔什变换 107
3.2 特征变换 113
3.2.1 K-L变换 113
3.2.2 SVD变换 119
3.2.3 小波变换 131
3.3 综合实例——特征提取 141
3.4 实践拓展 146
第4章 图像增强 148
4.1 灰度变换增强 148
4.1.1 线性灰度增强 148
4.1.2 分段线性灰度增强 150
4.1.3 非线性灰度增强 153
4.2 直方图增强 154
4.2.1 直方图统计 155
4.2.2 直方图均衡化 156
4.2.3 直方图规定化 159
4.3 图像平滑 162
4.3.1 邻域平均法 162
4.3.2 加权平均法 164
4.3.3 选择式掩膜平滑法 166
4.3.4 中值滤波法 171
4.4 图像锐化 173
4.4.1 梯度锐化 173
4.4.2 拉普拉斯掩膜锐化 175
4.5 频率域增强 178
4.5.1 低通滤波 179
4.5.2 高通滤波 182
4.5.3 带阻滤波 185
4.5.4 同态滤波 185
4.6 彩色增强 186
4.6.1 真彩色增强 186
4.6.2 假彩色增强 186
4.6.3 伪彩色增强 187
4.7 综合实例——照片处理器 188
4.8 实践拓展 195
第5章 图像复原 196
5.1 图像退化模型 196
5.2 线性复原 196
5.2.1 无约束逆滤波 197
5.2.2 有约束维纳滤波 200
5.2.3 有约束最小平方滤波 204
5.2.4 运动模糊图像复原 208
5.3 非线性复原 212
5.3.1 最大后验复原 212
5.3.2 最大熵复原 217
5.3.3 投影复原 222
5.4 盲复原与几何复原 225
5.4.1 盲复原 226
5.4.2 图像几何畸变的校正 230
5.5 综合实例——模糊照片复原 233
5.6 实践拓展 236
第6章 图像重建 238
6.1 图像重建与可视化工具VTK 238
6.1.1 图像重建 238
6.1.2 可视化工具VTK 238
6.2 VTK的安装与配置 242
6.2.1 安装前的准备 242
6.2.2 开始实施安装 242
6.2.3 Visual Studio 2010环境的配置 245
6.2.4 测试开发环境 247
6.3 传统重建算法 248
6.3.1 傅里叶反投影重建 248
6.3.2 卷积反投影重建 250
6.3.3 代数重建 251
6.3.4 超分辨率重建 252
6.4 三维重建数据可视化 253
6.4.1 三维图像的面绘制 254
6.4.2 三维图像的体绘制 257
6.5 综合实例——CT图像重建 259
6.6 实践拓展 263
第7章 图像形态学处理 267
7.1 形态学基本概念 267
7.2 二值图像形态学运算 268
7.2.1 图像腐蚀 268
7.2.2 图像膨胀 271
7.2.3 开运算和闭运算 273
7.2.4 击中/击不中变换 276
7.2.5 骨架抽取 280
7.3 灰度形态学处理 283
7.3.1 灰值腐蚀和灰度膨胀 283
7.3.2 灰值开运算和闭运算 288
7.3.3 灰值形态学梯度 291
7.3.4 Top-Hat变换 292
7.4 综合实例——白细胞检测 294
7.5 实践拓展 298
第8章 图像分割 299
8.1 边缘检测法 299
8.1.1 Roberts算子 299
8.1.2 Sobel算子 301
8.1.3 Prewitt算子 304
8.1.4 Krisch算子 306
8.1.5 Laplacian算子 311
8.1.6 Gauss-Laplacian算子 313
8.2 阈值分割法 315
8.2.1 最大方差阈值分割 315
8.2.2 自适应阈值分割 318
8.3 边界分割法 321
8.3.1 轮廓提取 321
8.3.2 边界跟踪 323
8.4 其他分割法 326
8.4.1 区域生长法 326
8.4.2 彩色分割法 328
8.4.3 分水岭分割法 331
8.5 综合实例—指纹提取 335
8.6 实践拓展 339
第9章 图像匹配 340
9.1 基于像素的匹配 340
9.1.1 归一化积相关灰度匹配 340
9.1.2 序贯相似性检测法匹配 344
9.2 基于特征的匹配 349
9.2.1 不变矩匹配法 349
9.2.2 距离变换匹配法 355
9.2.3 最小均方误差匹配法 362
9.3 综合实例——遥感图像匹配 369
9.4 实践拓展 379
第10章 图像压缩编码 380
10.1 无损压缩 380
10.1.1 Huffman编码 380
10.1.2 Shannon-Fano编码 387
10.1.3 算术编码 393
10.1.4 游程编码 400
10.1.5 线性预测编码 401
10.1.6 位平面编码 402
10.2 有损压缩 405
10.2.1 有损预测编码 405
10.2.2 变换编码 414
10.3 JPEG 2000编码 415
10.3.1 JPEG 2000概述 416
10.3.2 JPEG 2000编码过程 417
10.3.3 JPEG 2000图像压缩码流格式 421
10.4 综合实例——图像编码解码器 423
10.5 实践拓展 436
第11章 图像特效 437
11.1 显示特效 437
11.1.1 扫描特效 438
11.1.2 移动特效 439
11.1.3 百叶窗特效 441
11.1.4 栅条特效 442
11.1.5 马赛克特效 444
11.1.6 雨滴特效 445
11.2 滤镜效果 446
11.2.1 底片效果 446
11.2.2 雕刻效果 448
11.2.3 黑白效果 449
11.2.4 雾化效果 451
11.2.5 素描效果 454
11.3 综合实例——艺术数码相框 456
11.4 实践拓展 470
第12章 OpenCV图像编程 471
12.1 OpenCV概述 471
12.2 OpenCV编程环境 473
12.2.1 OpenCV的获取 473
12.2.2 OpenCV的安装和Visual C++的配置 473
12.3 OpenCV编程基础 475
12.3.1 OpenCV编程规范 476
12.3.2 OpenCV基础数据结构 479
12.3.3 OpenCV动态数据结构 485
12.3.4 OpenCV常用函数 491
12.3.5 在Visual C++环境下使用OpenCV 508
12.4 综合实例——人脸检测 510
12.5 实践拓展 512
第13章 车辆识别系统 514
13.1 车型识别系统 514
13.1.1 车型识别系统原理 514
13.1.2 车型识别系统的功能、结构与流程 520
13.1.3 车型识别系统编程实现 521
13.1.4 车型识别系统运行效果 527
13.2 车牌识别系统 528
13.2.2 车牌识别系统的功能、结构与流程 533
13.2.3 车牌识别系统编程实现 534
13.2.4 车牌识别系统运行效果 557
13.3 实践拓展 557