我有一组2D到3D点对应,并从这些对应(基本上,假设一个正交投影)1估计仿射摄像机矩阵。相机估计的输出是一个3x4矩阵,其中第三行是[0, 0, 0, 1] (仿射约束)。
现在从这个相机矩阵,我想渲染我的模型使用OpenGL。因此,在本质上,创建一个ModelView和(正交) Projection矩阵从相机矩阵我有。
我已经阅读了几个小时关于相机矩阵分解/分解的材料,但是所有这些都是关于透视相机的,而且由于"z“信息在我的矩阵中丢失了,所以我无法应用这些技术。
我尝试过多次尝试,其中大多数都在早期阶段就失败了。我尝试过的一件事是使用矩阵的第一行和第二行的点积(当然没有最后一列)来创建一个转换z的新行,但这只是[0, 0, 1],这当然是有意义的。我尝试过的另一件事是在估计相机矩阵之前,将我的2D点转换成剪辑坐标空间(即“倒转”窗口变换),这样我就可以将窗口变换和翻转y(在我的屏幕空间中,原点在左上方)从图片中移出。
坦率地说,我不知道如何从根本上解决这个问题。
1:估计从世界到图像对应的仿射相机矩阵的黄金标准算法,算法7.2在多视图几何中,Hartley & Zisserman,第2版,2003年。
发布于 2015-07-27 12:36:53
仿射相机(例如,这里)只执行正射投影,然后是仿射翘曲。
由于通常可以使用OpenGL正射相机作为任意图像转换的栅格化设备,仿射相机可模拟如下:
如果性能有问题,则可以优化此序列。阅读“渲染到纹理”的方法。
https://stackoverflow.com/questions/31652364
复制相似问题