gpt4 book ai didi

OpenCv warpPerspective单应性元素的意义

转载 作者:太空宇宙 更新时间:2023-11-03 21:57:57 24 4
gpt4 key购买 nike

我对投影变换矩阵中元素的含义有疑问,例如在 OpenCv 使用的单应性中 warpPerspective .

我知道仿射变换的基础知识,但在这里我对射影变换更感兴趣,这意味着在下面显示的矩阵中元素 A31A32:

A11 A12 A13
A21 A22 A23
A31 A32 1

我对这些值进行了一些调整,这意味着所有其他元素都有一个固定的数字。含义:

 1   0   0 
0 1 0
A31 A32 1

只有投影元素。

但是究竟是什么导致了元素 A31 和 A32 呢?比如A13和A23负责水平和垂直平移。

这两个元素有简单的解释吗?就像具有正值意味着......,具有负值意味着......。 S.th.像那样。

希望有人能帮助我。

最佳答案

牛顿的描述是正确的,但实际查看转换以了解正在发生的事情以及它们如何与转换矩阵中的其他值一起工作以使其更有意义可能会有所帮助。我将提供一些带有动画的 python/OpenCV 示例,以显示这些值的作用

import numpy as np
import cv2
img = cv2.imread('img1.png')
h, w = img.shape[:2]

# initializations
max_m20 = 2e-3
nsteps = 50
M = np.eye(3)

所以在这里我将变换矩阵设置为恒等式(无变换)。我们希望看到改变变换矩阵 M 中 (2, 0) 处的元素的效果,因此我们将通过在 之间线性间隔的 nsteps 循环来制作动画>0max_m20

for m20 in np.linspace(0, max_m20, nsteps):
M[2, 0] = m20
warped = cv2.warpPerspective(img, M, (w, h))
cv2.imshow('warped', warped)
k = cv2.waitKey(1)
if k == ord('q') & 0xFF:
break

我将此应用到从 Oxford's Visual Geometry Group 拍摄的图像上.

m20

确实,我们可以看到这类似于围绕与图像左边缘对齐的点旋转相机,或者围绕轴旋转图像本身。但是, 与此略有不同。请注意,顶部边缘始终保持在顶部,这有点奇怪。我们不是像上面那样绕轴旋转,而是想象顶部边缘也会开始下降到右侧边缘。像这样:

m20m10

好吧,如果您正在考虑转换,获得此转换的一种简单方法是采用上面的转换,并添加一些倾斜失真,以便在插入右下角时将右上角向下推向上。这实际上正是这个 View 的创建方式:

M = np.eye(3)
max_m20 = 2e-3
max_m10 = 0.6
for m20, m10 in zip(np.linspace(0, max_m20, nsteps), np.linspace(0, max_m10, nsteps)):
M[2, 0] = m20
M[1, 0] = m10
warped = cv2.warpPerspective(img, M, (w, h))
cv2.imshow('warped', warped)
k = cv2.waitKey(1)
if k == ord('q') & 0xFF:
break

因此,在我看来,考虑这些矩阵中的透视图的正确方法是将倾斜条目和最后一行放在一起。这是单应矩阵中角度实际被修改的两个地方*;否则,它只是旋转、缩放和平移——所有这些都是角度保持。

*Note: Actually, angles can be changed in one more way that I didn't mention. Affine transformations allow for non-uniform scaling, which means you can stretch a shape in width and not in height or vice-versa, which would also change the angles. Imagine if you had a triangle and stretched it only in width; the angles would change. So it turns out that non-uniform scaling (i.e. when the first and middle element of the transformation matrix are different values) can also modify angles in addition to the perspective change and shearing distortions.

请注意,在这些示例中,这同样适用于具有另一个倾斜位置的最后一行中的第二个条目;唯一的区别是它发生在顶部而不是左侧。在这两种情况下,负值类似于沿该轴旋转平面朝向而不是远离相机。

关于OpenCv warpPerspective单应性元素的意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45761682/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com