VGP-FL3D15B(VAIO用レンチキュラーレンズシート)

いわゆるレンチキュラーレンズシートが暴力的な価格(550えん)で売られていたので買ってみた。
書こうと思ったプログラムは既に書いている方がいたのでそちらを使用。手元の23インチ1080pディスプレイでは、5.309くらいが良いpitchだった。

まず、固定用のタブをブチする。

横方向に引きちぎるようにする。vaioと書いてある方向から押し下げると固定部分が見えるのでそれを目安に。
次に、

のような画像を用意し、↑のサイトで変換すると

のような画像を得る。これを、レンズを通してみると

とか

のように見える。
最適視聴距離を外すとすぐしましまに見えてしまう。下画像のように、明るく見えるのが正しい見え方。
とにかく、期待通りに動いているように見えるので一旦ここで良しとする。

どういうものか

これは斜め方向にカットされたレンチキュラレンズシートで、本来のVAIOでは顔認識で視点位置を認識しながら動作する。

これは一人用に限定することでレンズを細かくし、解像度を確保している。実際、手元の23インチディスプレイで5視点くらいが収まっているので、そこから考えると本来のデバイス(15インチ1080p)ではもっと視聴ポイントに余裕をもたせられるはず。ただ(専用ディスプレイを使わない)裸眼3D的な意味ではもっと大きなレンズにする必要があるだろう。。

グラスレス3Dレグザは、縦方向RGB配列と垂直レンズを使用している。要するに画素かレンズのどちらかを斜めにする必要があるが、画素を斜めにするのは通常の人間には難しいのでレンズを斜めにする方法を取る。
レンチキュラレンズシートは、虫眼鏡のように特定画素を拡大して見せる。このとき、視点位置によって選択される画素が変化するので、特定視点毎に異なる映像を選択的に届ける事ができる。

自動調整への考察

やりたいのは、Webカメラを使って↑のサイトのようなパラメタを自動調整するシステムの構築で、これがなかなか難しい。
パラメタは:

  • ディスプレイのRGB配列
  • ディスプレイの画素間隔
  • レンズシートの傾き角
  • レンズオフセット(設置場所のズレ) - 一様でないかもしれない
  • レンズ間隔 - 一様でないかもしれない

ディスプレイのRGB配列は手入力でも良いとして、傾き角とレンズ間隔を取得する良い方法を考えないといけない。
まず前提として、カメラの解像度はディスプレイ自体よりも低い。この手のシチュエーションに対応する常套手段は"うなり"を使用することで、パラメタの差分によって↑の画像のような縞模様がどう動くかを予めシミュレーションしておき、うなり画像(= 2次元なのでしましま画像、一般にはモアレ画像)からうなり周波数を抽出(= 2次元なので縦方向と横方向)し、パラメタを"追い込む"形で推定することができる。(人間もこれと同じことを直感的に行うだろう)
というわけで、まず、リファレンス画像の導出から始める。