三维视觉
得即高歌失即休,
多愁多恨亦悠悠。
今朝有酒今朝醉,
明日愁来明日愁。
三维视觉
3D Vision
目录
1 前言 ............................................................................... 1
2 基本概念 ........................................................................... 4
2.1 3D 转换和位姿 ................................................................ 4
2.1.1 三维坐标 ............................................................... 4
2.1.2 平移 ................................................................... 5
2.1.3 旋转 ................................................................... 6
2.1.4 刚性变换和相似变换矩阵 ................................................. 9
2.1.5 3D 位姿 ............................................................... 12
2.1.6 对偶四元数 ............................................................ 13
2.2 相机模型和参数 .............................................................. 15
2.2.1 世界坐标系中点映射到像素坐标 .......................................... 16
2.2.2 面扫描相机 ............................................................ 16
2.2.3 倾斜镜头和移轴景深光学原理 ............................................ 24
2.2.4 线阵相机 .............................................................. 25
2.3 3D 物体模型 ................................................................. 27
2.3.1 获取三维物体模型 ...................................................... 27
2.3.2 三维物体模型的内容 .................................................... 31
2.3.3 修改三维物体模型 ...................................................... 32
2.3.4 提取 3D 物体模型的特征 ................................................. 36
2.3.5 三维匹配 .............................................................. 38
2.3.6 可视化三维物体模型 .................................................... 42
3 使用单个相机在指定平面上进行测量 .................................................. 44
3.1 第一个例程 .................................................................. 44
3.2 三维相机标定 ................................................................ 46
3.2.1 创建标定数据模型 ...................................................... 46
3.2.2 指定相机初始内参 ...................................................... 46
3.2.3 描述标定物体 .......................................................... 52
3.2.4 观测多种位姿的标定物体 ................................................ 53
3.2.5 限制标定指定参数 ...................................................... 55
3.2.6 执行标定 .............................................................. 55
3.2.7 获取标定结果 .......................................................... 55
3.2.8 获取标定结果 .......................................................... 57
3.2.9 保存结果并释放标定数据模型 ............................................ 58
3.2.10 排错 ................................................................. 58
3.3 将图像转换到世界坐标系及反向情况 ............................................ 58
3.3.1 主要原理 .............................................................. 59
3.3.2 点的世界坐标系 ........................................................ 59
3.3.3 轮廓的世界坐标系 ...................................................... 60
3.3.4 区域的世界坐标系 ...................................................... 60
3.3.5 将世界坐标转换为图像坐标 .............................................. 60
3.3.6 补偿镜头畸变 .......................................................... 61
3.4 校正图像 .................................................................... 61
3.4.1 将图像转换到世界坐标系 ................................................ 62
1
3.4.2 只进行径向畸变校正 .................................................... 66
3.5 测量非平面物体 .............................................................. 68
4 未知物体三维位姿识别 .............................................................. 70
5 三维立体视觉 ...................................................................... 70
5.1 立体视觉原理 ................................................................ 70
5.1.1 立体视觉系统的安装 .................................................... 72
5.1.2 立体视觉系统解决方案 .................................................. 73
5.1.3 使用倾斜镜头优化焦距 .................................................. 74
5.2 立体视觉系统标定 ............................................................ 75
5.2.1 创建和配置标定数据模型 ................................................ 75
5.2.2 获取标定图像 .......................................................... 76
5.2.3 观测标定物体 .......................................................... 76
5.2.4 观测标定物体 .......................................................... 76
5.3 双目立体视觉系统 ............................................................ 76
5.3.1 Correlation-Based, Multigrid, and Multi-Scanline 三种立体匹配方法比较 .. 77
5.3.2 获取标定结果 .......................................................... 78
5.3.3 获取立体图像 .......................................................... 78
5.3.4 校正图像 .............................................................. 79
5.3.5 重建三维信息 .......................................................... 82
5.3.6 未标定的立体视觉系统 .................................................. 89
5.4 多目立体视觉 ................................................................ 90
5.4.1 初始化立体视觉模型 .................................................... 90
5.4.2 重建三维信息 .......................................................... 92
6 基于 Sheet of Light 的激光三角测量 ................................................. 95
7 聚焦深度测量 ...................................................................... 95
8 机器人视觉 ........................................................................ 95
8.1 支持的配置 .................................................................. 96
8.1.1 关节型机器人和水平关节型机器人 ........................................ 96
8.1.2 相机和标定板与 3D 传感器和 3D 物体 ...................................... 96
8.1.3 相机和标定板与 3D 传感器和 3D 物体 ...................................... 97
8.1.4 提前标定相机与在手眼标定期间标定相机 .................................. 97
8.2 手眼标定原理 ................................................................ 98
8.3 提前标定相机 ................................................................ 99
8.4 准备标定的输入数据 .......................................................... 99
8.4.2 标定物位姿 ........................................................... 100
8.4.2 机械臂位姿 ........................................................... 100
8.5 执行标定 ................................................................... 101
8.6 确定 SCARA Robots 在 Z 方向的平移 ............................................ 102
8.7 使用标定数据 ............................................................... 103
8.7.1 为抓取使用手眼标定(3D 对齐) ......................................... 104
8.7.2 怎样获取物体的三维位姿 ............................................... 104
8.7.3 固定相机的一个应用:抓取螺母 ......................................... 105
9 标定的图像拼接 ................................................................... 108
10 未标定的图像拼接 ................................................................ 108
11 对任意畸变的校正 ................................................................ 108
2
3
3D 视觉
三维测量变得越来越重要,HALCON 提供了许多 3D 测量的方法,这个解决方案指导给你了一个所有这
些方法的概述,它帮助你正确的选择和应用恰当的方法。
不同方法的简单特点在第一章给出,3D 位姿转换和相机模型的描述可以在第 2 章找到。之后,详细描
述执行 3D 测量的方法。
关于这章中的 HDevelop 中的例程可以指定的 HALCON 目录的子目录中找到。
1 前言
利用 HALCON 你可以通过多种方法执行 3D 视觉。主要的应用包括三维位姿识别和三维检测,其中两者
都各自由不同特征的集中不同方法组成,因此,对于一个范围很大的 3D 视觉任务,需要提供一个合适的
解决方案。这个解决方案指导给你提供了这些可以使用的方法的详细信息,包括一些值在特定情形下使用
的辅助方法。
对于 3D 视觉你需要那些基本的知识?
典型的,你需要先标定你的相机在执行一个 3D 任务之前,尤其是你想要获得精确的结果,相机标定是
必须的,因为在镜头畸变了两个像素的情况下提取 1/40 像素的边缘是没有用的。当你使用远心镜头时这
是适用的。但是不要害怕相机的标定,在 HALCON 中这只需要仅仅几行的代码就可以完成。为了准备相机标
定,第 2 章详细介绍了相机模型和参数,之后准确的相机标定在第三章描述。
使用相机标定,你可以将图像处理结果转换到任意的 3D 坐标系中,之后从图像中获取测量信息,不管
物体相对与相机的位置和方向是什么样的。换而言之,你可以执行 3D 测量在任意的物体平面上,这个平
面相对于相机的方向可以是任意的。这很有用,比如在摄像机无法安装成与物体垂直的情况。因此,除了
单纯的相机标定,第三章说明了怎么使用一个相机在指定的平面上执行一个 3D 任务。此外,其展示了怎
样校正一副图像使图像看起来像是由一个没有镜头畸变的且垂直于物体平面的相机获取。这是有用的在
OCR 或物体的识别和定位中,即获取的图像不能相对与训练的图像有太大的畸变。
在你开发视觉应用之前,我们建议你先读第二章和第三章,然后根据你目前的任务,跳到你的具体应
用需要的开发 3D 视觉方法的描述处。
怎样获取一个物体的三维位姿和方向?
一个物体对于给定的 3D 坐标细的位置和方向是需要的,比如拿起和放下的应用(3D 对齐技术),物体
的位置和方向的获取可以通过 109 页第四章中描述的方法。
(1) 根据相关点估计一个已知物体的位姿是一个一般的方法,其包括相机标定和至少 3 个已知坐
标系的标志点,这种方法也被称作“mono 3D”。
(2) HALCON 的 3D 匹配定位物体,基于物体已知的一个 3D 模型。特别的,其自动的在搜索范围内
搜索和 3D 模型相关的物体,获取他们的位姿。模型必须被提供,比如一个 CAD 模型。可用的
方法有基于形状的 3D 匹配(4.2 节),其在二维图像中搜索模型;基于表面的 3D 匹配在 3D 场
景中搜索模型,比如在一组可以作为 3D 模型的 3D 点中,模型可以被获取利用立体或 sheet of
light 的 3D 重构方法。注意基于表面的匹配也被称作“立体匹配”,虽然它只依赖于物体表面
的点。
(3) HALCON 的 3D 基元拟合拟合一个原始的三维模型,比如圆柱、球或三维场景中的平面,比如可
以作为 3D 模型的一系列 3D 点,其可以被获取通过 3D 分割再加立体或 sheet of light 的 3D 重
构方法。
(4) 校准透视匹配定位图像中透视变形的平面物体基于 2D 模型。尤其的,其自动寻找图像中相关
于 2D 模型的物体并确定他们的 3D 位姿。模型从一个模型具有代表性的图像中过去。有用的
1
方法是矫正透视变形匹配,通过边界描述模型;descriptor-based matching 通过一组被叫做兴趣
点的特征点来描述模型。
(5) 圆位姿估计(4.8 节)和矩形位姿估计(4.9 节)以一种非常简单的方法利用圆或矩形的透视
畸变来确定包含圆或矩形的平面物体的位姿
如何测量一个 3D 物体?
3D 物体测量可以有多种不同方法,如果在一个特定的足够的平面,你可以使用相机标定加 2D 测量,
这在(第 3 章描述)
如果需要一个 3D 物体的表面信息或者测量不能减少到一个指定平面上,你可以是用 3D 重建和 3D 测
量方法。即,你使用由 3D 重建返回的 3D 物体的点,表面或者高度信息来测量物体,比如,和指定的点、
平面或高度比较。
图 1 提供了概览关于三维位姿识别和 3D 测量的方法,对于 3D 模型的介绍,请到 2.3 节。
2
怎样重建 3D 物体?
确定任意物体上的 3D 点,可用以下方法:
(1) HALCON 的立体视觉功能(第 5 章)允许确定物体表面任意点的 3D 坐标系使用两个(双目立体
视觉)或多个(多目视觉)从不同角度获取的合适图像(通过不同的相机)。使用多目立体视
觉,你可以重建整个 3D 物体,特别的,你可以从不同面重建它。
(2) 使用 sheet of light 的激光三角法,允许得到物体的高度信息。注意除了一个相机,其他的硬件,
一个激光硬件发生器、一个使物体相对于相机移动的装置,以及激光是需要的。
(3) 聚焦深度测量(第 7 章),使用这种方法,一个高度信息的获取可以通过使用一个远心镜头在
不同的焦点位置处获取的图像来实现。为了变换焦点信息,需要位移变换平台或线性压电平台
等其他硬件。注意,根据焦点位置改变的方向,结果对应于一个高度图像或一个距离图像。高
度图包含一个指定物体或测量平面与物体点之间的距离,而距离图包含物体点和相机间的距
离信息。两者都可以被称作深度图或者“Z image”。
(4) 使用光度立体法(Reference Manual, chapter “3D Reconstruction . Photometric Stereo”),一个高度
图可以被获取通过使用一个远心相机获取的多幅图像,其中相机需要使用至少 3 种不同的光
源,每种光源相对于相机的立体关系需要被知道。注意,高度图只是反映了相对高度,比如使
用光度立体方法,不标定的 3D 重构是可能的。
(5) 除了 HALCON 提供的 3D 重建方法,你可以获取 3D 信息通过指定的 3D 传感器,比如 TOF
相机,或特定的程序使用结构光,这些相机已经被标定,并返回 X、Y、Z 图像。
表 1.2 比较了几种不同 3D 重构方法的特征。
怎样把 3D 视觉延伸到机器人视觉?
3D 视觉的一个典型应用就是机器人视觉,比如使用机器视觉的结果去命令一个机器人,在这种应用中,
你必须执行一个额外的标定,所谓的手眼标定,其确定了相机和机器人坐标系间的关系。此外,这个标定
之只能被执行一次。它的结果允许你快速的将机器视觉结果由相机坐标系转换到机器人坐标系。
3
还需要什么其他任务?
如果你想要观测的物体太大一副图像不能覆盖使用理想的方法,多副图像,每幅图像只是覆盖物体的
一部分,可以被结合为一副大的拼接图像。这可以被完成通过一个精度非常高的标定的相机模型或高度自
动化的对于任意的或甚至变化的图像配置。
如果一副图像表现出的畸变不是通常的透视畸变或镜头畸变,比如,由一个不水平的物体引起的畸变,
一个叫做网格校正的方法可以被用来校正图像。
2 基本概念
2.1 3D 转换和位姿
在开始解释在HALCON中如何实现世界坐标系中的机器视觉应用之前,我们首先了解一下与使用3D坐
标相关的一些基础知识:
(1)如何表示点在空间坐标的转换(平移和旋转);
(2)如何表示空间坐标系;
(3)如何表示某空间坐标系与另外一个空间坐标系之间的相对位置和相对方位;
(4)如何确定某空间坐标系中的一点在另外一个坐标系中的坐标,也就是说如何在不同的坐标系中
进行坐标转换。
实际上,所有这些任务都可以使用同样的手段实现,就是相似变换矩阵和与其等价的 3D 位姿。
2.1.1 三维坐标
三维空间中某个点的位置可以由三个坐标值
表示。这个坐标也可以认为是一个三维向量
(由一个黑体小写字母表示)每个三维空间点的坐标都是相对于某个坐标系,这个坐标系的名称表示为三
维向量或三维坐标的右上角。例如:点 P 在摄像机坐标系(表示为 c)中的坐标以及该点在世界坐标系(表
示为 w)的坐标为:
图2.1表示在测量平面上的某个点P,以及它分别在摄像机坐标系和世界坐标系中的坐标。
4
(),,pppyxzccpcpcpxyPz=wpwwpwpxyPz=