Plenoptic Camera

ここではRen Ngらの文献[1]に基づいてplenoptic cameraの仕組みについて紹介します。

 Ren Ngらが開発したplenoptic cameraの概念図をFig.1に示します。このカメラは通常のデジタル一眼レフカメラにマイクロレンズ・アレイを追加した構成になっており、カメラのメインレンズはマイクロレンズ・アレイ平面に焦点が合うように調整されています。このような構成とすることにより、従来の光学系ではセンサ上で1点に集まっていた光線群はマイクロレンズによって分解され、光線の方向にしたがって円状に記録されます。したがって、各々のマイクロレンズが光線の位置に対応し、そのマイクロレンズの後ろにあるセンサ領域で光線の方向を記録しているのです。



Fig.1 plenoptic cameraの概念図
(出展:文献[1])

 上記のようなplenoptic cameraを用いて4D light fieldを記録した画像はlight field dataと呼ばれます。light field dataはFig.2のように多数の円形の領域(sub-image)によって構成されています。sub-imageはマイクロレンズと一対一で対応付いており、上述した光線の方向を円状に記録したものです。この光線は被写体のある場所から照射されたものであり、撮影される画像の微小な領域に相当することからsub-imageと呼ばれるのも納得が行くのではないでしょうか。


Fig.2 light field data
(出展:文献[1])

 さて、先ほども述べたようにsub-imageは対応するマイクロレンズを通過した光線の方向を記録しています。この光線は元をたどればメインレンズの様々な位置を通過してマイクロレンズに到達しており、したがってsub-imageのある座標とメインレンズのある位置とが対応付きます。つまり、light field data中の各sub-imageから同じ相対座標の画素を抽出しsub-imageの順に並べることによって、メインレンズのある位置を通過した光線のみを選択することができます。(Fig.3参照) 言い換えれば、sub-imageから抽出する画素の相対位置を選択することにより、(元の絞りの範囲内で)開口の位置や形状を仮想的に変更することができるのです。このようにして仮想的に制御した開口(sub-aperture)により得られた画像を"sub-aperture image"と呼びます。尚、前述のようにsub-aperture imageは各sub-imageから1画素ずつ抽出して構成されているため、その画像サイズはマイクロレンズ・アレイにおける縦横のマイクロレンズ数と等しくなります。



Fig.3 sub-aperture image
(出展:文献[1])

 sub-apertureの位置を変えることによって視差を持った画像を得ることができます。Fig.3では縦に位置の異なるsub-apertureを指定しているため、鉛直方向に視差を持った画像が得られているのです。sub-apertureが微小であれば撮像系はピンホールカメラと等価になるため、sub-aperture imageは全ての奥行きに焦点が合った画像となります。この点を踏まえると、sub-apertureの位置の違いに伴って生じる視差は、カメラにおけるボケの発生する原理やplenoptic cameraのリフォーカスの原理を理解するうえで役立ちます。

 メインレンズの開口を多数のsub-apertureに分割すると、前述したようにsub-apertureの位置に応じた視差を持つsub-aperture image群が得られます。さて、このsub-aperture image群をそのまま合成するとどうなるでしょうか。メインレンズの焦点が合っている被写体の領域には視差が発生しないため、合成しても画素値に変化は生じず鮮明な像が得られます。一方メインレンズの焦点が合っていない場所はsub-aperture imageごとに視差が存在するため、合成すると被写体の異なる領域が混ざるために像が不鮮明になってしまいます。これが写真におけるボケの発生メカニズムで、明るい(開口の広い)レンズほど大きな視差を持つsub-aperture imageまで合成されるためにボケが強くなり被写界深度が浅くなるのです。尚、sub-aperture image群をそのまま合成して得られる画像は、マイクロレンズ・アレイを用いない通常の光学系で撮影されたものとほぼ等価になります。
 さて、リフォーカスをするということは被写体の任意の位置を鮮明な像として得る必要があります。ここで注目していただきたいのは、sub-aperture imageは各々「全ての奥行きに焦点が合った」、「視差を伴う」画像であるという点です。視差が存在する画像を合成するから像がボケるのであって、視差を補正して画像を合成すれば像はボケないはずです。plenoptic cameraのリフォーカスとは、即ちsub-aperture image群の任意の位置における視差を補正して合成することにより実現されているのです。リフォーカス処理の流れは次のようになります。

  1. light field dataからsub-aperture image群を作成する
  2. sub-aperture image群に対してsub-apertureの位置に比例する変位を与える
  3. 変位を与えたsub-aperture image群を合成する

非常にシンプルに見えますが、実際に行うべきなのはこれだけです。ここで重要なのが変位量をどのようにして得るか、という点です。これについて文献[2]を参考にFig.4を用いて説明します。

 sub-aperture image群は、plenoptic cameraのメインレンズ平面上に並んだ仮想的なカメラ・アレイによって撮影されたものと考えることができます。この様に置き換えることによって文献[2]の光学系と同様に扱うことができます。Fig.4において、基準とするカメラC0からΔxiだけ離れた位置にあるカメラをCiと置きます。被写体Pは投影面(reference plane)上でぞれぞれp0piとして記録され、それらの間隔はΔpiとなります。 投影面がカメラ平面からZ0だけ離れており、被写体Pは投影面からさらにΔzpだけ離れていると仮定します。



Fig.4 parallax between cameras
(出展:文献[2])

ここでΔpiは視差に相当するため、視差を補正するためにはp0piとを一致させる必要があります。このためには、a)カメラCiを移動させる、b)piを仮想的に移動させる、という二つの方法が考えられますが、光学系は固定されているために前者を採用することはできません。そこで、piΔpiがゼロとなるように仮想的に移動させます。相似則によりΔpiは次のように求めることができます。

Δpi = Δxi * Δzp / (Z0 + Δzp)

これはカメラ間の相対距離Δxiと被写体の相対深度Δzp / (Z0 + Δzp)の積に相当します。カメラ間の相対距離は光学系の設計から既知ですが、被写体の相対深度は未知の値です。しかし、この相対深度はパラメータとして指定すればよいですし、そもそもΔpi自体を適当に指定することによりリフォーカスを実現することは可能です。また、sub-aperture image間の視差を用いて深度マップを構築することによって相対深度を求めることもできます。

 Ren Ngらのplenoptic cameraは撮影後に焦点位置を動かせるという非常に面白い特徴を持っていますが、1つ大きな欠点があります。それは空間分解能の低さです。簡単に言ってしまえば得られる画像の解像度が一般的なカメラと比較して低くなってしまうのです。先の説明で触れたように、sub-aperture imageのサイズはlight field data中のsub-image数に依存しており、これは即ちマイクロレンズ・アレイにおいて縦横に配置されたマイクロレンズの数に当たります。マイクロレンズを微細化して数を増やすことは技術的な側面やコスト的な側面から制約を受けますし、またセンサの画素数が一定の元でマイクロレンズ数が増加すればsub-imageのサイズが相対的に小さくなり、奥行き方向の分解能が低下してしまいます。これはリフォーカスの滑らかさや、像のボケ方に影響を与えることが予想できます。

 次回は公開されているlight field dataを用いてリフォーカスの実験を行いたいと思います。


[参考文献]
[1] Ren Ng, et.al., "Light Field Photography with a Hand-held Plenoptic Camera", Stanford Tech Report CTSR 2005-02.
[2] Vaibhav Vaish, et.al., "Using plane+ parallax for calibrating dense camera arrays", In Proceedings of CVPR, 2004