第0章 初识数字图像处理与机器视觉 1
0.1数字图像 1
0.1.1什么是数字图像 1
0.1.2数字图像的显示 1
0.1.3数字图像的分类 2
0.1.4数字图像的实质 3
0.1.5数字图像的表示 4
0.1.6图像的空间和灰度级分辨率 4
0.2数字图像处理与机器视觉 5
0.2.1从图像处理到图像识别 5
0.2.2什么是机器视觉 6
0.2.3数字图像处理和识别的应用实例 7
0.3数字图像处理的预备知识 8
0.3.1邻接性、连通性、区域和边界 8
0.3.2距离度量的几种方法 9
0.3.3基本的图像操作 10
第1章 MATLAB数字图像处理编程基础 11
1.1 MATLAB R2011 a简介 11
1.1.1 MATLAB软件环境 11
1.1.2文件操作 12
1.1.3在线帮助的使用 13
1.1.4变量的使用 15
1.1.5矩阵的使用 17
1.1.6细胞数组(Cell Array)和结构体(Structure) 19
1.1.7关系运算与逻辑运算 20
1.1.8常用图像处理数学函数 21
1.1.9 MATLAB程序流程控制 22
1.1.10 M文件编写 25
1.1.11 MATLAB函数编写 26
1.2 MATLAB图像类型及其存储方式 28
1.3 MATLAB的图像转换 30
1.4读取和写入图像文件 32
1.5图像的显示 34
第2章 Visual C+图像处理编程基础 37
2.1位图文件及其C++操作 37
2.1.1设备无关位图 37
2.1.2 BMP图像文件数据结构 37
2.2认识CImg类 40
2.2.1主要成员函数列表 40
2.2.2公有成员 41
2.3 CImg类基础操作 41
2.3.1加载和写入图像 41
2.3.2获得图像基本信息 44
2.3.3检验有效性 45
2.3.4按像素操作 45
2.3.5改变图像大小 47
2.3.6重载的运算符 47
2.3.7在屏幕上绘制位图图像 48
2.3.8新建图像 48
2.3.9图像类型的判断与转化 50
2.4 DIPDemo工程 51
2.4.1 DIPDemo主界面 51
2.4.2图像操作和处理类——CImg和ClmgProcess 52
2.4.3文档类——CDIPDemoDoc 53
2.4.4视图类——CDIPDemoView 53
2.5 CImg 应用示例 54
2.5.1打开图像 54
2.5.2清空图像 55
2.5.3像素初始化方法 56
2.5.4保存图像 57
第3章 图像的点运算 58
3.1灰度直方图 58
3.1.1理论基础 58
3.1.2 MATLAB实现 59
3.1.3 Visual C+++实现 62
3.2灰度的线性变换 63
3.2.1理论基础 63
3.2.2 MATLAB程序的实现 64
3.2.3 Visual C+++实现 66
3.3灰度对数变换 67
3.3.1理论基础 67
3.3.2 MATLAB实现 68
3.3.3 Visual C+++实现 69
3.4伽玛变换 70
3.4.1理论基础 70
3.4.2 MATLAB编程实现 70
3.4.3 Visual C+++实现 72
3.5灰度阈值变换 73
3.5.1理论基础 73
3.5.2 MATLAB编程实现 74
3.5.3 Visual C+++实现 75
3.6分段线性变换 76
3.6.1理论基础 76
3.6.2 MATLAB编程实现 77
3.6.3 Visual C+++编程实现 81
3.7直方图均衡化 82
3.7.1理论基础 82
3.7.2 MATLAB编程实现 83
3.7.3 Visual C+++实现 85
3.8直方图规定化(匹配) 86
3.8.1理论基础 86
3.8.2 MATLAB编程实现 87
3.8.3 Visual C+++实现 89
第4章 图像的几何变换 92
4.1解决几何变换的一般思路 92
4.2图像平移 94
4.2.1图像平移的变换公式 94
4.2.2图像平移的实现 94
4.3图像镜像 96
4.3.1图像镜像的变换公式 96
4.3.2图像镜像的实现 97
4.4图像转置 99
4.4.1图像转置的变换公式 99
4.4.2图像转置的实现 99
4.5图像缩放 101
4.5.1图像缩放的变换公式 101
4.5.2图像缩放的实现 101
4.6图像旋转 103
4.6.1以原点为中心的图像旋转 103
4.6.2以任意点为中心的图像旋转 104
4.6.3图像旋转的实现 105
4.7插值算法 106
4.7.1最近邻插值 106
4.7.2双线性插值 107
4.7.3高阶插值 109
4.8图像配准简介 111
4.8.1图像配准 112
4.8.2人脸图像配准的MATLAB实现 112
4.9 Visual C++高级应用实例——汽车牌照的投影失真校正 115
4.9.1系统分析与设计 116
4.9.2系统实现 117
4.9.3功能测试 122
第5章 空间域图像增强 126
5.1图像增强基础 126
5.2空间域滤波 127
5.3图像平滑 133
5.3.1平均模板及其实现 133
5.3.2高斯平滑及其实现 134
5.3.3通用平滑滤波的Visual C+++实现 138
5.3.4自适应平滑滤波 139
5.4中值滤波 140
5.4.1性能比较 140
5.4.2一种改进的中值滤波策略 144
5.4.3中值滤波的工作原理 145
5.5图像锐化 145
5.5.1理论基础 145
5.5.2基于一阶导数的图像增强——梯度算子 145
5.5.3基于二阶微分的图像增强——拉普拉斯算子 149
5.5.4基于一阶与二阶导数的锐化算子的比较 151
5.5.5高提升滤波及其实现 152
5.5.6高斯-拉普拉斯变换(Laplacian of a Gaussian, LoG) 156
第6章 频率域图像增强 159
6.1频率域滤波——与空间域滤波殊途同归 159
6.2傅里叶变换基础知识 159
6.2.1傅里叶级数 159
6.2.2傅里叶变换 161
6.2.3幅度谱、相位谱和功率谱 163
6.2.4傅里叶变换的实质——基的转换 165
6.3快速傅里叶变换及实现 166
6.3.1 FFT变换的必要性 167
6.3.2常见的FFT算法 167
6.3.3按时间抽取的基-2 FFT算法 168
6.3.4离散反傅里叶变换的快速算法 171
6.3.5 N维快速傅里叶变换 171
6.3.6 MATLAB实现 171
6.3.7 Visual C+++实现 175
6.4频域滤波基础 183
6.4.1频域滤波与空域滤波的关系 183
6.4.2频域滤波的基本步骤 184
6.4.3频域滤波的MATLAB实现 184
6.4.4频域滤波的Visual C+++实现 185
6.5频率域低通滤波器 187
6.5.1理想低通滤波器及其实现 187
6.5.2高斯低通滤波器及其实现 191
6.6频率域高通滤波器 195
6.6.1高斯高通滤波器及其实现 195
6.6.2频域拉普拉斯滤波器及其实现 198
6.7 MATLAB综合案例——利用频域滤波消除周期噪声 201
6.7.1频域带阻滤波器 201
6.7.2带阻滤波器消除周期噪声 202
6.8频域滤波器与空域滤波器之间的内在联系 204
附录 205
第7章 小波变换 207
7.1多分辨率分析 207
7.1.1多分辨率框架 207
7.1.2分解与重构的实现 213
7.1.3图像处理中分解与重构的实现 214
7.2 Gabor多分辨率分析 220
7.3常见小波分析 223
7.3.1 Haar小波 223
7.3.2 Daubechies小波 225
7.4高维小波 227
第8章 图像复原 230
8.1图像复原的理论模型 230
8.1.1图像复原的基本概念 230
8.1.2图像复原的一般模型 232
8.2噪声模型 232
8.2.1噪声种类 233
8.2.2 MATLAB实现 237
8.2.3 Visual C+++实现 239
8.3空间滤波 244
8.3.1空域滤波原理 244
8.3.2 MATLAB实现 245
8.3.3 Visual C+++实现 247
8.4逆滤波复原 250
8.4.1逆滤波原理 250
8.4.2 MATLAB实现 251
8.4.3 Visual C+++实现 253
8.5维纳滤波复原 256
8.5.1维纳滤波原理 256
8.5.2 MATLAB实现 257
8.5.3 Visual C+++实现 260
8.6有约束最小二乘复原 262
8.7 Lucky-Richardson复原 265
8.8盲去卷积图像复原 266
8.9 MATLAB图像复原综合案例——去除照片的运动模糊 268
第9章 彩色图像处理 270
9.1彩色基础 270
9.2彩色模型 272
9.2.1 RGB模型 272
9.2.2 CMY.CMYK模型 274
9.2.3 HSI模型 276
9.2.4 HSV模型 282
9.2.5 YUV模型 287
9.2.6 YIQ模型 292
9.2.7 Lab模型简介 296
9.3全彩色图像处理基础 296
9.3.1彩色补偿及其MATLAB实现 296
9.3.2彩色平衡及其MATLAB实现 298
第10章 图像压缩 300
10.1图像压缩理论 300
10.1.1图像冗余 300
10.1.2香农定理 303
10.1.3保真度评价 304
10.2 DCT变换与量化 304
10.2.1 DCT变换原理 304
10.2.2量化 306
10.2.3 DCT变换和量化的Visual C+++实现 307
10.3预测编码 312
10.4霍夫曼编码 313
10.4.1霍夫曼编码原理 313
10.4.2霍夫曼编码的Visual C+++实现 316
10.5算术编码 324
10.5.1算术编码原理 324
10.5.2算术编码的Visual C+++实现 327
10.6游程编码 330
10.7 JPEG和JPEG2000压缩标准 331
10.8 Visual C++综合案例——类似JPEG的图像压缩 332
第11章 形态学图像处理 341
11.1预备知识 341
11.2二值图像中的基本形态学运算 342
11.2.1腐蚀及其实现 343
11.2.2膨胀及其实现 350
11.2.3开运算及其实现 353
11.2.4闭运算及其实现 356
11.3二值图像中的形态学应用 357
11.3.1击中与击不中变换及其实现 357
11.3.2边界提取与跟踪及其实现 359
11.3.3区域填充及其Visual C+++实现 363
11.3.4连通分量提取及其实现 365
11.3.5细化算法及其Visual C+++实现 370
11.3.6像素化算法及其Visual C+++实现 374
11.3.7凸壳及其Visual C+++实现 379
11.3.8 bwmorph()函数 382
11.4灰度图像中的基本形态学运算 383
11.4.1灰度膨胀及其实现 383
11.4.2灰度腐蚀及其实现 386
11.4.3灰度开、闭运算及其实现 389
11.4.4顶帽变换(top-hat)及其实现 392
小结 394
第12章 图像分割 395
12.1图像分割概述 395
12.2边缘检测 396
12.2.1边缘检测概述 396
12.2.2常用的边缘检测算子 397
12.2.3 MATLAB实现 400
12.2.4 Visual C+++实现 402
12.3霍夫变换 409
12.3.1直线检测 409
12.3.2曲线检测 411
12.3.3任意形状的检测 411
12.3.4 Hough变换直线检测的MATLAB实现 412
12.3.5 Hough变换直线检测的Visual C+++实现 415
12.4阈值分割 418
12.4.1阈值分割方法 419
12.4.2 MATLAB实现 422
12.4.3 Visual C+++实现 423
12.5区域分割 425
12.5.1区域生长及其实现 425
12.5.2区域分裂与合并及其MATLAB实现 429
12.6小结 433
第13章 特征提取 434
13.1图像特征概述 434
13.2基本统计特征 436
13.2.1简单的区域描绘子及其MATLAB实现 436
13.2.2直方图及其统计特征 437
13.2.3灰度共现矩阵及其Visual C+++实现 439
13.3特征降维 442
13.3.1维度灾难 442
13.3.2特征选择简介 443
13.3.3主成分分析 444
13.3.4快速PCA及其实现 450
13.4综合案例——基于PCA的人脸特征抽取 451
13.4.1数据集简介 452
13.4.2生成样本矩-阵 452
13.4.3主成分分析 453
13.4.4主成分脸可视化分析 454
13.4.5基于主分量的人脸重建 456
13.5局部二进制模式 457
13.5.1基本LBP 457
13.5.2圆形邻域的LBP PR算子 458
13.5.3统一化LBP算子——Uniform LBP及其MATLAB实现 459
13.5.4 MB-LBP及其MATLAB实现 462
13.5.5图像分区及其MATLAB实现 467
第14章 图像识别初步 470
14.1模式识别概述 470
14.2模式识别方法分类 474
14.3最小距离分类器和模板匹配 476
14.3.1最小距离分类器及其MATLAB实现 476
14.3.2基于相关的模板匹配 477
14.3.3相关匹配的计算效率 482
第15章 人工神经网络 484
15.1人工神经网络简介 484
15.1.1仿生学动机 484
15.1.2人工神经网络的应用实例 486
15.2人工神经网络的理论基础 487
15.2.1训练线性单元的梯度下降算法 487
15.2.2多层人工神经网络 492
15.2.3 Sigmoid单元 492
15.2.4反向传播(Back Propagation,BP)算法 493
15.2.5训练中的问题 496
15.3基于ANN的数字字符识别系统DigitRec——分析与设计 498
15.3.1任务描述 498
15.3.2数据集简介 498
15.3.3设计要点 498
15.4基于ANN的数字字符识别系统——DigitRec的实现 500
15.4.1构建神经元结构——SNeuron 500
15.4.2构建神经网络网络层——SNeuronLayer 501
15.4.3神经网络信息头——NeuralNet Header 502
15.4.4神经网络类——CNeuralNet 502
15.4.5神经网络的训练数据类——CNeuralData 513
15.4.6误差跟踪类——CValueTrack 518
15.4.7训练对话框类——CTrainDlg 520
15.4.8测试对话框类——CTestDlg 523
15.5基于ANN的数字字符识别系统—— DigitRec的测试 526
15.5.1训练 526
15.5.2测试 526
15.6改进的DigitRec 527
15.6.1数字字符图像的预处理类——COCRImageProcess 527
15.6.2输入图像的预处理——实现 528
15.6.3输入图像的预处理——测试 539
15.7神经网络参数对训练和识别的影响 540
15.7.1隐藏层单元数目的影响 540
15.7.2学习率的影响 541
15.7.3训练时代数目的影响 542
第16章 支持向量机 544
16.1支持向量机的分类思想 544
16.2支持向量机的理论基础 545
16.2.1线性可分情况下的SVM 545
16.2.2非线性可分情况下的C-SVM 548
16.2.3需要核函数映射情况下的S VM 550
16.2.4推广到多类问题 553
16.3 SVM的MATLAB实现 554
16.3.1训练——svmtrain 555
16.3.2分类——svmclassify 556
16.3.3应用实例 557
16.4综合案例——基于PCA和SVM的人脸识别系统 557
16.4.1人脸识别简介 558
16.4.2前期处理 558
16.4.3数据规格化 558
16.4.4核函数的选择 561
16.4.5参数选择 562
16.4.6构建多类SVM分类器 564
16.4.7实验结果 566
16.5 SVM在线资源 571
16.5.1 MATLAB的SVM工具箱 572
16.5.2 LibSVM的简介 572
第17章 AdaBoost 573
17.1 AdaBoost分类思想 573
17.2 AdaBoost理论基础 575
17.3构建AdaBoost的MATLAB工具箱 577
17.4 MATLAB综合案例——基于AdaBoost的面部图像男女性别分类 580
17.4.1关于数据集 580
17.4.2数据的预处理 581
17.4.3算法流程实现 581
参考文献 583