ステレオ写真編集用のWindowsソフト「ステレオフォトメーカー」には、ボタンを押すだけで、左右画像の位置調整する機能が実装されています。
どうやってこの機能を実現しているかを解説したいと思います。
まず、良いステレオ写真とは
1. 良い写真、感動的な写真(腕を磨くw)
2. 最適なステレオベース(被写体に合わせ、最適なカメラ間距離で撮影する)
3. 左右画像の縦ずれを極力少なくする
4. ウィンドウズバイオレーションが無いようにする
この中で、1,2は、後から編集では直せませんので、素晴らしい3D写真が撮影できるように腕を磨きましょう
3,4は、編集で調整可能であり、特に3に関しては、「ステレオフォトメーカー」の左右自動位置調整機能が便利です。
何故、縦ずれが発生するのでしょう?
ステレオ写真は、2台のカメラをステレオリグ上に並べて撮影したり、簡易的なやり方では、1台のカメラで撮影位置を左右に移動した2枚の写真を撮影、専用のステレオカメラで撮影する等があります。
縦ずれの発生する要因としては、
1. 左右の写真の大きさの違い(ズーム比の違い等)
2. 左右の写真の傾きの違い
3. 左右の写真の水平方向の撮影角度の違い(水平方向の台形歪)
4. 左右の写真の垂直方向の撮影角度の違い(垂直方向の台形歪)
5. 左右の写真の撮影位置の上下ズレ
6. 左右カメラのレンズの歪み(糸巻、樽型等)
この中で、5は、編集では直せませんので、極力、カメラは同じ高さで撮影してください。
また、6も、各カメラのレンズ歪みが判れば、個別には直せる可能性はありますが、自動で直す事は困難です。
ということで、1〜4の原因による縦ずれを自動で直す事を考えました。
ヒントは、パノラマ写真合成ソフトでした。
パノラマ写真の合成は、オーバーラップする共通部分の特徴点を検出し、2枚の特徴点マッチングを行う事で、繋ぎ合わせています。
最初は、多くのフリーのパノラマ写真の合成ソフトで使われていた「SIFT」という特徴点検出アルゴリズムを使いました。
「SIFT」は、今は、特許権が切れてフリーで使えますが、当時は、特許権の問題で、別のアルゴリズムに変更しましたが、基本的な考え方は変わっていません。
特徴点マッチングに関しては、下記のように色んな解説サイトがありますので参照してください。
https://nokixa.hatenablog.com/entry/2021/08/25/003401
いよいよ、左右ステレオ写真の自動縦ずれ修正のやり方です。
1.左右視差のある2枚の画像の特徴点マッチングを行う
注意しなければいけない事は、特徴点マッチングが正解とは限らないということです(かなり間違いが含まれます)
2.大きさを合わせる
左右の特徴点の座標を画像拡大/縮小ロジックで可変し、左右特徴点の縦位置の差の平均値が最小になるズーム差を算出する
この時、平均から、極端に外れる特徴点の組み合わせは、エラーとして除去する。
3.角度を合わせる
左右の特徴点の座標を回転ロジックで可変し、左右特徴点の縦位置の差の平均値が最小になる角度差を算出する
この時、平均から、極端に外れる特徴点の組み合わせは、エラーとして除去する。
4.左右画像の水平方向の台形歪
左右の特徴点の座標を水平台形歪ロジックで可変し、左右特徴点の縦位置の差の平均値が最小になる角度差を算出する
この時、平均から、極端に外れる特徴点の組み合わせは、エラーとして除去する。
5.左右画像の垂直方向の台形歪
左右の特徴点の座標を垂直台形歪ロジックで可変し、左右特徴点の縦位置の差の平均値が最小になる角度差を算出する
この時、平均から、極端に外れる特徴点の組み合わせは、エラーとして除去する。
(実際にステレオフォトメーカーに組み込んだロジックでは、2〜4を複数回行い、可変量を細かくすることで、より高精度なずれ補正値の算出を行っています。)
6.縦位置の差の平均値が"0"になる縦方向の補正値と、Windowsバイオレーションを無くす横方向の補正値を算出する
7.以上で求めた補正値を画像に適用する。
(実際は、画像に対し、各々の補正値を適用する度に、画像劣化が進むので、画素の座標に対し、補正値を適用し、最後に画像に戻す事で、画質劣化を抑えています)
ご質問のある方は、メールをお願いします。