読者です 読者をやめる 読者になる 読者になる

日立のレンズレスカメラの原理を考察してみた

日立のレンズレスカメ

つい先日、日立がレンズが不要な新しい原理のカメラを発表しました。

ニュースリリース:2016年11月15日:日立

従来型のカメラは、レンズの焦点距離の存在により、薄型化に原理的な限界があるのに対し、 新しい原理を用いることで、格段に薄いカメラが実現可能になります。

このカメラは、撮像素子の表面1mmのところに 同心円状のパターンを印刷したフィルムを配置するという簡単な構造をしています。

撮像後の画像に、フィルムと同じパターンを重ねることでモアレ(干渉縞)を発生させ、 その縞模様をフーリエ変換によって抽出することで、画素を作っているようです。

パターンを印刷したフィルムを使ったレンズレスカメラ自体は、以前から知られているようで、

ASCII.jp:レンズなしで画像を撮影できる新技術「FlatCam」

今回の日立の技術のポイントは、この同心円状のパターンを使うことによって、

  1. フーリエ変換(FFT)で高速に画像が復元できる
  2. パターンのサイズを変えることによってピントを撮影後に調整できる

という2点のようです。

特に、前者の特徴を持つような同心円状のパターンとはどのようなものなのでしょうか? 実際に計算してみましょう。

同心円パターンの導出

2つの同心円パターンの作る干渉縞

下図のような配置を考えます。

f:id:nunuki:20161117232709p:plain

平面 z=0上に撮像素子があり、そこから距離l だけ離れた z=l にフィルムを置きます。 無限遠点の1点から発せられた光は、平行光として入射角\theta でフィルムに入射します。

平行光によるフィルムの像は、もとの位置から  x=d \approx l \theta だけずれて撮像素子に写ります。 撮影した画像に、画像処理でフィルムと同じパターンを重ねることで(図のフィルム2)、干渉縞が現れます。 この干渉縞が並行波になるためには、どのようなフィルムのパターンを用いればいいか、考えていきましょう。

いま、フィルムのパターンが次の条件を満たすと仮定します。

  • 同心円状(点対称)な図形であること
  • 縞模様 (透過率が値が、0と1の間で連続的に反復する) であること

すなわち、フィルムの透過率が、フィルムの中心からの距離 r の関数として、

 \displaystyle
f(r) = \frac{1}{2} ( 1+\cos \phi ( r ) )
= \cos^{2} \frac{\phi (r)}{2}

と表されるとします。ただし、 \phi(r) 微分可能な単調増加関数です。

f:id:nunuki:20161118000949p:plain

ここで、撮像素子の平面上の点  (x,y) を考えると、

  • フィルム1の像のパターンの中心からの距離:  r_{1} = \sqrt{(x-d)^{2}+y^{2}}
  • フィルム2(撮影後の画像処理)のパターンの中心からの距離が  r_{2}=\sqrt{x^{2}+y^{2}}

ですから、この点における光の強度は、

 \displaystyle
F = f(r_1) \cdot f(r_2) = {\left( \cos \frac{\phi (r_1)}{2} \cos \frac{\phi (r_2)}{2}  \right)}^{2}
= \frac{1}{4} \left( \cos \frac{\phi (r_2) + \phi (r_1)}{2} + \cos \frac{\phi (r_2) - \phi (r_1)}{2} \right)^{2}

となります。最後の等号は三角関数の積和の公式を使いました。

ここで、2つのパターンの中心からの距離の差  \Delta rは、 d \ll r_{1} のとき、

  •  \displaystyle
\Delta r = r_{2} - r_{1} = \sqrt{x^{2}+y^{2}} - \sqrt{(x-d)^{2}+y^{2}}  \approx \frac{xd}{2r_{1}}

となるので、

  •  \displaystyle
\phi ( r_{2} ) = \phi ( r_{1} + \Delta r ) \approx \phi ( r_{1} ) + \Delta r \phi'  ( r_{1} )
  •  \displaystyle
\cos \frac{\phi (r_2) + \phi (r_1)}{2} \approx \cos \phi( r_{1} )
  •  \displaystyle
\cos \frac{\phi (r_2) - \phi (r_1)}{2} \approx \cos \Delta r \phi' ( r_{1} )

となり、最終的に、

 \displaystyle
F \approx  \frac{1}{4} \left( \cos \phi( r_{1} ) +  \cos  \frac{xd\phi' ( r_{1}) }{2r_{1}}   \right)^{2}

を得ます。

行波があらわれる条件

上の式で、カッコ内の第1項はもともとのフィルター1のパターンを表しています。

注目すべきは第2項で、これが干渉縞を表しています。 この 干渉縞が並行波になるためには、  \frac{xd \phi' ( r_{1} )}{2 r_{1}}  x に比例すれば良いことがわかります。 このためには、 \frac{ \phi' ( r_{1} ) }{r_{1}} が定数でなければならず、

 \displaystyle
\frac{ \phi' ( r ) }{r} = C

 \displaystyle
\therefore \phi ( r ) = C r^{2} + \phi_0

 \displaystyle
\therefore f ( r ) = \cos^{2} \frac{C r^{2} + \phi_0}{2}

のように、同心円パターンの具体的な表式が求まりました。

これは、波長(縞の間隔)  \lambda = \frac{1}{Cr} が中心からの距離に反比例して小さくなる縞模様であることを意味しています。

さらに、 \frac{Cl}{2} = k_{0} とすれば、

 \displaystyle
 f ( r ) = \cos^{2} \left( \frac{k_{0} r^{2}}{l} + \frac{\phi_{0}}{2} \right)

となり、このときの干渉縞の波数は  \frac{d \phi' ( r_{1} )}{2 r_{1}}=\frac{k_{0}d}{l} \approx k_{0} \theta となることがわかります。

数値実験

では、上で求めた同心円パターンが作る干渉縞を実際に観察してみましょう。

f:id:nunuki:20161119193950p:plain

上の画像で、左は元のパターン、真ん中は中心を右下に少しずらしたパターン 、右はこれら2つを重ねたものになっています。

確かに並行波のパターンが現れていることがわかります。 この干渉縞をフーリエ変換したものが、下図になります。

f:id:nunuki:20161119195003p:plain

図の左上付近の位置に輝点が現れています。 平行光の差し込む角度と方向によってこの輝点の位置が変わります。

実際にこのカメラで画像を撮ると、 様々な角度・方向から差し込む光がそれぞれの位置につくる輝点の集合が元の画像を復元します。

まとめ

日立のレンズレスカメラの原理について考察しました。

レンズの代わりに用いられているフィルムに描かれる同心円上のパターンは、 中心からの距離に反比例して縞の間隔が狭くなるものであることがわかりました。 このパターンを用いることで、干渉縞が並行波となり、フーリエ変換で光の差し込む角度・方向を取得することができることがわかりました。

次回は、気が向いたら、撮影後のピント調整の原理と、被写体深度について考えてみようかな。