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

投影矩阵介绍[通俗易懂]一般我们是将相机模型简化成针孔相机模型,那么相平面与相机坐标系之间的关系为:通常为了方便,会把相平面放在小孔与目标点之间。下面就介绍下相平面投影的三种不同方法。透视投影(perspectiveprojection)通过相似三角形(下图两个虚线三角形)可以得到下列关系:展开就是:这里x_h等为齐次坐标系坐标,X等为相机坐标系点,x等则为相平面上的透视投影点,可以看出,投影点的位置不仅仅是与X等有简单的缩放关系,还和Z成反比,Z越大投影点x等越小,这就

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

Image

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

Image

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

Image

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

透视投影(perspective projection)

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

Image

可以得到下列关系:

Image

展开就是:

Image

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

正交投影

Image

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

Image

展开为:

Image

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

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

Image

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

Image

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

Image

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

参考链接:

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

欢迎关注公众号OpenCV图像处理, 里面会定期分享视觉相关知识…

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188146.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号