1117280_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

1117280_ja-JP

1117280_ja-JP

OpenVX Vision Image Extension API の紹介 - 基本 API<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

はじめに

EVIS(Enhanced Vision Instruction Set)は、APIレベルのプログラム言語であり、GC7000XSVX(i.MX8QM)およびVIP8000NanoSi(i.MX8MP)に適用できます。この説明書は、ビジョン対応ハードウェアの強化されたビジョン機能を低遅延で活用しています。これは、Khronos Group OpenVX API を通じて提供される機能を超えたビジョン画像処理のための追加機能を提供します。i.MX8QM/i.MX8MP BSP では、OpenCL コンパイラは EVIS 命令もサポートしています。つまり、OpenCL VX Extension APIでもあるのです。

ソースファイルは /usr/include/CL/cl_viv_vx_ext.h にあります。

ハードウェア要件

i.MX8QM(GC7000XSVX)はEVIS1をサポートしています。

i.MX8MP(VIP8000NanoSi)はEVIS2に対応しています。

パックされたデータ型

命令の計算能力を十分に活用するために、拡張 API はパックされたデータ型をサポートしています。たとえば、標準のOpenCLでは、ベクトルchar4は4x32ビットレジスタを占有しますが、パックされたchar16は128ビットしか占有しません。したがって、可能な限りパックされたデータ型を使用してください。

char、unsigned char、short、unsigned short、integer、unsigned integer、 float パック・データ・タイプがサポートされています。これらは、プレフィックス vxc_ 、つまり vxc_char、vxc_uchar、vxc_short、vxc_ushort、vxc_int、vxc_uint、vxc_float で定義され、その後にパックされたデータ内の要素の数を定義するリテラル値 n   が続きます。サポートされている n の値は、すべての packed data  型で 2、4、8、および 16 です。

表 1 パックされたデータ型のリスト

種類形容
vxc_charnn 個のパックされた符号付き文字 値のベクトル
vxc_ucharnn 個のパックされた符号なし 文字 値のベクトル
vxc_shortnn 個の packed signed short value のベクトル
vxc_ushortnn 個のパックされた符号なしショート値のベクトル
vxc_intnn 個のパックされた符号付き整数値のベクトル
vxc_uintnn 個のパックされた符号なし整数値のベクトル
vxc_floatnn 個のパックされた float value のベクトル

OP_CODE 手順

OP_CODE命令は、パックされたデータに対して動作します。列挙型は /usr/include/CL/cl_viv_vx_ext.h にあります。

EVIS1のみが命令をサポートしています。

VXC_IAdd

VXC_MagPhase

VXC_BiLinear

VXC_SelectAdd

VXC_BitReplace

VXC_Filter

VXC_DP2x16_b VXC_DP2x16

  • オブジェクトの読み込みと保存

パック型イメージデータ読み取り/書き込み:対応タイプはパック8ビット/16ビット整数、16ビット浮動小数点です。image1d_t/image1d_array/image2d_t のイメージの読み取り/書き込み。オフセットは、VXC_5BITOFFSET_XY(x, y) を使用して構成する必要があります。

VXC_OP4(img_load、宛先、画像、座標、オフセット、情報)

VXC_OP4_NoDest(img_store、画像、座標、カラー、情報)

パラメーター:

img_load/img_store 画像データの読み取り/書き込み。

Dest データをロードする宛先。

画像 img_load用に読み込んだパックされた画像データ。img_storeに書き込むパックされた画像データ。

画像データの読み取り/書き込みを行うための座標座標。

Color Image for img_storeに書き込まれる画像データ。

詳細情報 VXC_MODIFIER (StartBin、EndBin、SourceBin、RoundingMode、Clamp) で詳細を参照してください。

VXC_MODIFIER(StartBin, EndBin, SourceBin, RoundingMode, Clamp)

パラメーター:

StartBin/EndBin 連続してパックされたデータの最初のビン/最後のビン。

SourceBin 未使用。

RoundingMode 0: Toward Zero (切り捨て)、 1: Toward Infinity (切り上げ)、 2: To Nearest Even、 3: 使用されません。

クランプ 0: いいえ、結果は結果タイプに合わせて切り捨てられます (下位ビットのみがコピーされます)、 1: はい、結果は結果タイプに合わせてクランプされます。

例えば

int2 coord = (int2)(get_global_id(0), get_global_id(1));

vxc_uchar16 r1;

VXC_OP4(img_load, r1, in_image, coord, 0, VXC_MODIFIER(0, 15, 0, VXC_RM_TowardZero, 0));

  • VXC_Filter

このインターフェイスは、指定されたフィルターを 3x3 ピクセル ブロックに適用します。

VXC_OP4(フィルタ、宛先、Src0、Src1、Src2、情報)

パラメーター:

フィルター フィルター モード。

Dest フィルタリングされた画像。

Src0 3x3 フィルターの最初の行のピクセル。

Src1 3x3 フィルターの 2 行目のピクセル。

Src2 3x3 フィルターの 3 行目のピクセル。

情報 VXC_MODIFIER_FILTER(StartBin、EndBin、SourceBin、Filter、Clamp)で詳細情報を参照してください。

VXC_MODIFIER_FILTER(StartBin, EndBin, SourceBin, Filter, Clamp)

パラメーター:

StartBin/EndBin 連続してパックされたデータの最初のビン/最後のビン。

SourceBin 未使用。

フィルター フィルター モードを表 2 に示します。

クランプ 0: いいえ、結果は結果タイプに合わせて切り捨てられます (下位ビットのみがコピーされます)、 1: はい、結果は結果タイプに合わせてクランプされます。

テーブル2.フィルターモードのリスト:

フィルターモード形容
VXC_FM_BOX3x3 ボックス フィルターを計算します。
|1/9、1/9、1/9、1/9、1/9、1/9、1/9、1/9、1/9|。
VXC_FM_Guassian3x3 ガウス フィルターを計算します。
|1/16、2/16、1/16、2/16、4/16、2/16、1/16、1/16、1/16|。
VXC_FM_SobelX3x3 Sobel フィルターを x 方向に計算します。
|-1, 0, 1, -2, 0, 2, -1, 0, 1|.
VXC_FM_SobelY3x3 Sobel フィルターを y 方向に計算します。
|-1、-2、-1、0、0、0、1、2、1|。
VXC_FM_ScharrXx 方向の 3x3 Scharr フィルターを計算します。
|3, 0, -3, 10, 0, -10, 3, 0, -3|.
VXC_FM_ScharrY3x3 Scharr フィルターを y 方向に計算します。
|3, 10, 3, 0, 0, 0, -3, -10, -3|.
VXC_FM_Max3x3カーネルを最大限に活用します。
VXC_FM_Min3x3カーネルから最小値を取得します。
VXC_FM_Median3x3カーネルから中央値を取得します。

たとえば( 詳細はガウスフィルタの例を参照)、

int2 coord_in1 = 座標 + (int2)(-1, -1);\n\
VXC_OP4(img_load, lineA, in_image, coord_in1, 0, VXC_MODIFIER(0, 15, 0, VXC_RM_TowardZero, 0));\n\
int2 coord_in2 = 座標 + (int2)(-1, 0);\n\
VXC_OP4(img_load, lineB, in_image, coord_in2, 0, VXC_MODIFIER(0, 15, 0, VXC_RM_TowardZero, 0));\n\
int2 coord_in3 = 座標 + (int2)(-1, 1);\n\
VXC_OP4(img_load, lineC, in_image, coord_in3, 0, VXC_MODIFIER(0, 15, 0, VXC_RM_TowardZero, 0));\n\
int info = VXC_MODIFIER_FILTER(0, 13, 0, VXC_FM_Guassian, 0);\n\
VXC_OP4(フィルター、出力、行A、行B、行C、情報);;\n\

  • VXC_AbsDiff

a と b の絶対差の結果を計算します。パックされたデータで動作するため、16 x 8 ビット値または 8 x 16 ビット値を計算できます。

VXC_OP3(abs_diff, Dest, Src0, Src1, 情報)

パラメーター:

abs_diff 絶対差の関数を指定します。

Dest Destinationは結果を保存します。

Src0 絶対差を計算する最初のソース。

Src1 絶対差を計算する 2 番目のソース。

詳細情報 VXC_MODIFIER (StartBin、EndBin、SourceBin、RoundingMode、Clamp) で詳細を参照してください。

また、ここでは指定しない他のインターフェースもあり、それは /usr/include/CL/cl_viv_vx_ext.h にあります。つまり、VXC_IAdd、VXC_IAccSq、VXC_Lerp、VXC_MagPhase、VXC_MulShift、VXC_Clamp、VXC_BiLinear、VXC_SelectAdd、VXC_AtomicAdd、VXC_BitExtract、VXC_BitReplace。

参考文献:

OpenVX Vision Image Extension API の紹介 - DP Dot Products

Re: OpenVX Vision Image Extension API はじめに - 基本 API<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

有用,请问大神OpenVX Vision Image Extension API Introduction - DP Dot Products这个链接怎么进不去呢!

Tags (1)
No ratings
Version history
Last update:
‎01-04-2026 11:13 PM
Updated by: