KinectForWindowsとForXBOXのカメラの違い
(2012.03.02)手元にKinectForWindowsが届いた。パッとサンプルプログラムを動作させて見た所、カメラにずいぶん差があるようなので確認してみた。結果面白いことが分かる。サンプルやその画像はKinectForWindowsSDK1.0で対応しているものの、公式以外のOpenNIなどでもハードウェアが変わっている以上、同様の結果が確認できる可能性が高い。参考にはなるハズ。
検証方法
KinectForWindowsとForXBOXを亀の親子のように上下に載せて、殆ど同じ方向を向けた。カメラ性能の検証を目的としているのでこれで十分なハズ。以下のサンプルプログラムを利用して、2台のKinectから同時に画像を取得し、比較検証する。
- DualKinect.zip
- KinectForWindowsSDK1.0を用いたサンプルです。
- 自作の拡張ライブラリ「EKL」を利用しています(同梱されているので、
このダウンロードだけで動作します)。
Reference
640x480:30fpsでのカメラ画像
比較すると左のForWindowsの方がボヤけて、しかもコントラストが甘く見える。心なしかノイズもForWindowsの方が多く、640解像度ではXBOXの方が画質が良さそうだ。
1280*960:12fpsでのカメラ画像
640では残念ながらKinectForXBOXの方に軍配が上がったが、1280解像度になると話が違う様である。確かにKinectForXBOXの方がエッジがシャープに映し出されていてやはりやや明るいが、ノイズの量を見ると明らかにForWindowsの方が少ない。
このことから察するに、Microsoftは次世代型Kinectのために高解像度画像を扱うための試験をしている可能性があるのではないか。もしくは本来であればハードウェアがもっと高解像度に対応しているのかもしれない(カメラ自体は小さいので、そうであったとしてどの程度の画像が得られるかは未知数)。
結論
現状では次の通りである。
- 640解像度でカメラ画像を利用したアプリケーションを作りたい場合はKinectForXBOXの方が良い。
- 高解像度をリアルタイムに処理するには技術が必要なので、リアルタイムアプリを作る場合は事実上ForXBOX一択になる。
- 1280解像度の場合、KinectForWindowsSDK1.0では12FPSしかとれない(OpenNIなどは不明)。よってリアルタイムアプリはXBOXの方が有利か。
- 1280解像度でカメラ画像を利用したアプリケーションを作りたい場合はKinectForWindowsの方が良い。
- 欲しい絵が特にシャープネスを重要視しない限り、1280解像度ではForWindowsの方が綺麗に見えるハズ。
- 解体されている記事を読むに、内部にあるフィルタが原因でカメラ画像に干渉している可能性があるが、視認できるレベルでカメラのハードウェアは変更されている。