本书主要介绍机器视觉系统的概念、原理、视觉系统组成、数字图像处理算法及视觉应用,共分为三部分:第一部分快速入门,介绍了机器视觉系统的组成、图像采集系统;第二部分图像处理算法,介绍了视觉图像处理相关算法及应用;第三部分机器视觉应用,介绍了机器视觉的典型应用案例。
全书理论联系实际,从图像采集部分开始到数字图像处理部分,除了介绍相关的理论知识外,结合具体的实际案例以及HALCON 编程,提供了明确的使用方法。对每一种数字图像处理算法在机器视觉系统中的应用,都通过实例说明了具体的应用方法和注意事项,并通过具体案例的学习加深对内容的理解。
本书可作为图像处理、机器视觉或计算机视觉相关科研人员和工程技术人员的参考用书,也可作为高等教育学校相关专业的教材使用,也适用于对图像处理、机器视觉或计算机视觉感兴趣的所有读者。
第一部分 快速入门
第1章 绪论 3
1.1 机器视觉的概念 3
1.2 机器视觉系统的组成 4
1.3 机器视觉系统的特点 4
1.4 机器视觉系统应用领域 5
1.4.1 在工业中的应用 6
1.4.2 在农业中的应用 6
1.4.3 在医学中的应用 7
1.4.4 在军工及制导方面的应用 8
1.4.5 在其他方面的应用 8
1.5 机器视觉相关图像处理库 8
1.5.1 OpenCV 9
1.5.2 VisionPro 9
1.5.3 HALCON 10
1.5.4 其他图像处理库 10
第2章 视觉图像采集设备 11
2.1 光源 11
2.1.1 电磁辐射 11
2.1.2 光谱特性及与被测物关系 12
2.1.3 光源类型 13
2.1.4 光源形状及照明方式 13
2.2 镜头 17
2.2.1 高斯光学 18
2.2.2 远心镜头 19
2.2.3 镜头的主要参数 19
2.3 摄像机 21
2.3.1 摄像机传感器类型 22
2.3.2 摄像机主要参数 22
2.3.3 摄像机与计算机的接口 24
2.3.4 摄像机与镜头的接口 26
第3章 数字图像基础 27
3.1 数字图像的产生 27
3.1.1 图像数字化 27
3.1.2 数字图像的表示 27
3.1.3 图像文件格式 28
3.2 数字图像分类 29
3.2.1 彩色图像 29
3.2.2 二值图像 30
3.2.3 灰度图像 30
3.2.4 索引图像 32
3.3 像素间的基本关系 32
3.3.1 相邻像素和图像邻域 32
3.3.2 连通域 33
3.3.3 图像中的距离度量方法 33
3.4 数字图像基本性质 34
3.5 图像的基本特征 35
3.5.1 直方图 35
3.5.2 图像的熵 36
3.5.3 其他统计特征 37
3.6 图像处理方法 37
第4章 HALCON 入门 39
4.1 认识HALCON 39
4.1.1 HALCON 界面 39
4.1.2 菜单栏 40
4.1.3 工具栏 40
4.1.4 子窗口 41
4.2 HALCON 编程入门 43
4.2.1 图像相关变量 43
4.2.2 控制变量 46
4.2.3 程序控制语句 50
4.3 浏览HALCON 例程及第一个HALCON 程序 51
第二部分 图像处理算法
第5章 图像常用数学运算 57
5.1 代数运算 57
5.1.1 加法运算:add_image 57
5.1.2 减法运算:sub_image、abs_diff_image 58
5.1.3 乘法运算:mult_image 59
5.1.4 除法运算:div_image 59
5.1.5 应用实例 60
5.2 位运算 62
5.2.1 “与”运算:bit_and 62
5.2.2 “或”运算:bit_or 62
5.2.3 “非”运算:bit_not 63
5.2.4 “异或”运算:bit_ xor 63
5.2.5 切片运算:bit_ slice 63
5.2.6 其它位运算 64
5.2.7 应用实例 64
5.3 图像插值方法 66
5.4 几何变换 67
5.4.1 仿射变换原理 67
5.4.2 仿射变换相关算子 68
5.4.3 投影变换原理 69
5.4.4 投影变换算子:projective_trans_image 70
5.4.5 极坐标变换:polar_trans_image_ext 70
5.4.6 应用实例 71
第6章 图像预处理方法 74
6.1 图像增强 74
6.1.1 线性变换:scale_image 74
6.1.2 最大值范围线性变换:scale_image_max 75
6.1.3 分段线性变换:scale_image_range 75
6.1.4 对数变换:log_image 76
6.1.5 图像开方:sqrt_image 77
6.1.6 幂次变换:pow_image 77
6.1.7 直方图均衡化:equ_histo_image 78
6.1.8 边缘增强:emphasize 79
6.1.9 改善光照增强:illuminate 80
6.1.10 图像增强应用实例 80
6.2 图像平滑滤波 82
6.2.1 均值滤波:mean_image 83
6.2.2 中值滤波:median_image 84
6.2.3 高斯滤波:gauss_filter 85
6.2.4 双边滤波:bilateral_filter 86
6.2.5 各向异性扩散滤波:anisotropic_diffusion 87
6.2.6 导向滤波:guided_filter 88
6.2.7 频域变换及滤波:rft_generic 88
6.2.8 图像平滑滤波实例 89
6.3 边缘提取方法 93
6.3.1 图像梯度的概念 93
6.3.2 sobel 算子:sobel_dir 94
6.3.3 kirsch 算子:kirsch_dir 94
6.3.4 prewitt 算子:prewitt_dir. 95
6.3.5 frei 算子:frei_dir 95
6.3.6 roberts 算子:roberts 96
6.3.7 robinson 算子:robinson_dir 96
6.3.8 laplace 算子:laplace 97
6.3.9 高斯拉普拉斯算子:laplace_of_gauss 97
6.3.10 高斯差分:diff_of_gauss 98
6.3.11 canny 算子:edges_image 99
6.3.12 边缘提取应用实例 100
6.4 图像的数学形态学分析 103
6.4.1 形态学运算基础 103
6.4.2 膨胀运算:dilation_circle 104
6.4.3 腐蚀运算:erosion_circle 105
6.4.4 开运算:opening_circle 105
6.4.5 闭运算:closing_circle 106
6.4.6 击中击不中:hit_or_miss 107
6.4.7 其它形态学算子 108
6.4.8 形态学应用实例 111
6.5 图像分割 116
6.5.1 全局手动阈值分割:threshold 116
6.5.2 Otsu 分割:binary_threshold 117
6.5.3 自动阈值分割:auto_threshold 118
6.5.4 直方图阈值分割:histo_to_thresh 119
6.5.5 字符阈值分割:char_threshold 119
6.5.6 局部阈值分割:local_threshold 120
6.5.7 动态阈值分割:dyn_threshold 121
6.5.8 可变阈值分割:var_threshold 121
6.5.9 区域生长分割:regiongrowing 122
6.5.10 分水岭分割:watersheds 123
6.5.11 最大稳定极值区域:segment_image_mser 124
6.5.12 图像分割实例 125
第7章 模板匹配 131
7.1 模板匹配相似度计算方法 131
7.2 HALCON 模板匹配方法 133
7.2.1 快速匹配:fast_match 133
7.2.2 最佳匹配:best_match 134
7.2.3 相关匹配:find_ncc_model 134
7.3 模板匹配中的问题 135
7.3.1 匹配效率问题 135
7.3.2 缩放与旋转问题 136
7.4 稳定的匹配方法 137
7.4.1 基于边缘的匹配 137
7.4.2 形状匹配:find_shape_model 138
7.5 其他匹配方法介绍 140
7.5.1 利用hu 不变矩进行匹配 140
7.5.2 Hausdorff 距离匹配 141
7.6 模板匹配实例 142
第8章 图像特征 151
8.1 几何特征检测 151
8.1.1 霍夫变换直线检测:hough_lines 152
8.1.2 霍夫变换圆检测:hough_circles 153
8.1.3 霍夫几何特征检测实例 154
8.2 常用几何特征拟合 155
8.2.1 直线拟合:fit_line_contour_xld 156
8.2.2 圆拟合:fit_circle_contour_xld 157
8.2.3 椭圆拟合:fit_ellipse_contour_xld 158
8.2.4 几何特征拟合实例 158
8.3 特征点检测 160
8.3.1 Harris 角点检测:points_harris 160
8.3.2 FAST 特征点检测 162
8.3.3 SIFT 特征检测 164
8.3.4 特征点检测实例 165
8.4 HOG 特征 167
8.5 纹理特征 168
8.5.1 灰度共生矩阵:gen_cooc_matrix 168
8.5.2 LBP 特征 169
8.5.3 纹理特征实例 171
第9章 机器学习 173
9.1 k-近邻算法 173
9.1.1 k-近邻算法原理 173
9.1.2 k-近邻实例 174
9.2 多层感知机 176
9.2.1 多层感知机原理 176
9.2.2 多层感知机实例 178
9.3 支持向量机 180
9.3.1 支持向量机原理 180
9.3.2 支持向量机实例 182
9.4 卷积神经网络 184
9.4.1 卷积神经网络原理 184
9.4.2 HALCON 卷积神经网络实例解读 186
第10章 摄像机标定和手眼标定 188
10.1 摄像机标定原理 188
10.1.1 坐标系转换关系 188
10.1.2 镜头畸变 191
10.2 标定过程 192
10.3 手眼标定 194
10.3.1 眼在手上 195
10.3.2 眼在手外 195
10.4 利用摄像机标定进行长度测量实例 196
第三部分 机器视觉应用
第11章 缺陷检测 201
11.1 缺陷类别 201
11.2 药片缺陷检测 202
11.3 划痕缺陷检测 205
11.4 织物瑕疵缺陷检测 207
第12章 模式识别 211
12.1 字符识别 211
12.1.1 产品上的序列号识别 211
12.1.2 点阵字符识别 213
12.2 条形码及二维码识别 217
12.2.1 条形码识别 217
12.2.2 二维码识别 219
12.3 产品分类 220
12.3.1 利用多层感知机对金属零件分类 220
12.3.2 利用支持向量机对药品分类 223
第13章 视觉测量 228
13.1 芯片引脚距离测量 228
13.2 圆弧测量 231
第14章 机器视觉系统搭建 234
14.1 HALCON 与C#混合编程开发离线字符识别系统 234
14.1.1 算法设计 234
14.1.2 系统设计与算法集成 238
14.2 搭建一个在线检测视觉图像采集系统 246
14.2.1 在线图像采集方法 246
14.2.2 利用摄像机SDK 实现在线视觉系统图像采集 249
参考文献 259