前回までの検証で、位相限定相関法により、2つの画像の上下(ティルト)と左右(パン)のズレを補正できることが分かりました。
前回の結果です。
左右2つの画像のシフト量は、
X: -192.355[pixel]Y: 46.7339[pixel]
でした。
カメラ(αNEX-5R)を三脚の雲台に固定し、そのまま左右にパンしたはずなのですが、なぜこれだけ上下にズレてしまったのか、このズレを補正するにはどうすれば良いか、さまざまに考えを巡らせていたところ、風呂に浸かっている時に、ハタと気づきました。0xF9A0
この上下のズレは、「カメラのロール(左右の回転)によるものではないか」と。
カメラを雲台に載せて左右にパンしたので、「ロールによるズレはないはずだ」というのは、単なる思い込みでした。
思い起こせば、確かに、雲台に水準器は付いていましたが、公道のド真ん中で、歩行者信号が青の時に、横断歩道の上から急いで撮ったので、水準器を合わせているヒマはありませんでした。
ゆえに、水平が出ていないまま(カメラがロールしたまま)左右にパンしたため、上記のような上下のズレが生じてしまったようです。
さて、この上下のズレを生じさせたカメラのロール角ですが、どのようにすれば求められるでしょうか。
原画像の大きさは1920×1080で、上下のズレは、上記のとおり、Y方向に46.7339[pixel]なので、回転軸を画像の中心(960, 540)とすると、ロール角は、
tan-1(46.7339/960) = 2.787°
と求められます。
試しに、左右それぞれの画像を2.787°回転させ、改めて位相限定相関法によりシフト量を推定し、2つの画像を合成すると、以下のようになります。
傾きを補正して、リサイズすると、以下のようになります。
いかがでしょうか。
2つの画像のつなぎ目の輝度値の変化が少し不自然に見えますが、それ以外は、かなり“それらしく”見えるかと思います。
(つなぎ合わせ方法は、目下、アルファブレンディングに改良中です)
フルハイビジョンの画像を2枚重ね合わせた、堂々の3840×1080の解像度です。0xF9C6
〔関連情報〕
・【OpenCV】位相限定相関法による画像マッチング(2)
・【OpenCV】位相限定相関法による画像マッチング(1)
・【OpenCV】ステレオカメラからの画像入力(1)
・【OpenCV】位相画像の生成
・【OpenCV】広角レンズの歪み補正
Post Comment