Kinect
ComputerVision
DepthMap

structured-light方式デプスセンサのキャリブレーションと測定原理

概要

Microsoft Kinect V1, PrimeSense Xtion, Apple iPhone X True Depthカメラなどに用いられている1台のプロジェクタと1台のカメラを用いたstructured-light方式デプスセンサのキャリブレーションと測定原理について述べる。
この方式では通常のステレオカメラと同様に三角測量に基いて距離を測定する。プロジェクタはカメラではないため撮像することはできないが、プロジェクタ視点の画像を仮想的に生成することで三角測量を行う
本稿は主に12を参考にした。

測定

後述するキャリブレーションによってカメラとプロジェクタのintrinsic及びextrinsic parameterが推定済みであるとする。
プロジェクタで投影するパターンをプロジェクタ視点のカメラで撮像した画像として扱い、カメラで撮像した画像との間で三角測量を行う。
グラフィックス1.png

キャリブレーション

カメラのintrinsic parameterはZhangの手法3で推定することができる。
問題はプロジェクタのintrinsic parameterとプロジェクタとカメラの間のextrinsic parameterの推定である。
そこでプロジェクタ視点の仮想カメラで撮像したキャリブレーションボードの画像を以下のフローで生成する。

  1. カメラから見えかつプロジェクタのパターンが投影される位置にキャリブレーションボードを固定する。またパターンがよくカメラから見えるように、キャリブレーションボードの色、光源の色、パターンの色を事前に調節しておく。
    グラフィックス2.png

  2. プロジェクタからパターンを投影する。プロジェクタから投影したパターンと、カメラで撮像したキャリブレーションボード上に投影されたパターンでマッチングを行い、ピクセル単位でのマッピングを求める(マッピングの方法としてはキャリブレーションボードの平面性を利用したhomographyが使える。4では非線形なdistortionを反映させるために、キャリブレーションボード全体ではなく点(チェスボードであればコーナー、ドットパターンであれば中心)周辺の局所的なhomographyを用いることが提案されている)。このマッピングによりカメラで撮像した画像をプロジェクタ視点の仮想カメラで撮像した画像に変換できる。なおこのマッピングはキャリブレーションボードの姿勢に依存するため、キャリブレーションボードを移動するたびに推定する必要がある。
    グラフィックス3.png

  3. プロジェクタの投影を切りカメラでキャリブレーションボードを撮像する。2で求めたマッピングに基いて、プロジェクタ視点で撮像したキャリブレーションボードの画像を得る。(実際には画像全体をマッピングする必要はなく点(チェスボードであればコーナー、ドットパターンであれば中心)の位置のみでよい。)
    グラフィックス4.png

以上のフローによりプロジェクタ視点の仮想カメラで撮像したキャリブレーションボードの画像を得られる。プロジェクタ(視点の仮想カメラ)のintrinsic parameterと、プロジェクタ(視点の仮想カメラ)とカメラの間のextrinsic parameterの推定を通常のステレオカメラと同様に行うことができる。
このフローは一般的なものであり、任意の投影パターン(時間的パターン:正弦波、空間的パターン:グレイコード、ランダムドットなど)、任意のカメラモデル(ピンホール、魚眼など)に適用できる。

Appendix?

以上の説明ではプロジェクタで投影するパターンはデジタル画像であると仮定していた。しかし本稿の冒頭で列挙したような商用の安価なセンサではIRレーザーをDOE5に照射することによりパターンを投影しているらしい。この場合プロジェクタで投影するパターンのサイズはピクセルではなくDOEの実世界でのサイズになる?が、intrinsic parameter (focal length, principal point) はピクセル単位で扱いたいため都合が悪い。この場合でも実世界のサイズと縦横比が同一の適当なピクセル単位の画像サイズを用いれば問題ない?

参考文献