イントロ
このチュートリアルでは、画像処理フレームワーク ion-kit の概要を学ぶことができます。
ion-kit は、効率的にユーザー定義の画像処理パイプラインを記述およびコンパイルできる画像処理フレームワークです。
ion-kit の基本的なアイデアは、画像の入出力と画像処理に関する ビルディングブロック から構成された パイプライン を作成することです。
このセクションは ion-kit に焦点を当てています。U3Vカメラを制御するためのシンプルなツールの使用方法を知りたい場合は、Aravisのツール を確認してください。
ビルディングブロック
通常、画像処理プログラムには三つのステップがあります:画像の取得、処理、および処理された画像の保存/表示です。
ion-kitでは、ビルディングブロックを連鎖させて、これらすべてのステップを処理する単一のパイプラインを作成することができ、パイプラインの各構成要素をビルディングブロック(BB)と呼びます。
以下はいくつかのビルディングブロックの例です:
名前 | タイプ | 説明 |
---|---|---|
image_io_u3v_cameraN_u16x2 | image-io | U3Vカメラから16ビット深度の画像を取得し、出力として送信します |
image_io_u3v_gendc | image-io | U3VカメラからGenDCコンテナデータを取得し、出力として送信します |
core_cast_1d_uint16_to_float | core(data-type cast) | 1次元の符号なし16ビット整数の入力データを浮動小数点型に変換し、出力として送信します |
image_processing_bayer_demosaic_linear | image-processing | 入力されたベイヤー画像を3色チャネル画像に再構築し、出力として送信します |
image_io_gui_display | image-io | 画像を入力として受け取り、それを表示します |
image_io_binary_gendc_saver | image-io | GenDCコンテナデータを入力として受け取り、バイナリファイルに保存します |
たとえば、U3Vカメラをホストマシンに接続し、画像ストリームを表示したい場合、次の5つのBBで構成されるパイプラインを作成する必要があります。
- image-io:画像データを取得するため
- image-processing:
- RAW画像を正規化するため
- ベイヤーをRGB/BGRに変換するため
- ホワイトバランスを調整するため
- image-io:画像を表示するため
その後、パイプラインを実行します。
別の例として、U3VカメラストリームからGenDCコンテナのシリーズを保存したい場合は、以下のBBを連鎖させるだけです。
- image-io:
- gendcデータを取得するため
- gendcデータを保存するため
ポート
各BBには入力および出力ポートがあります。これらは次の三つのプロパティを持っています:
- キー(名前)
- タイプ
- サイズ(次元)
ポートは、1. BB間を接続するか、2. パイプラインの入出力として使用されます。
接続
前のBBの出力ポートの タイプ と 次元 が次のBBの入力ポートのそれと一致する場合、ビルディングブロックは接続できます。
以下の図は、上記の2番目の例を示しています。
最初のBB(image_io_u3v_gendc
)の出力は「gendc」と「device_info」であり、いずれも1次元 uint8
データです。次のBB(image_io_binary_gendc_saver
)は2つの入力を取り、いずれも1次元 uint8
なので、接続が可能です。
BBがノードであり、接続がノード間のエッジである有向非巡回グラフ(DAG)を作成する必要があると想像してください。エッジは、2つのノードの出力-入力が同じ次元/タイプである場合にのみ有効であり、孤立したノードは存在しません。