將移動平均套用於動態數量的影像

簡要說明

檔案: \examples\Processing\Loop\RollingAverage\rollingAverage_Loop.vad

Default Platform: imaFlex CXP-12 Quad

短說明

在執行中的影像串流上實作移動平均,且不會引入任何畫面延遲。 系統會計算最近 N 張單色影像的平均值,並用於以色彩將所得差值視覺化並與目前影像進行對比。 用於建立平均值的影像數量預設為 128,但可以修改。

此設計將展示移動平均的運作方式。 不過,核心元素是一個迴圈,它能支援更多應用和機器視覺運算。 為了理解迴圈的運作方式及其實作方法,這個範例是一個絕佳的起點。

演算法

系統會計算每個單一像素的平均值,並將其正規化至 8 bit 的輸入值範圍。 為此,每一個接收到的影格都會與其前置影格相加,並除以接收到的影格數量。 若達到移動平均序列的長度,總和就會減去已儲存且延遲的影格。 藉此,從第一張影像開始就會產生輸出影像。

在此設計中,兩個條件決定了移動平均序列的長度。 兩個數值皆稱為 N_rolling,且必須設定為相同的值。 其中一個處理減法影像的延遲儲存程序,另一個則處理像素值正規化。

已用迴圈

RxImageLink 和 TxImageLink 運算子可用於啟用迴圈處理。 輸入影像序列未正規化的平均總和會在一個迴圈中處理。 需要第二個迴圈處理來儲存輸入影格,以便稍后減去其數值。 每個迴圈都必須與輸入的相機影格保持同步。 這會觸發一個 SYNC 運算子,其中必須滿足啟動條件。 啟動條件本身由 InsertImage 處理,其中首次執行會引入單一的最小影格。 所使用的 SYNC 會將影格尺寸最大化至所需的值。

由於平均處理需要儲存一定數量的影格,因此使用了 ImageBufferMultiRoiDyn 運算子。 前幾張影像僅被儲存,同時透過產生最小影格來滿足同步目的。

使用 VA 模擬將有助於詳細了解此功能如何圍繞 SYNC 運作。 一般而言,一系列的人工最小影格會執行同步。

視覺化

實作了兩種不同的視覺化方式。第一種將產生一個 24 bit 的 RGB 影像,其中:

  • 平面 - 內容
  • 紅色 (RED) - 目前影像
  • 綠色 (GREEN) - 平均影像
  • 藍色 (BLUE) - 差值影像

第二種方法基於 HSL 色彩空間,該空間隨後會轉換為 24bit RGB:

  • 平面 - 內容
  • HUE / 色相角度 - 差值影像,其中最小值為綠色
  • SATURATION (飽和度) - 設定為最大值
  • LIGHTNESS (亮度) - 目前影像

第二種方法透過 EffectEnable = 1 開啟。 動態增益因數可用於所有 Hue 色相角度的差值 Scaling。

VisualApplets 設計

範例 "rollingAverage_Loop.vad" 是針對基礎組態的單色 CameraLink 相機所設計,解析度為 1024x1024,每像素 8bit。

模擬資料

範例 "rollingAverage_Loop.vad" 資料夾 %VASINSTALLDIR%\examples\Processing\Advanced\RollingAverage\street_sequence*.jpg 包含了一系列用於模擬的實用影像。 為了減少資料量,使用了有損壓縮格式。