头部姿态获取算法概述(坐标系转换)

头部姿态获取算法概述

—— 才疏学浅, 难免有错误和遗漏, 欢迎补充和勘误.

获取头部运动姿态的流程图如下:
在这里插入图片描述

图1. 获取头部运动姿态的流程图
  • 首先通过Dlib库得到2D人脸68个特征关键点,再通过3D Morphable Model等模型匹配算法拟合3D人脸特征点。摄像机中的各个坐标系的位置关系如下:
    在这里插入图片描述
图2. 各个坐标系的位置关系
  • 其中,世界坐标系为:Ow-XwYwZw;相机坐标系为:0c-XcYcZc;图像坐标系为:o-xy;像素坐标系为:图像左上角-uv,单位为像素。P为世界坐标系中的一点; p为P在图像坐标系中的投影点;f为焦距,即Oc到o的距离。
  1. 世界坐标系Ow-XwYwZw通过旋转和平移转换到相机坐标系0c-XcYcZc
    在这里插入图片描述
图3. 世界、相机坐标系之间的旋转和平移转换

转换公式为: [ X c Y c Z c 1 ] = [ R T 0 → 1 ] [ X w Y w Z w 1 ] \left[\begin{array}{c}X c \\ Y c \\ Z c \\ 1\end{array}\right]=\left[\begin{array}{ll}R & T \\ \overrightarrow{0} & 1\end{array}\right]\left[\begin{array}{c}X w \\ Y w \\ Z w \\ 1\end{array}\right] XcYcZc1=[R0 T1]XwYwZw1

其中旋转矩阵R的规格是3*3,平移矩阵T的规格是3*1,且都为未知量。


  1. 相机坐标系0c-XcYcZc通过三角形相似关系的透视投影转换到图像坐标系0-xy:
    在这里插入图片描述
图4. 相机、图像坐标系之间的透视投影转换

∵ △ A B O c ∼ △ o C O c ⋅ \because \triangle A B O c \sim \triangle o C O c \cdot ABOcoCOc △ P B O c ∼ △ p C O c \triangle P B O c \sim \triangle p C O c PBOcpCOc
∴ { x = f X c Z c y = f Y c Z c \therefore\left\{\begin{array}{l}x=f \frac{X c}{Z c} \\ y=f \frac{Y c}{Z c}\end{array}\right. {x=fZcXcy=fZcYc
将上式写为矩阵表达式为: Z c [ x y 1 ] = [ f 0 0 0 0 f 0 0 0 0 1 0 ] [ X c Y c Z c 1 ] Z c\left[\begin{array}{l}x \\ y \\ 1\end{array}\right]=\left[\begin{array}{cccc}f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0\end{array}\right]\left[\begin{array}{c}X c \\ Y c \\ Z c \\ 1\end{array}\right] Zcxy1=f000f0001000XcYcZc1


  1. 图像坐标系0-xy通过伸缩和平移转换到像素坐标系uv: p ( u , v ) : { u = x d x + u 0 v = y d y + v 0 p(u, v):\left\{\begin{array}{l}u=\frac{x}{d x}+u_{0} \\ v=\frac{y}{d y}+v_{0}\end{array}\right. p(u,v):{u=dxx+u0v=dyy+v0
    在这里插入图片描述
图5.图像、像素坐标系之间的伸缩和平移转换

其中 d x dx dx d y dy dy为单个像素在 x x x轴和 y y y 轴方向上的物理长度,将上式写为矩阵表达式为:

[ u v 1 ] = [ 1 d x 0 u 0 0 1 d y v 0 0 0 1 ] [ x y 1 ] \left[\begin{array}{l}u \\ v \\ 1\end{array}\right]=\left[\begin{array}{ccc}\frac{1}{d x} & 0 & u_{0} \\ 0 & \frac{1}{d y} & v_{0} \\ 0 & 0 & 1\end{array}\right]\left[\begin{array}{l}x \\ y \\ 1\end{array}\right] uv1=dx1000dy10u0v01xy1


  • 至此,由世界坐标系0w-XwYwZw到像素坐标系uv之间的转换公式可合写为:
    在这里插入图片描述
  • 其中相机的内参只由相机本身决定,由张正友标定法等标定出来;相机的外参会随着世界坐标系中物体的位置而变化,当计算出相机畸变后,把3D参考点、2D关键点、相机内部参数和相机的畸变输入到OpenCV的solvePnP函数中求解出旋转矩阵R和平移矩阵T,最后通过欧拉角计算出驾驶人的头部运动姿态,即得到头部运动的pitch(俯仰角)、yaw(偏航角)和roll(翻滚角),如下图所示:
    在这里插入图片描述
图6. pitch、yaw和roll角度的表示
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值