1、如何从相机视差图中得到深度信息
最简单的方法是调用我们的 API 函数从视差图中得到相应像素的深度信息:
·triclopsRCD8ToXYZ();
·triclopsRCD16ToXYZ();
·triclopsRCDFloatToXYZ();
triclopsRCD8ToXYZ()函数使用前提:用户没有使用亚像素插值算法,并且视差图是由
8 位的 TriclopsImage 结构体格式获得;
triclopsRCD16ToXYZ() 使 用 前 提 : 用 户 使 用 亚 像 素 插 值 算 法 , 视 差 图 由 16 位
TriclopsImage16 结构体 格式而来;
triclopsRCDFloatToXYZ() :用户通过自定义方式得到的视差图。
其计算公式如下:
Z
/
fB d
Z:相机光轴方向上的距离。
f:焦距(单位:像素)
B:基准线(单位:米)
d:视差(单位:像素)
Z 轴距离确定之后,X 和 Y 可以通过如下公式计算
/
X uZ f
/
Y
vZ f
u,v 为 2D 图像上的像素坐标信息。X,Y,Z 为真实的三维坐标。
注 意 :u,v 不 是 行 列 坐 标 , 而 是 从 图 像 中 间 为 原 点 开 始 计 算 的 坐 标 。 可 以 通 过
triclopsGetImageCenter()函数得到图像中心的坐标,u,v 计算公式为:
u
v
centerCol
col
row centerRow
2、使用 Format7 模式控制图像采集
通过一个镜头采集
Format7 mode0 只用一个相机进行采集和用何种像素模式无关,使用 PAN 寄 存 器 地 址
0x884 来控制采集哪幅图像,下面的表格中显示了用哪个镜头对应的 PAN 寄存器 884 地址
的值,可以通过 flyCapture 例程里面的 General Settings 对话框设置也可以直接写 PAN 寄存
器。
通过两个镜头采集
使用 Format7 mode 3 同时使用两个镜头采集,对于黑白相机,尤其是 16 位黑白模式。
对于彩色相机,尤其对于像素模式为 Raw16 的图像,是经过插值运算得到的。
如果相机由两个镜头,使用 PAN 寄存器可以用来控制两个镜头的数据流顺序,值为 0
时表示数据流顺序为右-左,值为 1 时数据流顺序为左-右。
如果相机有三个镜头,则可以通过设置寄存器值控制使用哪两个相机。
通过三个镜头采集
如果想使用三个镜头同时采集,需要使用 Format7 mode 3 像素模式用 RGB8,对于彩色
相机来说,这种设置相机传输的是 8 位的贝尔滤波数据。
3、PGR 相机驱动纯净安装
所谓纯净安装是指当安装时彻底删除老版软件,并且让新版软件和相机硬件顺利结合。
1、 删除老版软件
通过资源管理器卸载老版软件,右键单击设备,选择“卸载”,然后拔出相机,使用控
制面板里添加或删除组件来删除软件例如 flyCapture 等。对于高级用户,可能还需要从系统
文件里面删除一些配置文件(*.sys 或者*.dll 格式的)。
·PGR Flycapture files:
pgrcam.sys,pgrflycapture.dll,pgrglycapturegui.dll,pgrcameragui.dll
·Digiclops Stereo Vision files:
bumblebee.sys,digiclop.sys,pgrmon.sys,digiclops.dll,digiclopsGUI.dll,pgrcameragui.dll;
·Triclops Stereo Vision files:triclops.dll
2、 安装新软件
双击软件安装包,按照软件安装提示进行安装,然后重启计算机。
3、 安装新的相机驱动
重启计算机之后,需要重新插入相机。
在 Windows 2000 系统下,系统提示安装驱动,弹出硬件安装向导-一般都是自动完成。
Windows XP 系统下,会弹出添加硬件向导,按照下面的步骤安装硬件驱动。
1. 单击“从列表或者指定位置安装”,然后单击“下一步”。
2. 选择“不要搜索,自行选择驱动安装”,单击下一步。
3. 单击“从磁盘安装”,然后从磁盘中选择驱动文件,路径一般为“c:\program files\point
grey research \PGR FlyCapture\driver”
4. 选择相应的相机模型,单击 next,如果有多个同种型号相机,选择第一个。
5. 会弹出此驱动没有经过微软数字验证的提示,单击“继续安装”,知道安装完成。
4、Triclops 产品系统坐标系统
默认情况下,所有的 Triclops 库 XYZ 坐标系统通过参照相机建立,一般右相机为参考
相机,定义如下所示:
·坐标系原点为相机光学镜头中心位置。
·X 轴指向参考相机的右边
·Y 轴指向地面
·Z 轴指到相机的距离
这个坐标系统是一个虚拟的坐标系统,并没有按照相机外包装标定,使用相机外包装的
边缘以及参考镜头的外部中心作为原点,然而,如果用户需要更加精确的坐标位置,需要自
己建立光学坐标系。
Triclops API 中有关 3D 位置和坐标系的函数
triclopsSetTriclopsToWorldTransform
triclopsRCDtoWorldXYZ
这需要最新的 triclops 和 digiclops 才能有以下的功能函数
深度图和相机坐标系之间转换
triclopsRCDToXYZ
triclopsRCDFloatToXYZ
triclopsRCD8ToXYZ
triclopsRCD16ToXYZ
triclopsXYZToRCD
转换 XYZ 坐标系到世界坐标系
triclopsRCDToWorldXYZ
triclopsRCDFloatToWorldXYZ
triclopsRCD8ToWorldXYZ
triclopsRCD16ToWorldXYZ
triclopsWorldXYZToRCD
这些函数可以对世界坐标系和相机坐标系互相转换,下面两个函数用来设置世界
坐标系转换矩阵(4*4)
triclopsSetTriclopsToWorldTransform
triclopsGetTriclopsToWorldTransform
下面这些函数也有必要熟悉以下
triclopsCreateImage3d
triclopsDestroyImage3d
triclopsExtractImage3d
triclopsExtractWorldImage3d