1

我正在使用 OpenCV 编写一些图像处理程序。

我需要使用几个透视变换来变换图像。透视变换由矩阵定义。我知道,我们可以通过简单变换矩阵(旋转、平移等)的乘法来获得复杂的仿射变换。但是当我尝试将两个透视变换矩阵相乘时,我没有得到对应于随后使用的第一个和第二个矩阵的变换矩阵。

那么,我怎样才能得到几个随之而来的透视变换的矩阵呢?

4

1 回答 1

1

让你有两个透视矩阵 C:(x,y)->(u,v) 和 D:(u,v)->(r,g):

你试图得到 M:(x,y)->(r,g)

您应该将 (1),(2) 中的 ui 和 vi 代入方程 (3),(4)。

 ui = (c00*xi + c01*yi + c02) / (c20*xi + c21*yi + c22) (1)

 vi = (c10*xi + c11*yi + c12) / (c20*xi + c21*yi + c22) (2)

 ri = (d00*ui + d01*vi + d02) / (d20*ui + d21*vi + d22) (3)

 gi = (d10*ui + d11*vi + d12) / (d20*ui + d21*vi + d22) (4)

之后你可以看到 M = D*C

于 2012-12-10T00:07:31.740 回答