模拟Matlab中的相机运动
-
21-12-2019 - |
题
我们有一台摄像机,距离地面有5米的街道。一架飞机可以安装在街道的每个左侧和右侧的所有建筑物上。假设这些平面垂直于地面并平行于街道道路。而且,假设在相机坐标系中,X轴垂直于街道右侧的建筑物,Y轴平行于街道道路,因此Z轴向上垂直于地面向上。 假设我们有一个分段方法,以强大地将图像段分段为四个区域天空,地面,左壁和右墙。我们希望从地面距离相机2米到高度3米。给定我在高度5的原始位置拍摄的图像,使用i的内容合成新图像j,就像它从地面3米的高度一样。
解决方案
您需要的是a 3d投影在2个坐标空间(相机和世界)之间并获得a 视图矩阵,它将表示在Y轴上转换后视图的转换。
由于没有涉及旋转,因此您的任务不应该很难。 以下是您应遵循的步骤:
- 通过定位和定向相机并从中导出矩阵(相机空间) 来设置相机空间
- 构造一个矩阵,从世界空间(您已经有)进入相机空间
- 将顶点(此处的图像像素位置)从世界空间到相机空间
- 使用翻译矩阵平移这些位置
在您的情况下,这应该是:
[ 1 0 0 ] # notice that y axis is
T = [ 0 -2 0 ] # translated while the
[ 0 0 1 ] # other two stay the same
.
- 将翻译的差点映射回世界空间,享受您的新视图
此链接是有用的 http://schabby.de/view-matrix/ 但是您可以还发现了很多其他类似的资源解释了这个过程。它可能已经在您正在服用此特定类的参考文本书中。
不隶属于 StackOverflow