数字图像处理与机器视觉——Visual C++与Matlab实现

978-7-115-22023-3
作者: 张铮 王艳平 薛桂香
译者:
编辑: 刘浩
分类: C++

图书目录:

目 录

第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 图像的空间和灰度级分辨率 5

0.2 数字图像处理与识别 6

0.2.1 从图像处理到图像识别 6

0.2.2 什么是机器视觉 8

0.2.3 数字图像处理和识别的应用实例 8

0.3 数字图像处理的预备知识 8

0.3.1 邻接性、连通性、区域和边界 8

0.3.2 距离度量的几种方法 10

0.3.3 基本的图像操作 10

第 1章 MATLAB图像处理编程基础 12

1.1 Matlab操作简介 12

1.1.1 Matlab软件环境 12

1.1.2 文件操作 13

1.1.3 在线帮助的使用 14

1.1.4 变量的使用 16

1.1.5 矩阵的使用 18

1.1.6 细胞数组(Cell Array)和结构体(Structure) 21

1.1.7 关系运算与逻辑运算 22

1.1.8 常用图像处理数学函数 22

1.1.9 Matlab程序流程控制 23

1.1.10 M文件编写 27

1.1.11 Matlab函数编写 28

1.2 Matlab图像类型及其存储方式 29

1.3 Matlab的图像转换 33

1.4 读取和写入图像文件 35

1.5 图像的显示 37

第 2章 Visual C++图像处理编程基础 39

2.1 位图文件及其C++操作 39

2.1.1 设备无关位图 39

2.1.2 BMP图像文件数据结构 39

2.2 认识CImg类 42

2.2.1 主要成员函数列表 42

2.2.2 公有成员 43

2.3 CImg类基础操作 44

2.3.1 加载和写入图像 44

2.3.2 获得图像基本信息 47

2.3.3 检验有效性 48

2.3.4 按像素操作 49

2.3.5 改变图像大小 50

2.3.6 重载的运算符 51

2.3.7 在屏幕上绘制位图图像 51

2.3.8 新建图像 52

2.3.9 图像类型的判断与转化 54

2.4 DIPDemo工程 55

2.4.1 DIPDemo主界面 55

2.4.2 图像操作和处理类——CImg和CImgProcess 56

2.4.3 文档类——CDIPDemoDoc 57

2.4.4 视图类——CDIPDemoView 58

2.5 CImg应用示例 58

2.5.1 打开图像 58

2.5.2 清空图像 60

2.5.3 像素初始化方法 61

2.5.4 保存图像 61

第3章 图像的点运算 63

3.1 灰度直方图 63

3.1.1 理论基础 63

3.1.2 Matlab实现 64

3.1.3 Visual C++实现 67

3.2 灰度的线性变换 69

3.2.1 理论基础 69

3.2.2 Matlab实现 70

3.2.3 Visual C++实现 72

3.3 灰度对数变换 73

3.3.1 理论基础 74

3.3.2 Matlab实现 74

3.3.3 Visual C++实现 75

3.4 伽玛变换 76

3.4.1 理论基础 76

3.4.2 Matlab实现 77

3.4.3 Visual C++实现 79

3.5 灰度阈值变换 80

3.5.1 理论基础 80

3.5.2 Matlab实现 81

3.5.3 Visual C++实现 82

3.6 分段线性变换 83

3.6.1 理论基础 83

3.6.2 Matlab实现 84

3.6.3 Visual C++实现 88

3.7 直方图均衡化 90

3.7.1 理论基础 90

3.7.2 Matlab实现 91

3.7.3 Visual C++实现 93

3.8 直方图规定化(匹配) 94

3.8.1 理论基础 95

3.8.2 Matlab实现 95

3.8.3 Visual C++实现 97

第4章 图像的几何变换 101

4.1 解决几何变换的一般思路 101

4.2 图像平移 103

4.2.1 图像平移的变换公式 103

4.2.2 图像平移的实现 104

4.3 图像镜像 106

4.3.1 图像镜像的变换公式 106

4.3.2 图像镜像的实现 106

4.4 图像转置 109

4.4.1 图像转置的变换公式 110

4.4.2 图像转置的实现 110

4.5 图像缩放 111

4.5.1 图像缩放的变换公式 112

4.5.2 图像缩放的实现 112

4.6 图像旋转 114

4.6.1 以原点为中心的图像旋转 114

4.6.2 以任意点为中心的图像旋转 115

4.6.3 图像旋转的实现 116

4.7 插值算法 118

4.7.1 **近邻插值 118

4.7.2 双线性插值及其Visual C++实现 119

4.7.3 高阶插值 121

4.8 图像配准 124

4.8.1 什么是图像配准 124

4.8.2 人脸图像配准的Matlab实现 124

4.9 Visual C++实用案例——汽车牌照的投影失真校正 128

4.9.1 系统分析与设计 129

4.9.2 系统实现 130

4.9.3 功能测试 136

第5章 空间域图像增强 140

5.1 图像增强基础 140

5.1.1 为什么要进行图像增强 140

5.1.2 图像增强的分类 140

5.2 空间域滤波 141

5.2.1 空间域滤波和邻域处理 141

5.2.2 边界处理 142

5.2.3 相关和卷积 143

5.2.4 滤波操作的Matlab实现 143

5.2.5 滤波操作的Visual C++实现 146

5.3 图像平滑 148

5.3.1 平均模板及其实现 148

5.3.2 高斯平滑及其实现 151

5.3.3 通用平滑滤波的Visual C++实现 154

5.3.4 自适应平滑滤波 156

5.4 中值滤波 156

5.4.1 性能比较 156

5.4.2 一种改进的中值滤波策略 161

5.4.3 中值滤波的工作原理 162

5.5 图像锐化 162

5.5.1 理论基础 162

5.5.2 基于一阶导数的图像增强——梯度算子 163

5.5.3 基于二阶微分的图像增强——拉普拉斯算子 167

5.5.4 基于一阶与二阶导数的锐化算子的比较 169

5.5.5 高提升滤波及其实现 171

5.5.6 高斯-拉普拉斯变换(Laplacian of a Gaussian, LoG) 175

第6章 频率域图像增强 178

6.1 频率域滤波——与空间域滤波殊途同归 178

6.2 傅立叶变换基础知识 178

6.2.1 傅立叶级数 179

6.2.2 傅立叶变换 181

6.2.3 幅度谱、相位谱和功率谱 183

6.2.4 傅立叶变换的实质——基的转换 185

6.3 快速傅立叶变换(Fast Fourier Transform,FFT)及实现 187

6.3.1 FFT变换的必要性 187

6.3.2 常见的FFT算法 188

6.3.3 按时间抽取的基-2 FFT算法 188

6.3.4 离散反傅立叶变换的快速算法(IFFT) 192

6.3.5 N维快速傅里叶变换(FFTN) 192

6.3.6 Matlab实现 192

6.3.7 Visual C++实现 198

6.4 频域滤波基础 206

6.4.1 频域滤波与空域滤波的关系 206

6.4.2 频域滤波的基本步骤 206

6.4.3 频域滤波的Matlab实现 207

6.4.4 频域滤波的Visual C++实现 208

6.5 频域低通滤波器 210

6.5.1 理想低通滤波器及其实现 210

6.5.2 高斯低通滤波器及其实现 215

6.6 频率域高通滤波器 220

6.6.1 高斯高通滤波器及其实现 220

6.6.2 频域拉普拉斯滤波器及其实现 224

6.7 Matlab综合案例——利用频域滤波消除周期噪声 227

6.7.1 频域带阻滤波器 227

6.7.2 带阻滤波消除周期噪声 229

6.8 频域滤波器与空域滤波器之间的内在联系 232

第7章 彩色图像处理 233

7.1 彩色基础 233

7.1.1 什么是彩色 233

7.1.2 我们眼中的彩色 234

7.1.3 三原色 234

7.1.4 计算机中的颜色表示 235

7.2 彩色模型 236

7.2.1 RGB模型 236

7.2.2 CMY、CMYK模型 238

7.2.3 HSI模型 241

7.2.4 HSV模型 249

7.2.5 YUV模型 254

7.2.6 YIQ模型 260

7.2.7 Lab模型简介 264

7.3 全彩色图像处理基础 264

7.3.1 彩色补偿及其Matlab实现 265

7.3.2 彩色平衡及其Matlab实现 267

第8章 形态学图像处理 270

8.1 预备知识 270

8.2 二值图像中的基本形态学运算 272

8.2.1 腐蚀及其实现 273

8.2.2 膨胀及其实现 280

8.2.3 开运算及其实现 284

8.2.4 闭运算及其实现 287

8.3 二值图像中的形态学应用 289

8.3.1 击中与击不中变换及其实现 289

8.3.2 边界提取与跟踪及其实现 291

8.3.3 区域填充及其Visual C++实现 296

8.3.4 连通分量提取及其实现 299

8.3.5 细化算法及其Visual C++实现 305

8.3.6 像素化算法及其Visual C++实现 310

8.3.7 凸壳及其Visual C++实现 316

8.3.8 bwmorph函数 319

8.4 灰度图像中的基本形态学运算 320

8.4.1 灰度膨胀及其实现 320

8.4.2 灰度腐蚀及其实现 324

8.4.3 灰度开、闭运算及其实现 328

8.4.4 顶帽变换(top-hat)及其实现 331

8.5 小结 334

第9章 图像分割 335

9.1 图像分割概述 335

9.2 边缘检测 336

9.2.1 边缘检测概述 336

9.2.2 常用的边缘检测算子 337

9.2.3 Matlab实现 340

9.2.4 Visual C++实现 343

9.3 霍夫变换 350

9.3.1 直线检测 350

9.3.2 曲线检测 352

9.3.3 任意形状的检测 353

9.3.4 Hough变换直线检测的Matlab实现 354

9.3.5 Hough变换直线检测的Visual C++实现 357

9.4 阈值分割 361

9.4.1 阈值分割方法 361

9.4.2 Matlab实现 364

9.4.3 Visual C++实现 366

9.5 区域分割 368

9.5.1 区域生长及其实现 368

9.5.2 区域分裂与合并及其Matlab实现 373

9.6 小结 378

第 10章 特征提取 379

10.1 图像特征概述 379

10.1.1 什么是图像特征 379

10.1.2 图像特征的分类 379

10.1.3 特征向量及其几何解释 379

10.1.4 特征提取的一般原则 380

10.1.5 特征的评价标准 381

10.2 基本统计特征 381

10.2.1 简单的区域描绘子及其Matlab实现 381

10.2.2 直方图及其统计特征 383

10.2.3 灰度共现矩阵及其Visual C++实现 385

10.3 特征降维 388

10.3.1 维度灾难 388

10.3.2 特征选择简介 389

10.3.3 主成份分析(Principal Component Analysis,PCA) 390

10.3.4 快速PCA及其实现 397

10.4 综合案例——基于PCA的人脸特征抽取 399

10.4.1 数据集简介 399

10.4.2 生成样本矩阵 400

10.4.3 主成份分析 401

10.4.4 主成份脸可视化分析 402

10.4.5 基于主分量的人脸重建 404

10.5 局部二进制模式 406

10.5.1 基本LBP 406

10.5.2 圆形邻域的LBPP,R算子 407

10.5.3 统一化LBP算子——Uniform LBP及其Matlab实现 407

10.5.4 MB-LBP及其Matlab实现 411

10.5.5 图像分区及其Matlab实现 417

第 11章 图像识别初步 421

11.1 模式识别概述 421

11.1.1 模式与模式识别 421

11.1.2 图像识别 422

11.1.3 关键概念 422

11.1.4 识别问题的一般描述 423

11.1.5 过度拟合(Overfit) 424

11.1.6 模式识别系统结构 425

11.1.7 训练/学习方法分类 425

11.2 模式识别方法分类 426

11.2.1 统计模式识别 426

11.2.2 句法模式识别 426

11.2.3 小结 427

11.3 **小距离分类器和模板匹配 428

11.3.1 **小距离分类器及其Matlab实现 428

11.3.2 基于相关的模板匹配 430

11.3.3 相关匹配的计算效率 436

第 12章 人工神经网络 438

12.1 人工神经网络简介 438

12.1.1 仿生学动机 438

12.1.2 人工神经网络的应用实例 440

12.2 人工神经网络的理论基础 441

12.2.1 训练线性单元的梯度下降算法 441

12.2.2 多层人工神经网络 447

12.2.3 sigmoid单元 448

12.2.4 反向传播(BP,Back Propogation)算法 450

12.2.5 训练中的问题 453

12.3 基于ANN的数字字符识别系统DigitRec——分析与设计 454

12.3.1 任务描述 454

12.3.2 数据集简介 455

12.3.3 设计要点 455

12.4 基于ANN的数字字符识别系统DigitRec——实现 457

12.4.1 构建神经元结构——SNeuron 457

12.4.2 构建神经网络网络层——SNeuronLayer 459

12.4.3 神经网络信息头——NEURALNET_HEADER 460

12.4.4 神经网络类——CNeuralNet 460

12.4.5 神经网络的训练数据类——CNeural Data 473

12.4.6 误差跟踪类——CValueTrack 478

12.4.7 训练对话框类——CTrainDlg 481

12.4.8 测试对话框类——CTestDlg 484

12.5 基于ANN的数字字符识别系统DigitRec——测试 487

12.5.1 训练 488

12.5.2 测试 489

12.6 改进的DigitRec 490

12.6.1 数字字符图像的预处理类——COCRImage Process 490

12.6.2 输入图像的预处理——实现 491

12.6.3 输入图像的预处理——测试 504

12.7 神经网络参数对训练和识别的影响 506

12.7.1 隐藏层单元数目的影响 506

12.7.2 学习率的影响 508

12.7.3 训练时代数目的影响 508

第 13章 支持向量机 511

13.1 支持向量机的分类思想 511

13.1.1 分类模型的选择 511

13.1.2 模型参数的选择 512

13.2 支持向量机的理论基础 512

13.2.1 线性可分情况下的SVM 512

13.2.2 非线性可分情况下的C-SVM 516

13.2.3 需要核函数映射情况下的SVM 518

13.2.4 推广到多类问题 521

13.3 SVM的Matlab实现 523

13.3.1 训练——svmtrain 523

13.3.2 分类——svmclassify 525

13.3.3 应用实例 526

13.4 综合案例——基于PCA和SVM的人脸识别系统 526

13.4.1 人脸识别简介 527

13.4.2 前期处理 527

13.4.3 数据规格化(Scaling) 528

13.4.4 核函数的选择 531

13.4.5 参数选择 532

13.4.6 构建多类SVM分类器 535

13.4.7 实验结果 537

详情

本书试图将理论知识、研究实验和应用实例有机结合起来,内容涉及数字图像处理领域的诸多方面,并且对于机器视觉的研究内容和研究方法给出了前导性介绍,旨在为有志投身图像处理和机器视觉研究领域的朋友提供一本注重思维历练和实际应用的从入门到深入的图书。

图书摘要

相关图书

代码审计——C/C++实践
代码审计——C/C++实践
CMake构建实战:项目开发卷
CMake构建实战:项目开发卷
C++ Templates(第2版)中文版
C++ Templates(第2版)中文版
C/C++代码调试的艺术(第2版)
C/C++代码调试的艺术(第2版)
计算机图形学编程(使用OpenGL和C++)(第2版)
计算机图形学编程(使用OpenGL和C++)(第2版)
Qt 6 C++开发指南
Qt 6 C++开发指南

相关文章

相关课程