大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
一般我们是将相机模型简化成针孔相机模型,
那么相平面与相机坐标系之间的关系为:
通常为了方便,会把相平面放在小孔与目标点之间。
下面就介绍下相平面投影的三种不同方法。
透视投影(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
欢迎关注公众号OpenCV图像处理, 里面会定期分享视觉相关知识…
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188146.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...