オペレーター FIRkernelNxM

Operator Library: Filter

オペレーター FIRkernelNxM は、各ピクセルの周囲に、隣接ピクセルを含む長方形のカーネルウィンドウを作成します。カーネルのサイズは、出力リンクを編集することで定義できます。N はカーネルの行数を表し、M はカーネルの列数を表します。

[注] FIRフィルターなし

その名前とは裏腹に、このオペレーターはFIRフィルターとは何の関係もありません。フィルターの入力データを生成するために使用できます。

カーネルを生成するその他のオペレーターには、LineNeighboursNx1 および PixelNeighbours1xM があります。

カーネルの中心要素は常に、それぞれの位置の元の入力ピクセルを表します。ピクセルインデックス x および y、ならびにカーネルインデックス m および n を持つ出力画像 O は、入力から次のように導出されます。

を および

画像の端では、隣接するピクセルが定義されません。このオペレーターでは、パラメーター EdgeHandling を使用して、必要なエッジ処理アルゴリズムを定義できます。

偶数サイズのカーネルには中心ピクセルがありません。この場合、中心ピクセルは左上の隅に移動します。たとえば、サイズ 4x4 のカーネルの場合、次の表に示すように、(1,1) に中心ピクセルが定義されます。

0,0 0,1 0,2 0,3
1,0 1,1 1,2 1,3
2,0 2,1 2,2 2,3
3,0 3,1 3,2 3,3

カーネルは行数と列数によって記述されます。VisualApplets では、N が行数を表し、M が列数を表します。多くの場合、カーネル要素は座標ではなくインデックスによって指定されます。この場合、次の表に示すように、順序は行ごとになります。

0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15

次の例は、3 行のカーネル行と 3 列のカーネル列に対する結果の構成を示しています。図示されたオペレーター内の 3x3 マトリックスは、それぞれのカーネルの内容を定義する相対アドレス指定を提供します。出力上の各 3x3 クラスターは、ピクセルごとの異なるカーネル値を示しています。

ピクセルごとのカーネル構成の代わりに、この例では結果のサブカーネル(インデックス 0 の最初のカーネルとインデックス 8 の最後のカーネル)を示しています。

次の例は、2 行のカーネル行と 2 列のカーネル列に対する結果の構成を示しています。相対アドレスは右側または下側の近傍のみを参照するため、左側や上側のコンテンツに対してエッジ処理を実行する必要はありません。

奇数および偶数のカーネルサイズを持つ最後の 2 つの例を比較すると、edgeMirroring モードにおける edgeHandling 機能の注目すべき挙動がわかります。奇数および偶数のカーネルサイズに対する edgeMirroring は、上部および左側の境界では同一に扱われますが、下部および右側ではわずかに異なる結果を生成します。出力画像サイズが大きいため、結果のカーネルごとの値を持つ、最初(右上)および最後(右下)の入力ピクセルの結果の構成のみを以下に示します。

奇数カーネルサイズの EdgeMirroring は、データが欠落している領域を、データを持つ等距離の領域から埋めます。境界は保持され、複製されません。同じ原則が、偶数カーネルサイズの場合の上側または左側を埋める領域にも当てはまります。これとは対照的に、下側または右側を埋める領域では、ミラーリング中に境界が複製されます。繰り返しになりますが、これは偶数カーネルサイズの時にのみ発生します。

[ヒント] 偶数カーネルサイズの EdgeMirroring

偶数カーネルサイズの場合、下側または右側の領域を埋めると、ミラーリング中に境界が複製されます。

技術的には、このオペレーターは、並列に出力できるようになるまで、カーネルに必要なピクセルを待機およびバッファリングします。したがって、入力ですべての必要なそれぞれの隣接ピクセルが処理された後にのみピクセルを出力できるため、このオペレーターは遅延を引き起こします。ライン遅延は次のとおりです。

Operator Restrictions

  • ImageWidth < 2*Parallelism is not allowed.

  • 空の画像、つまりピクセルのない画像は許可されません。

  • 空の行や異なる行の長さは許可されません。

I/O Property

Property 値
オペレータータイプ M
Input Link I, data input
Output Link O、カーネル出力

サポートされているリンクフォーマット

Link Parameter Input Link I Output Link O
Bit Width any1 as I
Arithmetic {unsigned, signed} as I
Parallelism {1, 2, 4, 8, 16, 32, 64} as I
Kernel Columns 1 any2
Kernel Rows 1 any3
Img Protocol {VALT_IMAGE2D, VALT_LINE1D}4 as I
Color Format any as I
Color Flavor any as I
Max. Img Width any as I
Max. Img Height any as I

1

入力 Bit Width の範囲は次のとおりです:

  • 符号なし入力の場合: [1, 64]

  • 符号付き入力の場合: [2, 64]

  • 符号なしカラー入力の場合: [3, 63]

  • 符号付きカラー入力の場合: [6, 63]。

4

VALT_LINE1D 画像プロトコルが使用されている場合、オペレーターは M タイプではなく P タイプになります。

2

OutputKernelColumns <= ImageWidth

3

OutputKernelRows <= ImageHeight

パラメーター

EdgeHandling
タイプ static パラメータ
Default EdgeMirrored
範囲 {EdgeMirrored, EdgeConstant}

画像の端では、カーネルを生成するための近傍が存在しません。この場合、オペレーターは 2 つのエッジ処理モードで使用できます。

モード EdgeMirrored では、画像の端でミラーリングされたピクセルが使用されます。

モード EdgeConstant では、エッジ部分の不足しているカーネル要素が定数値で埋められます。この値はパラメータ Constant を使用して定義できます。

Constant
タイプ static パラメータ
Default 0
範囲 入力リンク I の範囲

パラメータ EdgeHandling が EdgeConstant に設定されている場合、このパラメータは画像境界の外側のピクセルのデフォルト値を定義します。

カラーフォーマットの場合、この値はすべてのカラーコンポーネントのバイナリ表現を組み合わせた符号なし整数になります。

使用例

オペレーター FIRkernelNxM の使用方法は、以下の例に示されています: