欢迎来到机器视觉网! 登录 | 注册

数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)

发布日期:2019-04-11

编辑推荐

  本商品两种印刷封面,随机发货:
  

内容简介

  《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》将理论知识、科学研究和工程实践有机结合起来,内容涉及数字图像处理和识别技术的方方面面,包括图像的点运算、几何变换、空域和频域滤波、小波变换、图像复原、彩色图像处理、形态学处理、图像分割、图像压缩以及图像特征提取等;同时对机器视觉进行了前导性的探究,重点介绍了3种目前在工程技术领域非常流行的分类技术——人工神经网络(ANN)、支持向量机(SVM)和AdaBoost,并在配套给出的识别案例中直击光学字符识别(OCR)、人脸识别和性别分类等热点问题。
  《数字图像处理与机器视觉——Visual C++与Matlab实现(第2版)》结构紧凑,内容深入浅出,讲解图文并茂,适合于计算机、通信和自动化等相关专业的本科生、研究生,以及工作在图像处理和识别领域一线的广大工程技术人员阅读参考。

内页插图

目录

目 录

第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 R2011a简介 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和CImgProcess 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 圆形邻域的LBPP,R算子 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 需要核函数映射情况下的SVM 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