3D Imaging with NI LabVIEW

概览

3D imaging technology has come a long way from its roots in academic research labs, and thanks to innovations in sensors, lighting and most importantly, embedded processing, 3D vision is now appearing in a variety of machine automation applications. From vision-guided robotic bin-picking to high precision metrology, the latest generation of processors can now handle the immense data sets and sophisticated algorithms required to extract depth information and quickly make decisions. The LabVIEW Vision Development Module makes 3D vision accessible to engineers through seamless integration of software and hardware tools for 3D within one graphical development environment.

Contents

三维成像简介

使用二维相机传感器或其他光学传感技术来计算深度信息的方法有几种。  下面简要介绍几种常见的方法:

三维成像技术说明

 

立体视觉

 

使用两台相机,安装在物体的不同视角,并使用校准技术来调整相机之间的像素信息并提取深度信息。  这与我们的大脑在视觉上测量距离的工作方式最为相似。

 

 

激光三角测量

 

将一条激光线投射到物体上,使用相机获取图像并测量激光线在物体单个切面上的位移,生成高度轮廓。  激光和相机对物体表面的多个切面进行扫描,最终生成一个三维图像。

 

 

投射光

 

将已知光线图案投射到一个物体上,根据该图案在物体周围的扭曲情况来计算深度信息。

 

 

飞行时间传感器

 

光源与图像传感器同步,根据光的脉冲和反射光回到传感器之间的时间来计算距离。

 

 

激光雷达

 

使用激光通过测量光的反射来测量区域,生成一个三维轮廓,绘制出表面特征并探测物体。

 

 

光学相干断层扫描(OCT)

 

一种高分辨率的成像技术,使用近红外光,通过测量光在物体横截面的反射来计算深度信息。  由于它能够非侵入式地穿透多层生理组织,所以经常在医学成像应用中使用。

 

 

 

视觉开发模块中的立体视觉功能

 

从LabVIEW 2012开始,视觉开发模块包括双目立体视觉算法,可通过多个相机计算深度信息。  通过使用两台相机之间的校准信息,新算法可以生成深度图像,提供更丰富的数据来识别物体,检测缺陷,并指导机械臂移动和做出响应。

一个双目立体视觉系统使用两台相机。理想情况下,两台相机相隔距离较近,几乎平行安装。在图1所示的范例中,使用一盒球形巧克力来展现自动化检测采用三维成像的好处。  在校准两个相机以了解三维空间关系(如分离和倾斜)后,会采集两张不同的图像,用于定位巧克力中的潜在缺陷。  使用视觉开发模块中的新三维立体视觉算法,可以将这两幅图像结合起来计算深度信息并直观地展现出深度图像。

 

三维立体视觉前面板PNG图像

图1.  使用立体视觉根据左侧图像和右侧图像生成深度图像的示例

 

 

 

虽然在二维图像中不太明显,但三维深度图像可显示出有两块巧克力的球形不够圆,未达到高质量标准。  图2的图像中用白框圈出识别到的缺陷。

 

图2. 用白框圈出缺陷巧克力的三维深度图像

 

在使用立体视觉时,有一个重要的注意事项:系统要对比同一条线的左、右侧图像,从而定位一个特征,然后基于此计算出视差。为了能够定位和区分特征,图像需要显示出足够的纹理,而为了获得更好的结果,您可能需要使用结构化照明照亮现场环境,使纹理更加明显。

 

最后,可使用双目立体视觉计算被检测物体表面上各点的三维坐标(X,Y,Z)。这些点通常被称为点云点之云。点云在实现物体三维形状可视化方面非常有用,也可以供其他三维分析软件使用。 例如,AQSense 3D Shape Analysis Library (SAL3D)现在可以在LabVIEW工具网络中使用,并使用点云实现进一步的图像处理和可视化。

 

立体视觉的工作原理

为了更好地说明双目立体视觉的工作原理,图3显示了一个简化的立体视觉设置结构框图,其中两台相机完全平行安装,并且焦距完全相同。

图3.立体视觉系统简图

图3中的变量如下:

b是基线,或两个相机之间的距离

f是相机的焦距

XA是相机的X轴

ZA是相机的光轴

P是现实世界中的一个点,由坐标X、Y和Z定义

uL是现实世界中P点在左侧相机采集的图像中的投影

uR是现实世界中P点在右侧相机采集的图像中的投影

 

由于两个相机之间的距离为“b”,它们在所采集的二维图像上的不同位置查看现实世界中相同的点P。  点uL和uR的X坐标公式如下:

uL = f * X/Z

uR = f * (X-b)/Z

 

这两个投影点之间的距离被称为“视差”,我们可以用视差值来计算深度信息,也就是现实世界的点“P”与立体视觉系统之间的距离。 

视差= uL – uR = f * b/z

深度= f * b/视差

 

在现实情况下,实际的立体视觉设置更加复杂,更像图4所示的典型系统,但仍然适用同样的全部基本原则。

 

图4.  典型立体视觉系统

 

针对简化的立体视觉系统所做的理想假设不适用于现实世界的立体视觉应用。即使是极为出色的相机和镜头在采集图像时也会出现一定程度的失真,为了弥补这一问题,典型的立体视觉系统还需要校准。  校准过程包括使用校准网格,从不同的角度采集以计算图像失真,以及两个相机之间的确切空间关系。  图5显示了视觉开发模块中随附的校准网格。

图5. 校准网格以PDF文件的形式附加在视觉开发模块中

 

 

视觉开发模块包括函数和LabVIEW范例,可指导您完成立体视觉校准过程,生成几个校准矩阵,用于进一步计算视差和深度信息。  然后,您可以如前面图1所示的那样,将三维图像可视化,进行不同类型的缺陷检测、物体跟踪和运动控制分析。

 

立体视觉的应用

立体视觉系统非常适合相机设置和位置都固定且不存在明显干扰的应用场景。常见应用包括导航、工业机器人、自动化检测和监控。

 

导航

 

 

 

自动驾驶的车辆基于深度信息来测量障碍物的大小和距离,从而准确地规划路线和避障。  立体视觉系统可以为导航应用提供丰富的三维信息,即使在不断变化的光线条件下也可出色地完成任务。

 

 

 

工业机器人

 

 

 

立体视觉系统在机器人工业自动化任务中能发挥重要作用,如垃圾分拣或板条箱搬运。垃圾分拣要求机械臂从装有多种不同类型物件的容器中拣选出特定的物体。 立体视觉系统可以获取三维信息,并确定哪些物件可以自由抓取,经济实惠。  它还可以提供板条箱中单个产品的精确位置,使机械臂可以从托盘中取出物体并将其移动到另一个托盘或过程中。

 

 

 

自动化检测

 

三维信息对于确保高质量的自动化检测也非常有用。 您可以使用立体视觉来检测那些仅通过二维图像很难识别的缺陷。确保塑模包装内有药丸,检测瓶子的形状,查找连接器上的弯曲引脚,这些都是自动化检测的范例,深度信息对确保质量有很大影响。

 

 

 

监控

 

 

 

立体视觉系统也非常适合用于跟踪,因为它们在光线变化和阴暗的环境中性能十分稳定。立体视觉系统可以准确地提供被跟踪物体的三维信息,从而检测异常事件,如有人非法入侵或有被遗弃的行李。立体视觉系统也可用于提高面部识别或其他生物识别等识别系统的精度。

 

 

 

总结与展望

LabVIEW视觉开发模块中的立体视觉功能为各个行业和应用领域的工程师赋予了新的三维视觉能力。  由于LabVIEW的开放性,工程师还可以使用第三方硬件和软件三维视觉工具,获得更多的高级功能,包括用于激光三角测量成像的SICK 3D Ranger相机和用于三维图像处理的AQSense 3D Shape Analysis Library。LabVIEW视觉开发模块可在图形开发环境中为工程师带来三维视觉体验。

 

继续学习:

下载和评估视觉开发模块

了解关于视觉开发模块的更多信息

采集SICK 3D相机的3D和MultiScan数据

从LabVIEW工具网络获取经过认证的第三方附加软件

 

参考材料:

视觉​开发​模块概念帮助