ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

Multiple View Geometry in Computer Vision

 半年以上かかりましたが、Multiple View Geometry in Computer Visionを当初予定していた14章まで読みました。本の雰囲気などは、こちらの方にも書いてあります。http://natu.txt-nifty.com/natsutan/2012/12/multiple-view-g.html

本の内容

 この本の内容をざっくり言うと、「実際の3次元上の点や、画像上の点の対応が分かっているとき、それらの関係を表す行列式を求める方法が載っている本」です。

  • 3次元上の点をカメラで撮影したときに、3次元上の点と画像上の座標がどのように対応するか
  • また同じ対象を違う角度から撮影した時、同じ点が各画像のどの座標に対応するか
  • 逆に画像上の対応する点が分かっているとき、3次元上の座標はどこになるのか

等を、いろんなバリエーションを加えながら説明しています。
 実際に3Dの画像処理をしてみると分かりますが、数学的に正しい位置関係と、実際の画像上の位置関係が厳密な意味で一致することはありません。撮影にノイズが乗ることや、画像の解像度は現実の物体の解像度よりも荒いことが原因です。そのために、この本では統計的手法を使って、十分確からしい点や関係式を求める方法が延々と説明されています。その計算に必要な統計処理や行列計算は詳しく説明されていて、ポインターも充実しています。

構成

 本は5部で構成されています。結構長い introduction の後に0章が始まります。Part0 The Background: Projective Geometry, Transformations and Estimation では、この後で使う座標系や行列の数学的な説明があります。Part1 Camera Geometry and Single View Geometry で一つのカメラを使った投影変換について、Part2 Two-View Geometry で2つのカメラを使った再構成の方法が説明されています。私が読んだのはここまでです。Part3 Three-View Geometry でカメラが3個になり、Part 4 N-View Geometry でN個のカメラを扱います。
 Part0はちょっと辛いですが、その後は前に出てきたところを拡張する形で話が展開されるので、前から読んでいけば後の方はすんなり行けると思います。また、前の章で説明済みの所は必ず対応するページなり数式へのポインターがあるので迷うこともありません。非常に良くできた章構成だと感じました。これは、Part 2まで読んでからの感想なので、Part0を読んでいる時は何をしているのかよく分からず、読む速度がかなり落ちてしまいました。
 最後のAppendixには、本書で説明しきれない数学の説明があります。Appendixの方も、少ないページで詳しく書かれていると感じました。

お勧めの人

 完全に一点突破の本ですので、この本を読んで何かアプリが作れるわけではありません。例えば、そもそも最初の一歩である対応する点を見つける方法は一行も書かれていません。点の座標を計算した後に3次元データなり、投影された画像を作る方法等も図で結果だけが説明されていていますが、具体的な手順については全く記載されていません。何かComputer Visionのプログラムを書きたい人にはOpenCVのライブラリ等を使っている別の本が良いです。
 数学の説明が詳しく、さらに勉強したい人へのポインターも充実しており、教科書としては丁寧に書かれた素晴らしい本になっています。既存のライブラリでは思った通りの結果がでないとか、Computer Vision そのものの学習をしたい人にお勧めします。