网上服装定制网站,上海网站建设工作,余姚做企业网站,网站开发费用怎么做账编辑#xff1a;OAK中国 首发#xff1a;oakchina.cn 喜欢的话#xff0c;请多多#x1f44d;⭐️✍ 内容可能会不定期更新#xff0c;官网内容都是最新的#xff0c;请查看首发地址链接。 ▌前言
Hello#xff0c;大家好#xff0c;这里是OAK中国#xff0c;我是Ash… 编辑OAK中国 首发oakchina.cn 喜欢的话请多多⭐️✍ 内容可能会不定期更新官网内容都是最新的请查看首发地址链接。 ▌前言
Hello大家好这里是OAK中国我是Ashely。
近期我们更新了校准程序和方式让OAK相机的精度有所提升。大家如果手里用的是旧设备可以根据本教程来重新校准设备精度可能会好点。
目前支持的校准程序
深度校准ToF校准
如果你用的是非ToF款相机请只看“深度校准”这一部分即可。
▌深度校准
相机校准是确定相机的固有、外在和畸变参数的过程。相机需要这些才能将 3D 世界中的点映射到图像中的 2D 点反之亦然以消除图像失真并从立体图像中确定深度。
根据这些参数相机还计算出用于校正对齐立体相机的图像的校正矩阵因此 StereoDepth 节点可以执行立体视差计算和深度估计。 注意所有带外壳的OAK相机在出厂前就完成了校准除非你对校准的精度不满意否则不用再自己重新校准一次。 分体式OAK-FFC系列的产品在完成安装后必须做校准。 以下是一个校准步骤的演示视频有关校准的更多信息查看以下步骤以及 ./calibrate.py --help 将打印出所有校准选项的步骤。 【2023】用新程序校准OAK双目相机教程 须知
你的电脑需要安装depthai可通过以下方式安装
git clone https://github.com/luxonis/depthai.git
cd depthai
git submodule update --init --recursive
python3 install_requirements.py准备charuco标定板
我们通过将 charuco 板显示在电视或大型平面非曲面显示器上找到了最佳效果。屏幕越大越好因为它们允许在图像中显示更多的字符标记这通常会提高校准精度。根据屏幕尺寸对角线以英寸为单位我们建议全屏显示以下charuco板
24寸屏幕charuco_24inch_13x728寸屏幕charuco_28inch_15x832寸屏幕charuco_24inch_17x936寸屏幕charuco_36inch_19x1142寸屏幕charuco_42inch_22x1250寸屏幕charuco_24inch_27x1555寸屏幕charuco_55inch_30x1765寸屏幕charuco_65inch_35x2075寸屏幕charuco_75inch_41x23
如果你用的是其他尺寸的屏幕建议选比屏幕稍小的charuco板。
如果无法在显示器上显示charuco板你可以将板打印到平坦的表面上如PVC板货KT板没有褶皱或凹凸。你也可以将其打印到一张纸上并将其粘在坚固、平坦的表面上。材质不要太反光 我们更推荐的方式是打印在KT板上就像我们视频中用的那种。 屏显charuco板
全屏显示charuco板时标记和方块应清晰可见。注意以下几点
屏幕不应太亮或太暗因为它会导致图像过度饱和这将使相机更难检测到标记。不要让明亮的灯光/阳光直接照射在屏幕上。全屏显示charuco板使标记尽可能大。 接下来测量 charuco 板的正方形尺寸因为我们稍后会用到它。 配置json文件
如果你用的是带外壳的OAK相机则可以直接用现成的配置。查看
如果你用的是一个分体式OAK-FFC相机则可以用这个模板去配置json文件修改一些参数数值。参数解释看下图。 运行校准脚本
将占位符参数值替换为有效条目
python3 calibrate.py -s [SQUARE_SIZE_IN_CM] --board [BOARD] -nx [squaresX] -ny [squaresY]
例如在32‘’屏幕上校准OAK-D-S2正方形尺寸为3.76cm应该运行如下命令
python3 calibrate.py -s 3.76 --board OAK-D-S2 -nx 17 -ny 9
如果没有RGB镜头可以加-drgb如下
python3 calibrate.py -s 3.76 --board OAK-FFC-4P -nx 17 -ny 9 -drgb
运行python3 calibrate.py --help可以查看更多参数解释。
校准期间的相机定位
我们建议从不同的角度和距离捕获校准因为这将有助于校准算法找到最佳校准。
1.靠近屏幕校准板几乎覆盖了整个视场。拍摄 5 张照片以覆盖相机的整个 FOV。
1前视图FOV中间的校准板参考下图。 2在不移动平移相机的情况下只需旋转即可将相机 FOV 与校准板边缘对齐例如右下角、左上角、右上角、左下角 2.靠近屏幕从侧面。校准板倾斜的 4 张或更多图像但仍覆盖大部分FOV。将相机移动到屏幕的顶部、底部、左侧和右侧。你也可以使用不同的距离。
3.中距离校准板覆盖 40% 的 FOV。拍摄 5 张图像以覆盖相机的整个 FOV。
1前视图FOV中间的校准板。 2与 2.靠近屏幕 一样无需移动仅通过旋转将相机 FOV 与校准板边缘对齐。
4.远离屏幕校准板仅覆盖 FOV 的一小部分。总共拍摄 9 张图像以覆盖相机的整个 FOV。
1正面视图FOV中间的校准板。 2与 2.靠近屏幕 类似拍摄 4 张图像将相机 FOV 对齐到所有 4 个边缘。 3除了与所有 4 个边缘对齐外还要拍摄 4 张与角对齐的图像例如顶部、底部、左侧、右侧。 校准期间不同的相机旋转/位置鸟瞰图。 例如28寸屏幕近距离50CM远距离1M。
正常视角的OAK相机参考位置图 广角的OAK相机参考位置图 运行校准
捕获图像后我们可以运行校准。这是通过按 s 键完成的。该脚本将显示每个图像的 epiplolar 线条您应该检查它们是否正确对齐。检查完所有图像后校准结果如果成功将闪烁到器件EEPROM上。每个捕获的图像都保存在 dataset 文件夹中因此您可以自行重新运行校准过程而无需再次捕获图像。
python3 calibrate.py -s 3.76 --board OAK-D-S2 -nx 17 -ny 9 -m process
校准结果存储在 resources 文件夹中以后可用于测试/调试目的。你还可以将此本地校准文件加载/刷新到设备详情请参阅此处。
问题排查
如果校准失败并出现错误 High reprojection error! 通常的原因是电路板配置错误。很多时候这是由于使用过的相机模块的指定 HFOV 不正确。
如果你发现尽管成功校准了相机并确认了外极线正确左右对齐但深度仍然不正确则可能是你的左右相机互换了。在这种情况下你可以使用更改的电路板配置重试校准或者直接更换相机插入的电路板插座。
▌ToF校准
飞行时间ToF校准对于将ToF传感器与系统中的其他相机对齐至关重要。此过程侧重于获取外部参数这对于确保不同相机之间的协调操作至关重要。请注意此校准不会提高深度精度因为该方面由设备的固件管理。
校准程序
如果你已经安装了 DepthAI 库则可以使用以下命令更新它以进行 TOF 校准
git checkout new_tof_calib
git submodule update --init --recursive
安装更新的 DepthAI Python 库
python3 .\install_requirements.py
要开始校准过程请使用你正在使用的 Charuco 板的适当参数运行 calibrate.py。例如
python3 calibrate.py -db -nx 12 -ny 9 -c 1 -cd 0 -s 6 -ms 4.7 -brd OAK-D-SR-POE
参数解释如下
-db表示默认板表示你正在使用 Charuco 标记。-nxx 方向上的 Charuco 标记数。-c每次显示多边形时拍摄的照片数量可选建议在你的情况下省略。-cd拍摄照片前的倒计时时间以秒为单位可选建议用于更快的图像校准。-sCharuco 标记周围的正方形大小以厘米为单位。-ms标记的大小以厘米为单位。-brd设备的板在本例中为 OAK-D-SR-POE。
请注意TOF校准可能具有挑战性因为电路板必须靠近相机才能检测Charuco电路板。如果遇到 division by zero 或 Failed to detect markers in the image dataset/rgb/rgb_p3_10.png 等错误则应转到数据集文件夹并删除 Charuco 板检测不佳的图片在所有相机文件夹中。然后使用添加的参数 -m process 再次运行相同的代码。这将仅启动处理阶段因此你不必重新拍摄电路板的照片。
python3 calibrate.py -db -nx 12 -ny 9 -c 1 -cd 0 -s 6 -ms 4.7 -brd OAK-D-SR-POE -m process