人脸偏离图像中心时头部姿态估计算法的异常表现
头部姿态估计问题解析
问题原因
- 近似焦距的系统性误差:你参考deepgaze用图像尺寸近似焦距的方式,是一种非常粗略的内参假设,仅在相机真实焦距恰好匹配图像尺寸时才有效。当人脸偏离图像中心,透视投影的几何关系被近似内参扭曲,PnP算法会错误地将人脸的位置偏移解读为俯仰(pitch)姿态变化。
- 与入射角的关系:人脸在墙面上上下移动时,相机光轴与人脸平面的入射角确实改变,但如果内参准确,理论上pitch角仍应为0(因为人脸本身没有俯仰旋转)。当前的误差并非入射角直接导致,而是近似内参无法正确建模这种透视关系。
- 与径向畸变的关系:你设置畸变系数为0可能会有影响,但多个实现都存在该问题,说明核心原因不是畸变,而是内参近似的误差。
调整方法
- 校准相机获取真实内参:用棋盘格校准法得到准确的焦距(fx, fy)、主点(cx, cy)和畸变系数,这是彻底解决问题的方案,能让PnP算法正确建模透视投影关系。
- 优化内参估算方式:若无法校准,可结合相机硬件参数估算焦距,比如通过公式
f = (图像宽度 × 传感器宽度) / 镜头实际焦距(mm)计算,前提是知道镜头焦距和传感器尺寸;或者用大量样本统计校准近似内参。 - 修正主点位置:默认主点设为图像中心可能存在偏差,若能估算更准确的主点坐标,也能降低姿态估计误差。
是否属于预期行为
这不是预期行为。人脸在墙面上平面移动时自身姿态未发生俯仰变化,正确的姿态估计应输出pitch=0。当前的偏差是由于近似内参的局限性导致PnP求解错误,属于方法缺陷,而非理论上的必然结果。
内容的提问来源于stack exchange,提问作者cyrusbehr
相关产品推荐
相关产品推荐

