Plenoptic Camera (2)

 先日はRen Ngらが開発したplenoptic cameraの原理について紹介しました。ここでは実際に論文の追試をしてみた結果を示します。尚、画像の下または左に記載した数字はリフォーカスのパラメータで、sub-aperture image間の相対的な変位量に相当します。変位に伴い必要となる画素補間にはbi-cubic法を用いました。sub-aperture image群の作成に際しては、後述するsub-imageの縦横の幅を直径とする円内の情報を用いました。

  • 実験1

 Adobe Systems社のTodor Georgiev氏が公開しているHouseCrop.tiffを用いてリフォーカスをした結果の例をFig.1に示します。sub-imageのサイズは縦横60.93画素としました。



Fig.1 refocsed images of "HouseCrop"

Fig.1を見ると、リフォーカスなし("0.0")では全体的にピントが甘いですが、"-0.05"では手前の木の幹に焦点が合い、"+0.05"では奥の家に焦点が合っていることが分かります。尚、sub-imageの縦横の幅を直径とする円内に一部不要な黒い領域を含んでしまい、結果画像が若干暗くなっています。

  • 実験2

 Stanford大学が公開しているThe (New) Stanford Light Field Archiveの"Golgi Stained Neurons at 20x"を用いてリフォーカスをした結果の例をFig.2に示します。sub-imageのサイズは縦横16.18画素としました。



Fig.2 refocused images of "Golgi Stained Neurons at 20x"

Fig.2を見ると、リフォーカスのパラメータが変化するにしたがってボケ方が変わっていく様子を確認することができます。ただ、元が顕微鏡写真であるため被写体の奥行きがないこともあり、像がボケていく様子は確認できても焦点の合っている位置が変化しているという実感が得られませんね。よく見ると左下の部分で"+0.0"では不鮮明だった部分が"+0.4"で鮮明になっているのが見て取れます。

 上記のように、先日説明したplenoptic cameraのリフォーカス原理に基づき、light field dataを用いてリフォーカスができることが確認できました。


 サンプルプログラムを置いておきます。plenoptic1.0_vs2008.zip 直
(Microsoft Visual C++ 2008 Express Editionにて作成、OpenCVの2.1を使用)
以下留意点を記載しておきます。

  • コンパイルや実行にはOpenCVが必要です
  • main関数内でlight field dataの原点座標とsub-imageのサイズを指定していますので適宜変更してください (現状はHouseCrop.tiffの値を設定)
  • light field dataは水平出しされていることが前提となっています