『コンピュータビジョン-視覚の幾何学-』を読んだ
概要
『コンピュータビジョン-視覚の幾何学-』を読んだ。
コンピュータビジョンの中でも3D再構築やSLAMやらをやる上では非常に重要になる(と思っている)のと、Deep以前のコンピュータビジョンの基礎をガッチリ固めておきたかったため。
残念ながらこの本はAmazonではまともな出品がなく、偶然メルカリで見つけたポチ!った。ラッキーだった。
内容メモ
1章
イントロ。
3次元世界を2次元画像に投影すると情報の欠落が生じる。同じ対象物であっても視点によって異なる観測を得てしまう。多く不定性が残る画像データの中からタスクに必要な情報を抜き出すのがコンピュータビジョンの主眼。
2章
射影空間と変換を記述するための数学的準備。
斉次座標
ユークリッド空間+無限遠要素からなる射影空間内の点を表すには、ユークリッド空間での次元にもう1次元加えた座標で表す。
投影からカメラモデルへ
透視投影->射影カメラ(11自由度)
弱透視投影->アフィンカメラ(8自由度)
3章
各変換に関する不変量
投影によって乱されない対象物固有の特徴量を得ることがCVの肝。
回転変換
2点間の距離、2直線間の角度、閉領域の面積、回転中心からの距離、などなど
ユークリッド変換
2点間の距離、2直線間の角度、閉領域の面積、など
相似変換
距離、面積の比
アフィン変換
一直線上の3点の像の距離の比
平面上の4点の作る面積の比
射影変換
一直線上の4点による複比
平面上の5点による不変量
4章
エピポーラ幾何の話。
最も一般的な射影カメラの場合
異なる画像間の対応関係”エピポーラ制約”がかかる。
行列Fは3x3で階数2の行列で、Fundamental行列という。
定数倍の不定性があるので自由度は7である。
Fは8点の対応から線形に求めることが可能(8点アルゴリズムとか8点法とか呼ばれているもの)。
並進カメラの場合
並進の場合、全く同じエピポール、エピポーラ線が得られる。これを自己エピポーラという。これを画像の話に持っていくと、画像中に繰り返しパターンが現れる場合にはその画像内で自己エピポーラが成り立っていることを意味する。
Rectification
カメラの内部パラメータ、姿勢、位置が異なる場合に、片方の画像に関して、もう一方の内部パラメータで撮影したと仮定した場合の画像との関係性(平面射影変換、8自由度)を得る。これは4点の対応により求まる。
応用先
三次元復元
ビジュアルサーボ
視覚誘導など
5章
形状復元の話。
構成済みカメラの場合
不定性無く復元できる。
ユークリッド復元
・内部既知、外部未知の透視カメラ
・内部外部ともに未知、透視カメラ、3視点
など。
アフィン復元
結果が3次元アフィン変換の不定性を持つような復元。
アフィン基底4点を取ると、それを元にした座標は不変に保たれる。
これを抽出するのがアフィン復元である。
・未公正のアフィンカメラ2台による復元
・未公正の並進透視カメラによる復元
など。
射影復元
結果が3次元射影変換の不定性を持つような復元。
射影基底5点を取ると、それを元にした座標は不変に保たれる。
・内部、外部共に未知の射影カメラ(最も一般的な場合)
6章
カメラキャリブレーションの話。
校正器具を使った場合
予め大きさが分かっている対象物をカメラで撮影し、座標の対応からカメラのパラメータを決める。射影カメラ行列Pは3x4で、定数倍の不定性があるので自由度11。6点の対応があれば6x2=12の拘束条件が得られるので、Pが決定できる。
未知の対象物からのカメラ校正
校正したいカメラを動かして3視点からの画像を得れば、自然に置かれた未知の物体からの校正ができる。
無限遠平面上にある仮想の円錐曲線(絶対円錐曲線)の不変性を利用する。
まとめ
カメラモデル(アフィン、射影など)や変換(ユークリッド->アフィン->射影)で統一的に見ると、やっていることはほとんど同じで、後はそれぞれの次元・カメラ・変換に応じた解き方があるというのを掴むと理解が早かった。
OpenCV or 0からの実装もやっていきたい。