あらいさん日記(仮)

あらい日記

活動の記録

実践!照度差ステレオ<シミュレーション編>

照度差ステレオとは

照度差ステレオ(photometric stereo)は陰影を情報として画像の法線情報を得ることができる手法です。Woodhamが提案したランバート面における照度差ステレオ*1は、3つの異なる平行光源で撮影された3枚の画像から法線マップを求めることができます。

単位光源ベクトルを\boldsymbol{s}、物体表面の単位法線ベクトルを\boldsymbol{n}、物体表面の反射率を\rhoとするとき、その点での明るさiは以下のように表せられます。

i = \rho \boldsymbol{n}  \cdot \boldsymbol{s}

3つの異なる光源\boldsymbol{s_1}, \boldsymbol{s_2}, \boldsymbol{s_3}で撮影するとき、明るさi_1, i_2, i_3は以下のような行列式で書き表すことができます。

\begin{pmatrix} i_1 \\ i_2 \\ i_3 \end{pmatrix} = \rho \begin{pmatrix} \boldsymbol{s_1}^{\mathrm{T}} \\ \boldsymbol{s_2}^{\mathrm{T}} \\ \boldsymbol{s_3}^{\mathrm{T}} \end{pmatrix}\boldsymbol{n}

この式を解くことにより法線ベクトルと反射率を求めることができます。

また3つ以上の光源で撮影された画像を用いる場合は、以下の式を最小二乗法で解くことによって求めることもできます。

\begin{pmatrix} i_1 \\ \vdots \\ i_n \end{pmatrix} = \rho \begin{pmatrix} \boldsymbol{s_1}^{\mathrm{T}} \\ \vdots \\ \boldsymbol{s_n}^{\mathrm{T}} \end{pmatrix}\boldsymbol{n}

データセットの準備

照度差ステレオのデータセットはPOV-Rayを使って合成しました。今回対象とする物体は下の図のような、2つの木の球がくっついたような物体です。地面に対して垂直となる方向から物体を撮影した画像をデータセットとして使いました。

f:id:raccoon15:20180713002228p:plain

2次元画像での法線の取り扱いについて

2次元画像における法線の取り扱いについて説明します。法線マップはRGBの3チャンネルに対して法線方向xyzを対応させています。下の画像は球の法線マップです。法線方向が-1.0から1.0の値を法線マップでは0から255に変換しています。

f:id:raccoon15:20180714103738j:plain

 光源方向の推定

光源方向の推定を行い、光源ベクトルを求めます。推定には鏡面反射成分を持つ球使います。

f:id:raccoon15:20180712234956p:plain

撮影した球の画像から画像中のハイライトの位置を求めます。球の形状は既知なので中心位置と半径がわかれば、画像中の球の各点での法線が求まります。ハイライトの位置の法線ベクトルを\boldsymbol{n}、撮影した方向を表す視線ベクトルを\boldsymbol{v}とすると、光源ベクトル\boldsymbol{s}は以下の式で求めることができます。

\boldsymbol{s} = 2(\boldsymbol{n} \cdot \boldsymbol{v})\boldsymbol{n} -\boldsymbol{v}

視線ベクトル\boldsymbol{v}はカメラの方向なので\boldsymbol{v}=(0,0,1)となります。

結果

下のシーンで照度差ステレオをやってみました。データセットに8つの光源で撮影した8枚の画像を使いました。

f:id:raccoon15:20180712234929p:plain

法線マップです。f:id:raccoon15:20180712234839j:plain

反射率マップです。(修正(2018/12/22):グレイスケールだったので、カラーに差し替えました)

f:id:raccoon15:20181222221745j:plain

 

プログラム

使用したプログラムをGitHubに置いておきます.

github.com

参考資料

http://pages.cs.wisc.edu/~lizhang/courses/cs766-2008f/syllabus/10-09-shading/shading.pdf

コンピュータビジョン最先端ガイド5 (CVIMチュートリアルシリーズ)

コンピュータビジョン最先端ガイド5 (CVIMチュートリアルシリーズ)

 
コンピュータビジョン: 広がる要素技術と応用 (未来へつなぐデジタルシリーズ)
 

*1:Robert J. Woodham, "Photometric Method For Determining Surface Orientation From Multiple Images," Optical Engineering 19(1), 191139 (1 February 1980).