1

OpenCVを使って画像処理プログラムを書いています。

いくつかの透視変換を使用して画像を変換する必要があります。透視変換は、マトリックスによって定義されます。単純な変換行列 (回転、平行移動など) を乗算することで、複雑なアフィン変換を取得できることはわかっています。しかし、2 つの透視変換行列を乗算しようとしたときに、結果として使用される最初と 2 番目の行列に対応する変換行列が得られませんでした。

では、結果として生じる複数の透視変換の行列を取得するにはどうすればよいでしょうか?

4

1 に答える 1

1

2 つの透視行列 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 に答える