gpt4 book ai didi

OpenCV Transformationmatrix : affine vs. 透视变形

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

您好,我目前正在研究图像转换,但是关于变形,我不明白一件事。即 warpAffine() 之间有什么区别?和 warpPerspective()

我并不是说转换有什么不同。我的问题是为什么我可以在上述两个函数中使用相同的转换矩阵 (3x3)?并且输出是否相同(如果使用相同的转换矩阵运行)

或者什么时候用一个,什么时候用另一个?

最佳答案

Affine transformations可以被认为是所有可能的透视变换的子集,又名 homographies .

它们之间的主要功能区别是仿射变换总是将平行线映射到平行线,而单应性可以将平行线映射到相交线,反之亦然。

Different transformations

从一个规则的正方形开始,您可以看到平移和欧几里德变换(旋转、均匀缩放和平移)保持纵横比;应用的结果仍然是一个正方形。然而,仿射变换可以在任一方向将正方形挤压成矩形,并且它还可以为正方形提供剪切/倾斜。但是请注意,应用仿射变换后的形状是一个平行四边形——边仍然是平行的。对于单应性,情况不必如此。平行线可以弯曲,使它们相交。所以矩形经过单应变换的结果是一般四边形,而矩形经过仿射变换的结果总是平行四边形。


函数 warpAffine()warpPerspective() 不一定是两个不同的函数。任何写成 3x3 矩阵的仿射变换都可以传递给 warpPerspective() 并进行相同的变换;换句话说,像 warpPerspective 这样的函数可以用来获取 2x3 和 3x3 矩阵。但是,由于有额外的行,透视变换会应用额外的步骤,因此这样做效率不高。此外,warpPerspective 执行除法,因此可能会在操作中引入更大的浮点错误,而这对于仿射变换来说是不必要的。最后,可以在不创建 3x3 方阵并将其反转的情况下反转仿射扭曲。所以总而言之,将它们作为单独的函数保留是有意义的。

关于OpenCV Transformationmatrix : affine vs. 透视变形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45637472/

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