计算机视觉

RoboDK提供了许多工具来模拟、开发和部署计算机视觉系统。RoboDK允许您模拟2D和3D摄像机来开发和训练您的计算机视觉算法。您还可以集成真正的2D和3D摄像机。

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

计算机视觉-图像1

模拟摄像机

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

添加相机视图

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

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

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

3.选择连接模拟2D摄像机选择参考系。

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

摄像头预览窗口

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

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

计算机视觉-图像2

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

相机的设置

相机设置允许您自定义相机的参数,以在RoboDK的模拟环境中获得逼真的相机视图。

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

Camera:提供锚的名称(第1帧)

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

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

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

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

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

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

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

透视视图:取消勾选此选项将把相机变成正字法相机,删除透视。

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

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

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

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

计算机视觉-图像3

通过API访问模拟相机图像

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

通过访问模拟相机的数据,您可以通过第三方成像库或自己的图像库进行外部处理。

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

·获取图像数据,并显示为一个直播。

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

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

·将模拟相机图像对应于增强现实的硬件相机馈送。

·阅读条形码和二维码。

·检测特征,如斑点,参考图像,表面积,轮廓,图像瞬间等。

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

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

摄像机仿真示例

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

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

条形码阅读

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

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

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

计算机视觉-图像4

对象检测

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

你可以在RoboDK API示例部分找到这个例子://www.x7093.com/doc/en/PythonAPI/examples.html#object-detection

计算机视觉-图像5