Operator FIRkernelNxM

Operator Library: Filter

運算子 FIRkernelNxM 會在每個像素周圍建立包含相鄰像素的矩形核心視窗。核心的大小可透過編輯輸出連結來定義。N 表示核心行數,M 表示核心列數。

[備註] No FIR filter

與其名稱相反,此運算子與 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

以下範例顯示由三個核心行與三個核心列組成的組合結果。所描繪運算子中的 3x3 矩陣提供了相對定址,用以定義各自核心的內容。輸出上的每個 3x3 叢集顯示了每個像素的不同核心值。

此範例未顯示每個像素的核心組態,而是顯示產生的子核心:位於索引 0 的第一個核心與位於索引 8 的最後一個核心。

以下範例顯示由兩個核心行與兩個核心列組成的組合結果。由於相對位址僅參考右側或下方的相鄰像素,因此無需對左側或頂部的內容執行邊緣處理。

比較最後兩個奇數與偶數核心大小的範例,可以看出 edgeMirroring 模式中 edgeHandling 功能的一個顯著行為。雖然奇數和偶數核心大小的 edgeMirroring 在頂部和左側邊界上的處理方式相同,但在底部和右側會產生稍微不同的結果。由於輸出影像尺寸較大,因此僅呈現第一筆(右上角)與最後一筆(右下角)輸入像素及其各自每個核心結果值的組態:

奇數核心大小的 EdgeMirroring 會使用來自等距資料區域的資料來填補缺少資料的區域。邊界會被保留且不會被複製。相同的原則也適用於填補偶數核心大小的頂部或左側區域。與此相對,填補底部或右側區域會在鏡射期間複製邊界。同樣地,這僅發生在偶數核心大小的情況下。

[提示] 偶數核心大小的 EdgeMirroring

對於偶數大小的核心,填補底部或右側的區域會在鏡射期間複製邊界。

在技術上,此運算子會等待並緩衝核心所需的像素,直到可以平行輸出為止。因此,此運算子會造成延遲,因為像素只能在輸入端處理完所有對應的相鄰像素後才能輸出。行延遲為:

算子限制

  • ImageWidth < 2*Parallelism is not allowed.

  • 不允許空白影像(即沒有像素的影像)。

  • 不允許空白行或可變的行長度。

I/O Properties

Property Value
Operator Type M
Input Link I, data input
Output Link O, kernel output

支援的 Link 格式

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 image protocol,則運算子為 P 型而非 M 型。

2

OutputKernelColumns <= ImageWidth

3

OutputKernelRows <= ImageHeight

參數

EdgeHandling
Type static parameter
Default EdgeMirrored
Range {EdgeMirrored, EdgeConstant}

在影像邊緣處,不存在可用於產生 kernel 的相鄰像素。在此情況下,運算子可在兩種邊緣處理模式下使用:

在 EdgeMirrored 模式下,影像邊緣會使用鏡射像素。

在 EdgeConstant 模式下,邊緣處缺失的 kernel 元素會以常數值進行填充。此值可透過參數 Constant 來定義。

Constant
Type static parameter
Default 0
Range 輸入 link I 的範圍

若參數 EdgeHandling 設為 EdgeConstant,此參數將定義影像邊界外像素的預設值。

對於 Color Format,此值是一個無號整數,結合了所有色彩分量的二進位表示法。

使用範例

以下範例展示了 FIRkernelNxM 運算子的使用方式: