-我认为这是一个简单的问题。我使用以下90多个点来确定单应矩阵(M):
M, mask = cv2.findHomography(source_pts, destination_pts, cv2.RANSAC,5.0)
我已使用以下命令分解了单应性矩阵:
num, Rs, Ts,Ns = cv2.decomposeHomographyMat(M, camera_matrix)
这将返回4个解数(num),一个旋转矩阵,一个平移矩阵和Ns(请记住它是什么)。
我对翻译矩阵感兴趣。
首先...翻译矩阵似乎列出了4个解决方案。这是正确的吗?
第二,最令人困惑每个解决方案都有3个值...例如[-0.6097,-0.2626、0.01638967]。
我如何从分解矩阵返回的值转换成上述形式的转换矩阵?
感谢您的帮助。
正如documentation所说:
此功能提取两个视图之间的相对摄像机运动从由平面引起的单应性H观察平面物体。还必须提供内部摄像机矩阵K。函数may最多返回four个数学解集。至少两个如果点对应是可通过应用正深度约束获得(所有点必须位于镜头前)。
您的第一个问题:
翻译矩阵似乎列出了4个解决方案。这是对吗?
是的,可能是因为没有唯一的解决方案。另一方面,不确定您是否总是会得到4个解决方案。
第二个问题:
每个解决方案都有三个要素,为什么?
原因是您的解决方案编号也应为3,因为每个返回的列表都包含与找到的解决方案数量(reference)一样多的元素。
最后:
我的理解是,翻译矩阵的形式为
不仅平移矩阵,旋转矩阵也具有相似的形式。