§ 2.1 图像预览 (彩图+IR图+深度图)

0. 概要

阿凯开发了基于Open3D的Astra 3D相机的SDK,是对OpenNI2的原始Python SDK做了二次封装。

本文讲解了如果使用SDK内置脚本预览Astra 3D相机拍摄的彩图、深度图、IR图。

配套实验代码路径: 02.Astra-3D相机-Python SDK/astra-camera-python/

1. 修改相机配置文件 - OpenNI2安装路径

Linux操作系统

自动检索OpenNI2的安装路径,配置文件里面的 openni2_dll_path 不需要修改。

Windows操作系统

注意:因为Windows下必须填写OpenNI2动态链接库的安装路径,因此需要做一下相关配置。

通过VSCode或者其他文本编辑器,编辑相机的配置文件。

openni2_dll_path 变量,修改为自己的dll安装路径。路径中文件夹与文件夹之间,需要添加两个反斜杠 \\

config/astra.yaml

#############################
## 相机的默认参数
############################# 
# OpenNI动态链接库的安装路径
# 如果是Windows, 需要修改为OpenNI的安装路径
openni2_dll_path: "D:\\KyleSoftware\\OpenNI2\\libs"
# 如果是Linux, 将openni2_dll_path赋值为空字符串, 不修改也可以,SDK会自动判别。
# openni2_dll_path : ""
# 画面宽度
img_width: 640
# 画面高度 
img_height: 480
# 相机帧率
fps: 30

2. Astra 3D相机图像预览

2.1 彩图预览

只预览相机拍摄的彩图

python astra.py --video_mode "color"

2.2 深度图预览

预览IR相机的原始 (未与RGB相机对齐的) 深度图

python astra.py --video_mode "depth" --image_registration=false

获取对齐后的深度图

python astra.py --video_mode "depth" --image_registration=true

2.3 彩图与深度图同时预览

同时预览RGB图

python astra.py

默认视频模式为 "color_depth" ,可以手动指定

python astra.py --video_mode "color_depth" 

这里的深度图是与RGB相机对齐后的深度图。

也可以获取未对齐的深度图,将 image_registration 选项设置为 false

python astra.py --video_mode "color_depth"  --image_registration=false

注:absl传入布尔值的时候比较特殊,必须使用这种形式: --image_registration=false

2.4 IR图预览

预览IR相机 (红外相机) 拍摄的图像

python astra.py --video_mode "ir" --equal_hist=false

红外投影仪打开时,画面中的散点是IR投影仪投射的散点结构光。

红外投影仪被遮挡的时候画面很暗

可以使用外部的红外光源进行补光,也可以打开直方图均衡 equal_hist 开关。

python astra.py --video_mode "ir" --equal_hist=true

遮挡红外投影仪-无红外光源

白天在自然光的照射下,还是可以看清楚的, 但是噪点比较大。 在这种情况下,可以拍清楚标定板的, 只是在后续相机标定的过程中, 精度会受损。

如果晚上想要获取清晰的红外图像,则需要使用红外补光灯。否则红外光线太弱,直方图均衡后得到的都是噪声。

遮挡红外投影仪-有红外光源

有条件建议使用红外光源进行补光,将红外补光灯用纳米胶黏在Astra上侧。

大部分的红外补光灯是用于安防领域的,使用光敏电阻来检测是否到了晚上,到了晚上红外补光灯才打开。

使用时记得要拆开红外补光灯,把光敏电阻的(黑白)端子断开,让红外补光灯进入常亮模式。

遮挡红外投影仪的区域,建议使用不透光的黑色纸板,用电工胶带固定。

下图是未打开直方图均衡开关的 --equal_hist=false

打开直方图均衡的效果 --equal_hist=false

因为标定板是用相纸打印的,光源为点状光源,所以会反光比较厉害。这样会影响后续的标定板的角点检测。

优化方式:

  • 替换标定板的材质,令其表面不反光。例如使用铝基板等,但是这么大的标定板造价会比较高。
  • 使用更大功率的红外环形光源。现在用的红外补光灯功率比较低 (只有6W) 。换用更高功率的环形红外补光灯,效果会更好。

2.5 IR图与深度图同时预览

同时预览IR图与深度图

python astra.py --video_mode "ir_depth" --equal_hist=false