计算机视觉

RoboDK提供了许多实用程序来模拟、开发和部署计算机视觉系统。RoboDK允许您模拟2D和3D相机来开发和训练您的计算机视觉算法。你也可以整合真正的2D和3D相机。

本文档将指导您完成模拟摄像机的一些步骤。

计算机视觉-图像1

模拟摄像机

模拟摄像机可以让你看到摄像机看到的东西。你可以指定相机参数,如传感器大小,像素大小,视野,你将能够看到相机的模拟视图。你可以给机器人安装摄像头,也可以让它们静止不动。

添加摄像机视图

添加摄像机需要将其连接到一个锚点以确定其位置。这通常是用一个参考系来完成的。

1.选择程序添加参考系创建一个新的坐标系统。更多资料请参阅入门部分

2.将帧放置在所需的摄像机位置,其中XYZ坐标是摄像机位置,Z+轴表示瞄准方向,Y+轴表示向下方向。

3.选择连接模拟二维摄像机然后选择参考系。

你现在有一个默认的相机附加到锚点。

摄像机预览窗口

相机预览窗口允许您看到相机所看到的内容。当添加新摄像机时,此窗口将自动打开。

要重新打开相机预览窗口,您可以简单地双击树中的相机项目。您也可以在树中右键单击它并选择显示摄像头。默认情况下,预览窗口可以调整大小、最小化或关闭(请参阅下一节了解更多选项)。

计算机视觉-图像2

当预览窗口打开时,相机工作区也会显示3D环境。您可以通过右键单击相机并选择来禁用相机工作区显示摄像机工作区

相机的设置

相机设置允许您自定义相机的参数,以便在RoboDK的模拟环境中对相机进行逼真的查看。

要编辑相机的设置,请在树中右键单击并选择相机的设置。对于新增的摄像机,RoboDK提供如下默认设置:

摄像机:提供锚名(第1帧)

焦距(mm):焦距,单位为毫米(5.00)。这是镜头的虚拟光学中心和虚拟相机图像传感器之间的距离。更改此值将影响像素大小。

像素大小(μm):像素大小,单位为微米(2.481)。更改此值将影响视野。

视场(度):视场(FOV),单位为度(30.0)。这影响了相机可以感知到的区域的大小。更改此值将影响像素大小。

工作距离(mm):工作距离,单位为毫米(2000.0)。这是相机可以感知到的环境距离,超过这个距离的物体将不会成为图像的一部分。

固定传感器大小:如果不勾选,则相机传感器大小(或分辨率)由相机预览窗口的大小设置,用户可以调整大小。

相机传感器尺寸:对于固定的传感器尺寸,提供相机的宽度和高度,以像素为单位。调整预览窗口的大小不会影响大小。

允许窗口调整大小:允许用户在不影响传感器大小的情况下调整预览窗口的大小。例如,将窗口大小调整为720p,同时保持分辨率为4K。

透视视图:取消此选项将使相机变成正射影相机,移除透视。

视图类型:确定摄像机视图类型,如彩色、灰度或深度。视图类型将根据相关数据更改输出图像。

停靠视图:允许预览窗口被拖到工具栏上,而不是一个独立的浮动窗口。

设置光色:用你自己的光色覆盖默认光色(环境光色、漫反射光色和高光色)。它不影响背景颜色,并且只与color视图类型兼容。

背景色:未知的颜色,无限的颜色。这是如果从相机传感器到工作距离没有遇到物体时使用的颜色。

计算机视觉-图像3

通过API访问模拟相机图像

可以通过API访问所有视图类型的相机图像。例如,您可以检索彩色图像(8位)、灰度图像(8位)和深度图(8位或32位)作为磁盘文件或普通数据。

访问模拟相机的数据允许您通过第三方成像库或您自己的外部处理它。

虽然RoboDK没有提供自己的图像库,也没有与之关联,但我们的Python API提供了处理2D和3D图像数据的示例代码。包括以下主题:

·获取图像数据并将其显示为一个流。

·使用棋盘模式校准针孔相机。

·使用支持的模式估计相机姿势。

·将模拟相机图像放在硬件相机馈送上进行增强现实。

·阅读条形码和QR码。

·检测特征,如斑点,参考图像,表面积,轮廓,图像矩,和更多。

·检索深度图,将其处理成点云,重建网格,创建3D流。

要访问我们的Python API示例,请点击以下链接://www.sinclairbody.com/doc/en/PythonAPI/examples.html

手眼标定

手眼标定是对摄像机相对于机器人法兰或刀具的位置进行标定的过程。

RoboDK允许您模拟手眼校准的过程。您可以使用相同的程序来校准真实的相机相对于机器人法兰或工具。

计算机视觉-图像4

你可以在RoboDK for Python API的示例部分找到一个完整的工作示例://www.sinclairbody.com/doc/en/PythonAPI/examples.html#camera-hand-eye-calibration

摄像机模拟示例

本节提供了一些将计算机视觉与制造过程集成的示例。

大多数集成计算机视觉的示例需要一些编码才能充分发挥计算机视觉算法的潜力。

条形码阅读

您可以使用RoboDK中的模拟摄像头自动读取条形码,包括QR码,EAN-13和UPC-A 1D条形码。

你可以在RoboDK中拖放条形码图像,并创建一个指向你的条形码的新模拟相机。

你可以在RoboDK Python API一节中找到这个例子://www.sinclairbody.com/doc/en/PythonAPI/examples.html#qr-codes-and-barcodes

计算机视觉-图像5

对象检测

你可以通过在RoboDK中使用模拟相机来获得物体位置(2D姿态)的估计。

你可以在RoboDK API示例一节中找到这个例子://www.sinclairbody.com/doc/en/PythonAPI/examples.html#object-detection

计算机视觉-图像6