zl程序教程

您现在的位置是:首页 >  其它

当前栏目

投影矩阵介绍[通俗易懂]

介绍 通俗易懂 矩阵 投影
2023-06-13 09:15:00 时间

大家好,又见面了,我是你们的朋友全栈君。

一般我们是将相机模型简化成针孔相机模型,

那么相平面与相机坐标系之间的关系为:

通常为了方便,会把相平面放在小孔与目标点之间。

下面就介绍下相平面投影的三种不同方法。

透视投影(perspective projection)

通过相似三角形(下图两个虚线三角形)

可以得到下列关系:

展开就是:

这里x_h等为齐次坐标系坐标,X等为相机坐标系点,x等则为相平面上的透视投影点, 可以看出,投影点的位置不仅仅是与X等有简单的缩放关系,还和Z成反比,Z越大投影点x等越小,这就解释了为什么相机拍摄的图片近大远小。

正交投影

正交投影可以理解是透视投影的一种极端情况,f趋近无穷大,f/Z趋近1,这时矩阵形式就写成:

展开为:

这里w为1. 可以看出,相平面上的点就是相机坐标系的点,简单粗暴,直接去掉了Z。这种投影方式没法反应近大远小的特点,所以就有了下面稍微复杂点的正交投影:缩放正交投影。

缩放正交投影(弱透视模型)

由于正交投影简化过猛,直接丢弃了Z,这里为了体现缩放又把Z加回来了,只不过这里的Z是个常值,比如一个三维的点云,可以将分母设为点云Z的均值,这样就实现了投影的缩放(依然保留了平行直线的关系)

另外值得一提的是,使用深度学习对3d 人脸进行预测时,通常使用的是弱透视模型,得到的head pose并不是相对拍摄的相机坐标系的,因为真实相机是透视投影模型,

上图左边a,b和c为人头相对相机坐标系的x轴做了平移,如果使用弱透视投影,投影的结果应该是右下角三张图,看起来人头都没旋转。。但是如果按照透视投影方法来投影,得到的就是右上三张图,如果要获取相对相机坐标系下人头的head pose,那么需要对yaw和pitch方向做下角度补偿。

参考链接:

https://www.cse.unr.edu/~bebis/CS791E/Notes/PerspectiveProjection.pdf

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。