作为my previous question关于确定相机参数的后续内容,我提出了一个新问题。
我有两张相同矩形的照片:
第一个是没有任何变换的图像,并按原样显示矩形。
第二张图像显示了应用了一些3d变换(XYZ旋转,缩放,XY平移)后的矩形。这导致矩形看起来像一个梯形。
我希望下面的图片描述我的问题:
alt text http://wilco.menge.nl/application.data/cms/upload/transformation%20matrix.png
如何确定哪些转换(更具体地说:转换矩阵)导致了这种转换?
我知道两个图像中角落的像素位置,因此我也知道角落之间的距离。
答案 0 :(得分:2)
我很困惑。这是2d还是3d问题?
我理解它的方式,你有一个嵌入3d空间的扁平矩形,你正在看它的两个2d“图片” - 一个原始版本和一个基于转换版本。这是对的吗?
如果这是正确的,那么没有足够的信息来解决问题。例如,假设两张图片看起来完全一样。这可能是因为翻译是身份,或者可能是因为翻译将矩形移动了两倍远离相机并使其大小加倍(从而使其看起来完全相同)。
答案 1 :(得分:1)
这是一个数学问题,而不是编程..
你需要定义一组方程(你的变换矩阵,我的猜测是3个方程),然后解决角点的4个变换。
我只用德语单词描述过......所以上面的内容听起来很奇怪......
答案 2 :(得分:0)
根据您所拥有的信息,这并不容易。不过,我会给你一些想法。如果你有角落的3D坐标,你会有更轻松的时间。这是基本的想法。
如果没有z坐标,您会发现这很困难,但这是一般过程。我希望这会有所帮助。
答案 3 :(得分:0)
解决方案并不是唯一的,正如Alex319指出的那样。
如果第二张图像真的像你说的那样是梯形,那么这不会太难。由于透视,它是一个梯形(不是平行四边形),所以它必须是等腰梯形。
绘制两个对角线。它们在矩形的中心相交,因此负责翻译。
旋转梯形,直到其平行边与原始矩形的两边平行。 (哪两个?没关系。)
通过中心画出第三个平行线。将其缩放到您选择的矩形的边上。
现在轮换出飞机。测量从中心到其中一个平行边的距离,并使用正弦定律。
如果它不是一个梯形,只是一个四边形,那么它会更难,你将不得不使用对角线之间的角度来找到旋转轴。