第1篇 基础篇 1
第1章 机器视觉概述 2
1.1 什么是机器视觉 3
1.2 机器视觉与计算机视觉的区别 3
1.3 机器视觉的工作原理 5
1.4 机器视觉的应用领域 6
第2章 如何做机器视觉项目 8
2.1 项目的前期准备 9
2.1.1 从5个方面初步分析客户需求 9
2.1.2 方案评估与验证 9
2.1.3 签订合同 10
2.2 项目规划 11
2.2.1 定义客户的详细需求 11
2.2.2 制订项目管理计划 11
2.2.3 方案评审 12
2.3 详细设计 12
2.3.1 硬件设备的选择与环境搭建 12
2.3.2 软件开发平台与开发工具的选择 13
2.3.3 机器视觉系统的整体框架与开发流程 13
2.3.4 交互界面设计 14
2.3.5 Halcon与开发工具 14
2.4 项目交付 15
2.4.1 软件功能测试 15
2.4.2 现场调试 15
2.4.3 系统维护 16
第3章 硬件环境搭建 17
3.1 相机 18
3.1.1 相机的主要参数 18
3.1.2 相机的种类 19
3.1.3 相机的接口 20
3.1.4 相机的选型 20
3.2 图像采集卡 22
3.2.1 图像采集卡的种类 22
3.2.2 图像采集卡的选型 23
3.3 镜头 23
3.4 光源 24
3.5 实例:硬件选型 25
第4章 软件图像采集 26
4.1 获取非实时图像 27
4.1.1 读取图像文件 27
4.1.2 读取视频文件 28
4.2 获取实时图像 30
4.2.1 Halcon的图像采集步骤 30
4.2.2 使用Halcon接口连接相机 30
4.2.3 使用相机的SDK采集图像 33
4.2.4 外部触发采集图像 33
4.3 多相机采集图像 34
4.4 Halcon图像的基本结构 35
4.5 实例:采集Halcon图像并进行简单处理 36
第2篇 算法篇 39
第5章 图像预处理 40
5.1 图像的变换与校正 41
5.1.1 二维图像的平移、旋转和缩放 41
5.1.2 图像的仿射变换 42
5.1.3 投影变换 42
5.1.4 实例:透视形变图像校正 43
5.2 感兴趣区域(ROI) 45
5.2.1 ROI的意义 45
5.2.2 创建ROI 45
5.3 图像增强 46
5.3.1 直方图均衡 46
5.3.2 增强对比度 48
5.3.3 处理失焦图像 49
5.4 图像平滑与去噪 49
5.4.1 均值滤波 49
5.4.2 中值滤波 50
5.4.3 高斯滤波 51
5.5 光照不均匀 52
第6章 图像分割 54
6.1 阈值处理 55
6.1.1 全局阈值 55
6.1.2 基于直方图的自动阈值分割方法 56
6.1.3 自动全局阈值分割方法 57
6.1.4 局部阈值分割方法 58
6.1.5 其他阈值分割方法 60
6.2 区域生长法 62
6.2.1 regiongrowing算子 62
6.2.2 regiongrowing_mean算子 64
6.3 分水岭算法 65
第7章 颜色与纹理 67
7.1 图像的颜色 68
7.1.1 图像的色彩空间 68
7.1.2 Bayer图像 69
7.1.3 颜色空间的转换 70
7.2 颜色通道的处理 70
7.2.1 图像的通道 71
7.2.2 访问通道 71
7.2.3 通道分离与合并 71
7.2.4 处理RGB信息 73
7.3 实例:利用颜色信息提取背景相似的字符区域 74
7.4 纹理分析 75
7.4.1 纹理滤波器 75
7.4.2 实例:织物折痕检测 76
第8章 图像的形态学处理 77
8.1 腐蚀与膨胀 78
8.1.1 结构元素 78
8.1.2 腐蚀 78
8.1.3 膨胀 80
8.2 开运算与闭运算 82
8.2.1 开运算 82
8.2.2 闭运算 84
8.3 顶帽运算与底帽运算 85
8.3.1 顶帽运算 86
8.3.2 底帽运算 86
8.3.3 顶帽运算与底帽运算的应用 87
8.4 灰度图像的形态学运算 89
8.4.1 灰度图像与区域的区别 89
8.4.2 灰度图像的形态学运算效果及常用算子 89
8.5 实例:粘连木材图像的目标分割与计数 91
第9章 特征提取 95
9.1 区域形状特征 96
9.1.1 区域的面积和中心点 96
9.1.2 封闭区域(孔洞)的面积 97
9.1.3 根据特征值选择区域 98
9.1.4 根据特征值创建区域 100
9.2 基于灰度值的特征 103
9.2.1 区域的灰度特征值 103
9.2.2 区域的最大、最小灰度值 105
9.2.3 灰度的平均值和偏差 106
9.2.4 灰度区域的面积和中心 107
9.2.5 根据灰度特征值选择区域 107
9.3 基于图像纹理的特征 109
9.3.1 灰度共生矩阵 109
9.3.2 创建灰度共生矩阵 110
9.3.3 用共生矩阵计算灰度值特征 111
9.3.4 计算共生矩阵并导出其灰度值特征 111
9.3.5 实例:提取图像的纹理特征 112
第10章 边缘检测 115
10.1 像素级边缘提取 116
10.1.1 经典的边缘检测算子 116
10.1.2 边缘检测的一般流程 117
10.1.3 sobel_amp算子 117
10.1.4 edges_image算子 120
10.1.5 其他滤波器 122
10.2 亚像素级边缘提取 124
10.2.1 edges_sub_pix算子 125
10.2.2 edges_color_sub_pix算子 126
10.2.3 lines_gauss算子 127
10.3 轮廓处理 129
10.3.1 轮廓的生成 130
10.3.2 轮廓的处理 130
第11章 模板匹配 134
11.1 模板匹配的种类 135
11.1.1 基于灰度值的模板匹配 135
11.1.2 基于相关性的模板匹配 136
11.1.3 基于形状的模板匹配 136
11.1.4 基于组件的模板匹配 137
11.1.5 基于形变的模板匹配 138
11.1.6 基于描述符的模板匹配 138
11.1.7 基于点的模板匹配 139
11.1.8 模板匹配方法总结 139
11.2 图像金字塔 140
11.3 模板图像 142
11.3.1 从参考图像的特定区域中创建模板 142
11.3.2 使用XLD轮廓创建模板 143
11.4 模板匹配的步骤 143
11.4.1 基于灰度值的模板匹配 143
11.4.2 基于相关性的模板匹配 145
11.4.3 基于形状的模板匹配 147
11.4.4 基于组件的模板匹配 149
11.4.5 基于局部形变的模板匹配 150
11.4.6 基于透视形变的模板匹配 152
11.4.7 基于描述符的模板匹配 153
11.4.8 优化匹配速度 155
11.4.9 使用Halcon匹配助手进行匹配 156
11.5 实例:指定区域的形状匹配 159
第12章 图像分类 163
12.1 分类器 164
12.1.1 分类的基础知识 164
12.1.2 MLP分类器 166
12.1.3 SVM分类器 166
12.1.4 GMM分类器 166
12.1.5 k-NN分类器 167
12.1.6 选择合适的分类器 167
12.1.7 选择合适的特征 168
12.1.8 选择合适的训练样本 168
12.2 特征的分类 169
12.2.1 一般步骤 169
12.2.2 MLP分类器 170
12.2.3 SVM分类器 176
12.2.4 GMM分类器 176
12.2.5 k-NN分类器 177
12.3 光学字符识别 178
12.3.1 一般步骤 179
12.3.2 OCR实例 179
第13章 相机标定与三维重建 183
13.1 立体视觉的基础知识 184
13.1.1 三维空间坐标 184
13.1.2 3D位姿 185
13.2 相机标定 186
13.2.1 相机标定的目的和意义 186
13.2.2 标定的参数 187
13.2.3 准备标定板 188
13.2.4 采集标定图像的过程与操作细节 189
13.2.5 使用Halcon标定助手进行标定 190
13.2.6 使用Halcon算子进行标定 193
13.2.7 使用自定义的标定板 194
13.3 双目立体视觉 195
13.3.1 双目立体视觉的原理 195
13.3.2 双目相机的结构 196
13.3.3 双目立体视觉相机的标定 198
13.3.4 校正立体图像对 198
13.3.5 获取视差图 199
13.3.6 计算三维信息 201
13.3.7 多目立体视觉 202
13.4 激光三角测量 203
13.4.1 技术原理 203
13.4.2 使用Halcon标准标定板标定sheet-of-light 204
13.4.3 使用sheet-of-light进行测量 206
13.5 DFF方法 207
第14章 机器视觉中的深度学习 209
14.1 深度学习的基本概念 210
14.1.1 Halcon中深度学习的应用 210
14.1.2 系统需求 210
14.1.3 搭建深度学习环境 210
14.1.4 Halcon的通用深度学习流程 212
14.1.5 数据 213
14.1.6 网络与训练过程 214
14.1.7 随机梯度下降法 215
14.1.8 迁移学习 215
14.1.9 设置训练参数:超参数 216
14.1.10 验证训练结果 217
14.2 分类 218
14.2.1 准备网络和数据 219
14.2.2 训练网络并评估训练过程 219
14.2.3 分类器的应用与评估 220
14.2.4 实际检测 221
14.2.5 评估分类检测的结果 221
14.3 物体检测 222
14.3.1 物体检测的原理 222
14.3.2 物体检测的数据集 223
14.3.3 模型参数 224
14.3.4 评估检测结果 224
14.3.5 物体检测步骤 225
14.4 语义分割 226
14.4.1 语义分割概述 226
14.4.2 语义分割的数据集 227
14.4.3 模型参数设置 228
14.4.4 语义分割的一般流程 228
14.4.5 评估语义分割的结果 230
第3篇 应用案例篇 231
第15章 实例分析:印刷完整性检测 232
15.1 系统结构 233
15.2 检测算法 233
15.2.1 差异模型 234
15.2.2 算法步骤 234
15.2.3 实例分析 236
第16章 实例分析:布料表面缺陷检测 240
16.1 检测算法 241
16.1.1 功能说明 241
16.1.2 算法原理 241
16.2 检测布料表面划痕 241
16.3 检测布料表面破洞 243
16.4 检测周期纹理图像的缺陷 244
16.5 检测周期纹理图像的污染区域 246
第17章 实例分析:仪表数值智能识别 248
17.1 检测算法 249
17.1.1 采集图像与显示 249
17.1.2 图像对齐 249
17.1.3 创建形状模板 251
17.1.4 基于形状特征的模板匹配 251
17.2 指针识别 252
17.2.1 识别指针 252
17.2.2 识别方法 252
17.3 字符识别 254
17.3.1 离线训练 254
17.3.2 在线检测 254
17.4 数值分析 255
17.4.1 确定刻度 255
17.4.2 数值分析 255
第18章 实例分析:双目立体视觉与定位 256
18.1 系统结构 257
18.1.1 硬件组成 257
18.1.2 软件结构 257
18.2 图像采集与标定 258
18.2.1 图像采集 258
18.2.2 相机标定 259
18.2.3 图像校正 261
18.3 双目测距 262
18.3.1 提取视差 262
18.3.2 计算深度和距离 262