在实际的检测的场景中,拍摄超长、超大或曲面物件时,单台3D相机无法一次获得完整点云图,用户需要通过单台多次或多台单次拍摄之后进行图像拼接。
为实现图像拼接,则需要实现矩阵变换功能控制工程网版权所有,常规操作是:用户通过二次开发赋予点云相应坐标,完成图像拼接等工作任务。
本文我们将从向量和矩阵开始,用数学解释物体之间的坐标系的转换到实际现实中www.cechina.cn,如何在3D相机中进行矩阵变换,统一各个传感器的坐标系,最终实现点云图像的拼接。
向量和矩阵
向量最基本的定义包含方向(Direction)和大小(Magnitude,也叫做强度或长度)。向量可以是多维的。向量的起点一般默认设置为(0控制工程网版权所有,0控制工程网版权所有,0),这个时候向量指向就变为一个点,这个向量就可以称“位置向量”。
我们使用勾股定理来获取向量的长度/大小。如果你把向量的x与y分量画出来,该向量会和x与y分量为边形成一个三角形。有一个特殊类型的向量叫做单位向量。单位向量有一个特别的性质——它的长度是1。我们可以用任意向量的每个分量除以向量的长度得到它的单位向量,我们把这种方法叫做一个向量的标准化。
简单来说矩阵就是一个矩形的数字、符号或表达式数组。矩阵中每一项叫做矩阵的元素(Element)。矩阵可以通过(i,j)进行索引,i是行,j是列。单位矩阵是一个除了对角线以外都是0的N×N矩阵。常见的变换矩阵有三种形式:缩放、平移和旋转(沿X轴、Y轴和Z轴)。
位置和姿态
通常情况下,我们可以利用位置和姿态去描述一个物体在三维坐标系下的状态:
1.在对象物体上建立一个自身坐标系;
2.计算此坐标系和原始坐标系的XYZ偏移和旋转量;
3.得到一个六个元素的数组用以描述此物体在原始坐系下的位姿。
点云坐标系和世界坐标系
通常单台3D相机获得点云数据的位置坐标XYZ是基于相机自身的坐标系下,它的原点是标定的零点,若存在多台3D相机,则需要获得各台相机在世界坐标系下的位置,并得到各台3D相机点云坐标系到世界坐标系的变换矩阵,通过矩阵变换的方式,将各台相机的点云坐标统一在世界坐标系下。
盛相Sizector S系列技术平台的矩阵变换功能
Sizector S系列技术平台提供了硬件级别的矩阵变换功能控制工程网版权所有,通过此功能控制工程网版权所有,基于该平台的产品可以直接输出矩阵变换后的点云数据:
· 可以通过拖动条进行XYZ比列缩放、XYZ旋转和XYZ轴平移的矩阵变换;
· 下方3x4是最终变换矩阵M=Ts(缩放矩阵)X Tr(旋转矩阵)X Tt(平移矩阵)。
多台3D 相机下的统一坐标系 S162170单台3D相机拍摄结果
矩阵变换功能的实际应用
一个典型的需求是获得完整的电池顶盖高精度点云图像。难点在于由于被测物过长,难以使用一台相机就获得完整高精度图像。
传统3D相机矩阵变换的实现通常需要基于电脑计算,因此整体处理速度较慢。我们将搭建两台Sizector 3D相机,对被测物进行拍摄。通过矩阵变换,将点云图坐标统一,获得完整图像。具体实现步骤如下:
1. 搭建拍摄系统
搭建一个简单的3D双相机系统。本次使用的3D相机为Sizector S162170和S028240。
2. 制作标定物
在标定物的选取上,需要特别注意:
· 依据两个3D相机放置的位置关系,标定物要在3D数据上有明显区别;
· 标定物尽量选择漫反射的表面材质易于Sizector 3D相机拍摄。
3. 获得变换矩阵
将点云导入到第三方软件后进行处理获得变换矩阵。现采用Cloud compare示例控制工程网版权所有,处理的步骤大致可分为:导入,过滤噪点,着色,选出标记物点云,配准,输出点云。
将另一相机获取的点云图重复以上四个步骤之后,我们可以得到两个3D相机拍摄的标定物点云,此时这两个点云都是基于各自3D相机的点云坐标系。得到两台3D相机拍摄的标定物点云之后www.cechina.cn,可将两个标定物点云配准选点,在配准测试之后,即得到变换矩阵。
4. 将变换矩阵输入待变换的3D相机
将上一步骤获得的变换矩阵输入到待变换的3D相机的红框位置(如下):
5. 拍摄被测物
被测物拍摄效果
6. 查看效果
将上一步两台3D相机拍摄的点云图输入第三方软件,验证矩阵变换结果,即可得到矩阵变换后完整的点云图。
矩阵变换、图像拼接结果
盛相Sizector 的硬件矩阵变换功能只需设置硬件参数即可获取转换后的3D点云,从而帮助用户在高帧率获取数据的同时简化算法、提高开发效率。(作者:陈志文,上海盛相工业检测科技有限公司应用工程师)