位相シフト法を用いたプロジェクタ・カメラの対応点の取得

位相シフト法(フェーズシフト,Phase shifting)は,プロジェクタを用いた3次元計測手法の一種です.sin波を位相をずらしながら投影することで,サブピクセルの精度で対応点を求めることができます.

原理

位相シフト法の目的は,カメラの各ピクセルに映っている点が,プロジェクタのどの画素であるかを明らかにすることです.以下では,プロジェクタの x 座標について考えていきます.

まず,プロジェクタの x 方向に,適当な周期のサイン波パターンを作成します.また,それと同じ周期のサイン波を,位相を 2/3π,-2/3πずらしたパターンもそれぞれ作成します.つまり,投影パターンは
$$ p_1 = \cos (kx – \frac{2}{3}\pi),$$
$$ p_2 = \cos (kx),$$
$$ p_3 = \cos (kx + \frac{2}{3}\pi)$$
となります.ここで k はサイン波の周期を決める定数です.これらのパターンを投影しながら,カメラで撮影をします.

つぎに,撮影した画像から,各ピクセルの位相を求めます.あるピクセルにおける撮影画像の輝度値は,それぞれ,
$$ I_1 = G + A\cos (\phi – \frac{2}{3}\pi),$$
$$ I_2 = G + A\cos (\phi),$$
$$ I_3 = G + A\cos (\phi + \frac{2}{3}\pi)$$
と表されます.G はパターン投影とは関係ない明るさの成分,Aはサイン波の振幅です.この連立方程式を解くと,そのピクセルにおける位相が次のように求まります.
$$ \phi = \tan^{-1}\frac{\sqrt{3}(I_1 – I_3)}{(2I_2-I_1-I_3)}$$
よって,そのピクセルに映っているプロジェクタの x 座標は,
$$ x = \frac{\phi + 2n\pi}{k}$$
と計算できます.ただし,周期関数のため,何周目であるかの曖昧性は残っています.

phase_shifting1

周期に関する曖昧性は,異なる周期のサイン波パターンを利用することで解消できます.それぞれの周波数で求めた位相から,すべての周波数で一致する座標を探して来れば,曖昧性を回避することができます.
$$x = \frac{\phi_1 + 2n_1\pi}{k_1} = \frac{\phi_2 + 2n_2\pi}{k_2} = \cdots$$
周波数の組み合わせをうまく選ぶことで,プロジェクタの座標が一意に決まります.

phase_shift2

利点と欠点

位相シフト法は,サイン波の位相を求めることで,プロジェクタとの対応関係をサブピクセルの精度で求めることができます.利点は,大域光の影響を受けにくいこと,表面化散乱やプロジェクタのピントボケに対してもある程度頑健であること(サイン波はボケてもサイン波であるため)などがあります.ただし,欠点,というほどのものでもないですが,周期に関する曖昧性の解消に多少の工夫が必要です.多少粗くてもいいから簡単に実装したい場合はグレイコードパターン投影を検討しましょう.また,複数枚の投影が必要なため,動的なシーンには適用できません.動的なシーンを計測したい場合は,空間方向にコード化する方法や,カラーコードを利用する方法などを検討しましょう.

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です