gpt4 book ai didi

python - opencv中的单应性和图像缩放

转载 作者:太空宇宙 更新时间:2023-11-03 22:50:10 25 4
gpt4 key购买 nike

我正在使用 OpenCV 中的标准方法计算两个图像 img1img2 之间的单应性(图像主要包含一个平面对象,因此它们之间的单应性效果很好)在 python 。也就是说,我使用 sift 计算图像之间的点匹配,然后调用 cv2.findHomography

为了加快计算速度,我将两个图像缩小为 small1small2 并对这些较小的副本执行计算,因此我计算了单应矩阵 H,它将small1映射到small2。但是,最后,我想使用计算单应矩阵将一张全尺寸图像 img1 投影到另一张全尺寸图像 img2 上。

我以为我可以按以下方式简单地转换单应矩阵 H H_full_size = A * H * A_inverse 其中 A 是矩阵表示从 img1small1 的缩放比例,A_inverse 是它的倒数。但是,这不起作用。如果我将 cv2.warpPerspective 应用于具有 H 的缩小图像 small1,一切都会按预期进行,结果(大部分)与 小2。如果我将 cv2.warpPerspective 应用于具有 H_full_size 的全尺寸图像 img1,结果不会映射到 img2

但是,如果我使用 A 投影点匹配(在按比例缩小的图像上检测到)(使用类似 projected_pts = cv2.perspectiveTransform(pts, A) 的方法)然后我根据这些计算 H_full_size,一切正常。

知道我在这里做错了什么吗?

最佳答案

在我看来,问题在于单应性应用的透视投影是非线性变换(仅在使用齐次坐标时才为线性变换),不能表示为正常变换矩阵。因此,将这种透视投影矩阵与其他一些变换相乘会产生不良结果。

您可以尝试将原始矩阵 H 元素明智地乘以:

S = [1,1,scale ; 1,1,规模; 1/比例,1/比例,1]

H_full_size = S * H

如果将原始图像的大小减小 2,则比例为 2。

关于python - opencv中的单应性和图像缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39668174/

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