为什么openCV分解单应转换矩阵具有三个值?

问题描述 投票:0回答:1

-我认为这是一个简单的问题。我使用以下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]。

我的理解是,翻译矩阵的形式为:translation matrix

https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html

我如何从分解矩阵返回的值转换成上述形式的转换矩阵?

感谢您的帮助。

python opencv homography
1个回答
0
投票

正如documentation所说:

此功能提取两个视图之间的相对摄像机运动从由平面引起的单应性H观察平面物体。还必须提供内部摄像机矩阵K。函数may最多返回four个数学解集。至少两个如果点对应是可通过应用正深度约束获得(所有点必须位于镜头前)。

您的第一个问题:

翻译矩阵似乎列出了4个解决方案。这是对吗?

是的,可能是因为没有唯一的解决方案。另一方面,不确定您是否总是会得到4个解决方案。

第二个问题:

每个解决方案都有三个要素,为什么?

原因是您的解决方案编号也应为3,因为每个返回的列表都包含与找到的解决方案数量(reference)一样多的元素。

最后:

我的理解是,翻译矩阵的形式为

不仅平移矩阵,旋转矩阵也具有相似的形式。

© www.soinside.com 2019 - 2024. All rights reserved.