2つの画像で計算されたホモグラフィと、同じ画像で逆さまに計算されたホモグラフィとの間のリンクは何ですか?


9

OpenCVの、私はこれらの二つの画像、たとえば、間のホモグラフィを計算します:

最初の画像

そして

2番目の画像

右側の変な白いフォルムは気にしないでください。これは私が使用するスマートフォンホルダーによるものです。findHomography()関数によって与えられるホモグラフィFast機能検出器とHammingLUT記述子マッチャーで検出された点を使用)は次のとおりです。

A = [ 1.412817430564191,  0.0684947165270289,  -517.7751355800591;
     -0.002927297251810,  1.210310757993256,     39.56631316477566;
      0.000290600259844, -9.348301989015293e-05,  1]

ここで、同じプロセスを使用して、imagemagickを使用して、180度回転した(逆さまにした)同じ画像間のホモグラフィを計算します(実際には、90度の回転または270度...)どうぞ:

最初の画像を上下逆にします

そして

2番目の画像を上下逆にします

これらの画像を使用すると、ホモグラフィは次のようになります。

B = [ 0.7148688519736168,  0.01978048500375845,  325.8330631554814;
     -0.1706219498833541,  0.8666521745094313,    64.72944905752504;
     -0.0002078857275647, -5.080048486810413e-05,  1]

ここで問題は、AとBをどのように関連付けるかです。Aの最初の2つの対角値はBの最初の対角値に近いですが、あまり正確ではありません(0.71486885ではなく.707805537)。私の最終的な目的は、必要な関係を使用して最終的なマトリックスを変換し、コストのかかる画像回転の計算を回避することです。

回答:


4

Hba=RtTd
Rbatabd

2つの行列間の関係は、平面の法線ベクトルにあります。したがって、(ホモグラフィ行列から)平面の法線ベクトルを取得し、それに回転を適用して、上記の式を使用してホモグラフィ行列を計算する必要があります。ホモグラフィ行列を正しく分解するには、これらのコードサンプルこのペーパーをご覧ください


どういう意味かわかりません。方程式から、私は通常のMat invT = 1./t; Mat n = invT.t() * (H - R);(実際n/d。ここで、「回転を適用する」と3x1ベクトルが得られますが、それを使用してホモグラフィマトリックスを再度計算するにはどうすればよいですか?おかげで
ステファンPéchard

より多くの情報を追加しました、それが明確になることを願っています。
Geerten 2012年

なぜ-t / dであり、+ t / dではないのですか?
Maystro、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.