見出し画像

Pixel4から得られるDual-pixelの画像

 今回は実際にAppをインストールしたPixel4からどの様な画像が得られるを解説していきます。詳細は大元のGitに書かれている内容を自分なりに調査し日本語で表現した内容となります。

 参照元

出力される画像の特徴

 Appを経由してPixel4から得られる画像はPGMフォーマットとなっています。あまり馴染みの無いFormatかと思います。私もこの実験を行う前までは知りませんでした。OpenCVはこのPGMフォーマットにも対応しているため特に何かすることはありません。

 ではどのようにDual-pixelを模写しているかです。ここで模写と言っているのはCanonの様なPixel自身がDual-pixelでは無いため、ソフトウェア上もしくはハードウェア上で加工しているためです。参考までにCanonのDual-pixelのリンクを貼っておきます。

Dual-pixel模写の詳細

 参照先と自分の知識を合わせて、どの様に加工された画像が出力されているかの模式図を作成したので下に示します。

Note記事用素材集.001

 Step-0では撮影された直後のRAWデータFormatを示しています。このままでは普通のBayerなので、Gr画素(REDの横に位置するGRN画素)に着目しRAWデータを切り出します。この時点で他の色RED/BLUの情報はなくなってしまいます。これがStep-1となります。その後、Step-2でGr画素のRAWデータをメモリー上で再配置し不要な部分を削除し圧縮します。次に隣接する上下画素をBinningと言う手法を用いて値を足し合わせます。そのため、内部では8bit+8bit=16bit(最大値:65535)にレンジが拡張されています。同じ様な上下画素のBinningをLeft/Rightで実施することで、Dual-Pixelを模写しています。振る舞いとしてはLeft/Rightを一括りとして1pixelという扱いになり、Left pixelの出力だけを集めた画像がLeft image、Right pixelの出力だけを集めた画像がRight imageとして出力されます。

 出力される画像は、Originalの画像と比較すると幅は1/2, 縦は1/4にリサイズされています。これはBinningや画素の再配列をした影響です。実際の処理を実施するには幅を1/2に縮小するか縦を2倍するかし、画像の縦横比がOriginal画像に合うようにするのが良いかと思います。

実際の画像

 得られる画像はかなり特殊な構造のため、画像処理を行うにはある程度処理が必要になります。その処理詳細に関しては次回以降に書いていきます。ここでは最終的にどの様な画像が得られるかを見せて終わりにしたいと思います。

画像2

 Left/Rightの画像に幾つかの処理を実施した後、Left/Right画像を合わせてgifを作成しました。焦点は手前の紅葉に合わせています。
 gif画像から解りますように焦点から離れるにつれてLeft画像とRight画像の視差(見える位置が変わる)が大きくなっているのがわかるかと思います。これを利用するとStereo画像と同じことがDual-pixelでもできるということになります。

 次回は、どの様な画像処理が必要になるかを書いていきます。

アメリカSilicon Valley在住のエンジニアです。日本企業から突然アメリカ企業に転職して気が付いた事や知って役に立った事を書いています。