VPIでディベイヤできるの?

この記事は約3分で読めます。

NVIDIAが提供するコンピューティングモジュール(SBC)「Jetson」向けに提供されているSDK「JetPack」には、画像処理用のライブラリ「VPI (Vision Programming Interface)」が同梱されています。

VPI - Vision Programming Interface: Main Page

このVPIを用いることで、OpenCVのような画像処理をJetsonモジュールに搭載されたCUDAやNVENC、VICなどのハードウェアアクセラレーション機構を用いて高速に計算することができます。

さて、そのVPIにはベイヤー画像データに関する関数がいくつかすでに用意されています。

現行のJetPack 4.6に同梱されているVPI 1.1でも、それらの関数をプログラムから呼び出すことが可能です。

VPI - Vision Programming Interface: Color Spaces
VPI - Vision Programming Interface: vpi/ImageFormat.h File Reference

MIPI CSI-2 ポートに接続したカメラモジュールの画像データを処理する際、しばしばRAWデータ(ベイヤーデータ)として画像データが転送されてくるケースがあります。

その際、VPIでベイヤーから一般的なRGBなどの画像データにフォーマット変換できれば、後段の画像処理に応用できます。

というわけで、VPIを使ってRAWデータからRGB画像データにディベイヤしよう!・・・と思ったのですが、実際にやろうとすると「サポートしていない」旨のエラーが出力されます。

Debayering with VPI
I’ve been digging in to the new VPI API and I’ve been looking for a way to convert a bayered image (RGGB8) to an RGB8 or BGR8 format. I can’t seem to find any b...

結局のところ、NVIDIA Developer Forumでの上記リンク先のモデレーターの投稿にあるように、現行のVPI 1.1ではディベイヤに関する関数こそ用意しているものの、実際の動作は未実装のようです。

次のJetPack 4.6.1 ではVPI 1.2へのアップデートが予定されています。このタイミングで機能が実装されるとうれしいですね。

なお、現時点でディベイヤする場合には、OpenCVまたはNPP (NVIDIA 2D Image And Signal Performance Primitives)を用いる方法があります。

NVIDIA 2D Image and Signal Processing Performance Primitives (NPP) — npp 12.8 documentation

OpenCVの場合、Jetson上でCUDAを用いてフォーマット変換するにはまずOpenCVをCUDA対応の形でビルドする必要があり、非常に時間がかかります。

NPPはJetPackにも含まれており、このライブラリを用いることでCUDAを用いた高速画像処理を手軽に実現することができます。

Page Not Found
Page displayed for direct links that are not supported by current publishing formats.

PVAやVICなどのハードウェアアクセレーターでディベイヤができるのかは分かりませんが、もしそれらによる高速計算を望むなら、VPIが将来対応することに期待するしかないでしょう。

コメント

タイトルとURLをコピーしました