前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现智能视觉测量系统-为什么原木智能检尺需要高精度3D相机

如何实现智能视觉测量系统-为什么原木智能检尺需要高精度3D相机

作者头像
SIGAI学习与实践平台
发布2023-10-16 20:22:21
3510
发布2023-10-16 20:22:21
举报

什么是智能视觉测量?

智能视觉测量是指用计算机视觉技术实现对物体的尺寸测量,它在工业、林业、物流等领域有重要的应用。一般做法是用相机或激光雷达对物体拍照/扫描,然后识别图像中的待测量物体,得到其边界或形状信息,最后在坐标系中计算物体的尺寸。本文将以原木智能检尺(直径测量)为例,介绍智能视觉测量系统的技术原理,以及需要解决的难点问题。

对于某些相机与被测物体相对姿态、位置固定的场景,如果事先做好了相机标定,用2D相机可以完成简单的测量任务,这在一些自动化工业产线或者对精度要求不高的场景是适用的。对于更多的视觉测量问题,需要使用3D相机,原因如下:

1.物体与相机之间的距离是未知的,2D相机在进行透视投影成像时丢失了深度信息,同一个物体离相机较远时在图像中显得更小,距离相机较近时在图像中显得更大。

2.物体的姿态(朝向)是未知的,不同的姿态,在2D图像中进行测量会影响测量结果。以一个圆形平面物体为例,垂直于相机视线摆放时在图像中是一个圆,不垂直摆放时是一个椭圆。

3.相机本身的姿态(朝向)是未知的,这与原因2在本质上是同一个问题。

3D测量的基本流程是先对物体进行成像,将其重建到3D坐标系中,然后对图像进行分析,得到物体的空间位置信息,再利用上一步的信息计算物体的尺寸。

下面以原木智能检尺为例进行详细说明。人工测量木材的做法是找到木材的横截面,然后找到中心点,在过中心点的所有直径中,找到最短的直径作为短径,然后选择与短径垂直的直径作为长径,测量它们的长度。得到直径长度之后,利用设计好的公式中,就可以计算出这根原木的材积。这个过程如下图所示。

智能检尺的处理流程与人工检尺一致,主要区别在于将人工用尺测量物理世界中的木材横截面改为用机器视觉算法测量虚拟3D空间中木材的横截面。整个处理流程如下图所示。

第一步是通过扫描进行3D重建,将木材1:1还原到虚拟的3D图像空间中(相机坐标系,在后面会详细介绍),得到3D点云数据。木材横截面上每一个点在这个坐标系下都有3D坐标。接下来,识别出图像中的每一根木材,找到它们的横截面轮廓,进一步找到横截面的中心点,在经过中心的所有直径中,找到最短的一条直径,作为短直径。然后以短直径的垂直方向作为长直径。计算长直径和短直径的长度,在得到长短直径的长度之后,即可根据各个国家或地区的检尺标准计算出每一根木材的材积。

3D成像的基本概念

高精度的视觉测量通常需要使用高精度3D相机或激光雷达,下面介绍相机成像的原理,同时也将解释为什么用2D相机无法进行精确测量。

2D相机成像的原理为透视投影,如下图所示。现实世界中的一个3D物体,其表面上每个点的反射光线经过相机镜头的作用,汇聚到相机镜头焦点处,在感光元器件上成像(通常是CMOS,称为像平面)。现实世界中的3D物体经过这个透视变换,被投影到像平面上变为2D图像。为了表述和展示的方便,通常使用虚拟像平面,也将它称为像平面。

经过透视投影,现实世界中的3D点被投影到2D图像中,成为平面图像中的一个2D点。在这个过程中,涉及到如下几种坐标系:

1.世界坐标系

2.相机坐标系

3.图像坐标系

4.像素坐标系

下图是前面3种坐标系的示意图。世界坐标系的原点以及3个坐标轴可以自由选取。相机坐标系的原点为相机的光心,Z轴为相机的视线方向即光轴,该坐标系由相机的姿态和位置确定。世界坐标系下的点,可以通过平移与旋转变换转化为相机坐标系下的点。图像坐标系是2D坐标系,其原点位于像平面的中心位置。相机坐标系下的点经过透视投影变换,成为图像坐标系下的点。

下图直观地展示了相机坐标系的概念。图中红色的3条箭头线为相机坐标系的3个轴方向。在智能测量中,我们使用的一般是相机坐标系。

从世界坐标系到相机坐标系可以通过旋转和平移变换得到。经过平移可以将两个坐标系的原点重合,经过旋转可以将两个坐标系的XYZ轴重合。学过解析几何与线性代数的同学都知道,平移与旋转变换可以保证物体的形状不变,物体的尺寸自然也不会发生变化。平移变换通对一个点(向量)加上一个平移向量实现。旋转变换则通过将一个点(向量)左乘旋转矩阵实现,旋转矩阵是正交矩阵。假设世界坐标系下有一个点w,经过下面的旋转与平移变换可以得到其在相机坐标系下的点c

令旋转矩阵

平移向量

上面的公式可以合并写成如下的齐次坐标系形式,得到更简洁的表述

从相机坐标系到图像坐标系的转换是通过透视投影完成的,如下图所示。假设镜头的焦距为f,相机坐标系下的点经过投影之后变为图像坐标系下的点

由于透视投影是相似成像,根据相似三角形的原理有

从而可以得到从相机坐标系到图像坐标系的变换公式

数字相机输出的图像是离散化的,由像素组成。以像素为单位,形成离散的像素坐标系。其原点在图像左上角,水平方向为u,垂直方向为v。这个坐标系下两个方向的坐标值都是离散的,代表每个像素的行号和列号。从图像坐标系到像素坐标系通过平移与缩放变换得到,其中平移变换用于改变图像的原点,缩放变换用于刻画在XY方向的单位像素长度。平移变换通过加向量实现,缩放变换通过左乘对角矩阵实现。在齐次坐标系下,其变换公式为

其中dx与dy分别是感光元器件在x与y方向每个像素的尺寸,u0与v0是图像中心点的坐标。综合上面的步骤,可以得到从相机坐标系到像素坐标系的变换公式为

根据上面的公式,由于透视投影是不可逆的,无法从2D图像恢复出相机坐标系下物体的3D坐标,我们能得到的只有离散的像素坐标。因此单纯用2D图像是无法实现精确测量的。

与2D相机不同,3D相机可输出RGB图与深度图。RGB图中每个像素都有颜色值,深度图中每个像素都有深度值(相机坐标系下的Z值),另外通常还有XY值。这两张图是对齐的,每个像素既有颜色值又有与之对应的XYZ坐标。下图是3D相机重建出的3D图像,称为点云,用MeshLab软件打开之后可以观看和操作。有了这些坐标值,我们可以测量出任意两点之间的距离。

物体识别

有了3D图像,要测量每根木材的直径,需要先知道木材横截面的位置与轮廓,然后找到直径的两个端点。一旦知道了端点的坐标,根据两点之间距离的公式,即可计算出直径的长度。下图是在MeshLab软件中测量的一根木材直径的长度。图中深绿色的粗线为木材的直径,它的两个端点是人工用鼠标选取的,右侧显示的数字是其长度,为30.78cm。

对于人来说,找到木材的横截面和轮廓是轻而易举的事情,但机器视觉想要高效且精确地完成该任务却有些困难,需要使用图像识别算法(通常是实例分割算法)。算法识别图像中所有感兴趣的物体,在图像中准确地将它们标出来。下图是轮廓识别的示意图,图中红色的曲线为算法识别出来的一根木材的横截面轮廓点。

中心点定位

识别出横截面轮廓之后,仿照人工检尺的做法,下一步是确定横截面中心点的坐标。这由中心点定位算法完成,该算法会输出中心点在3D坐标系下的坐标。下图是中心点定位算法输出的中心点的位置,以蓝色的圆表示。

直径定位

确定中心点之后,需要在经过中心点的所有直径中找到最短的那条直径。为此,需要在360度方向计算出每一条过中心点的直径的长度,然后确定哪个方向的直径是最短的,作为短直径。这个过程如下图所示。

图中蓝色区域为木材横截面,红色圆为中心点,算法计算所有方向过中心点的直径的长度,取最小长度的直径作为短径。接下来在短直径的垂直方向作一条直径,作为长直径。下图是直径定位算法的输出结果,短直径用红色的虚线表示,长直径用蓝色的虚线表示。

直径长度与材积计算

得到了直径起点和终点的坐标之后,可以根据空间中两点之间距离的公式计算出直径的长度。具体实现时,还需要考虑异常情况。对于有遮挡或破损的木材,需要对其进行补全操作,然后计算直径长度。得到横截面的直径之后,可以根据各个国家或地区的检尺标准计算出每根木材的材积。

需要解决的技术难题

在各种智能测量任务中,原木测量是非常难的一个任务。要准确而高效地测量木材直径需要解决如下技术难题:

1.复杂的光照条件。木材检尺一般在户外进行,3D相机需要在室外正常工作,结构光相机不可用,必须要有其他能用于户外的高精度3D相机。室外光照是不可控的,高光、弱光、逆光、阴影都会出现,相机要在各种光照下都能输出清晰而精确的图像。下图是张量无限Tensor Pro相机在逆光时的成像效果,图像中木材的横截面清晰可见。

2.遮挡。木材的横截面通常没有对齐,有凹进与凸出,相互之间会产生遮挡,如下图所示。此外,木材横截面可能会被树皮、树叶等其他物体遮挡。

3.异形木材。与工业产线上规则的物体相比不同,原木的形状与表面是不标准的,横截面形状各异,而非标准的圆或者椭圆,算法需要对各种形状的木材都能准确地找到和测量其直径,如下图所示。

4.木材破损。木材横截面可能会出现破损,对于这种情况,人工检尺时有自己的处理规则进行补全,智能检尺算法要能模仿这种规则进行处理。

5.极高的精度要求。原木的测量涉及到经济利益,目前主要还是靠人工检尺的方式,在接触众多业内人士后,普遍的反馈是能做到3%以内的误差就是非常理想的状态了。智能检尺要达到这一标准,就需要保证每根木材的测量误差不超过4mm,平均误差不超过3mm。3D重建和横截面与直径识别都会引入误差,这需要3D相机的点云精度达到2mm以内,且RGB图清晰、分辨率高,以确保横截面与直径识别算法的精度。经过大量测试,Tensor Pro相机在2~4m距离进行拍照测量,相对误差约为1‰,准确性和稳定性方面,机器比人工更可靠。下图是Tensor Pro生成的木材点云以及RGB图。点云中木材横截面非常平整,误差在2mm以内。RGB图中木材横截面的边缘、内部纹理非常清晰。

6.相机视野范围要足够大,以确保每次拍照能扫描尽可能多的木材。3D扫描与识别算法要足够快,以确保测量效率。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-10-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 SIGAI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档