投影仪+结构光深度相机联合标定实现触控思路

概要

近期接到项目是投影仪+结构光深度相机联合标定实现触控,技术难点是实现双结构光相机与投影仪的联合标定,其中触控部分对标定精度要求比较高,先简单写一下处理思路和公式推导。

1. 深度图→相机坐标系

1.1矩阵转换

相机内参矩阵K是:  

[[fx 0  cx]

 [0  fy cy]

 [0  0  1 ]]

 其中fx和fy是以像素为单位的焦距。 由于fx和fy以像素为单位,使用相似三角形来获取x和y坐标:  

x / z = (x_pixel - cx) / fx

y / z = (y_pixel - cy) / fy

 那么  

x = (x_pixel - cx)/fx * z

y = (y_pixel - cy)/fy * z

 视情况需要乘以-1

1.2图像转化

上图中u0,v0为主点的uv坐标,此处基于像元尺寸dx×dy得到图像坐标系至成像面坐标系转换关系

下面由成像面坐标系(平面xy)转换至相机坐标系(xyz),此处Zc=图像深度值z=λ,作为尺度因子参与后续运算。

综上可得

1.3深度图像转化

深度图像素坐标转相机三维坐标的公式如下:

2. 相机坐标系→投影面(世界)坐标系

2.1投影面

投影仪投影至墙面,模组安装与墙面正上方,角度倾斜较大使墙面在深度图上无法成像,仅地面与投影墙面相交处呈明显边界,即“踢脚线”。

另一方面红外相机离墙稍远,人体手臂等物体碰触墙面的情况下,深度图中的‘手臂’会贴近或越过踢脚线。

算法计算深度图中贴近墙面的手臂并取中心,输出深度图坐标值,坐标转换则将其uvz值转换为投影面坐标系的xy值。

2.2投影面宽w高h

取标准件L/R距踢脚线直线距离为3/4h,

标准件L/R距M的距离=1/4(√(w²+h²))

2.3投影面坐标系

投影面左下方为世界坐标系的坐标原点,投影面z=0,可对应计算相机坐标系→世界坐标系的外参矩阵R&T。

2.4图像坐标→世界坐标

综上可得图像坐标uv与投影面世界坐标系的映射关系:

其中s为K中的倾斜因子,一般取零,具体值可查阅给定的内参矩阵。

将公式简化:

3. 标定

3.1标准件角点提取

提取角点获得PL、PR、PM的深度图坐标xy及深度值z

3.2拟合踢脚线直线

拟合得到直线方程的四参数ABCD,针对左右模组,可分别在深度图中取接近边界的两个点作为标定点。

3.3参数列表

3.3.1内参

参数

变量名

示例

说明

备注

内参矩阵K

倾斜因子s可取0

fx

fy

cx

cy

像元尺寸

3.3.1外参

参数

变量名

示例

说明

备注

投影面宽w

Proj_w

5.24

投影面高h

Proj_h

2.15

投影仪横向分辨率

ProjPix_w

投影仪纵向分辨率

ProjPix_h

射影变换H

Mat_H

单应性变换矩阵H,3×3按行排列

模组夹角

Ang

-66

两模组夹角

左侧为基础视角,右侧模组为正数,左侧为负

旋转矩阵R

3x3的单位正交旋转矩阵

两相机的相对位姿以及两坐标系转换由RT表示PR=[Rt]PL

平移矩阵T

3x1的平移矢量

模组悬挂高度

投影面距地高度

变量

深度图像

3.4方程求解待定参数

针对单个模组,可得到4点的投影面坐标(已知投影面长宽,后续可以设置归一化因子,通过深度值计算得出投影面长宽)和对应的深度图(图像uv)坐标及深度值,可通过求解PnP问题计算Rt矩阵,OpenCV中cv::solvePnP,使用P3P输入4组点,3组求出多个解,第四组确定最优解。

3.5求解H加速计算

对单个模组求取单应性矩阵H=KM=KRt,方便后续坐标转换

计算

4.1深度图坐标输入

输入深度图中识别的触墙物体点Ph坐标及深度值(u,v,,z),即可得到投影面坐标系中的点Pw(xw,yw,zw),xw与yw即为投影面坐标值。

4.2对投影面坐标值转换为投影仪像素坐标

根据投影仪长宽对坐标值归一化,分别乘投影仪横纵方向的分辨率可得到像素坐标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值