在圖 372 中,您可以看到用於計算 HOG 特徵的 VA 設計的基本設計結構。 對於來自 CameraLink 基本配置相機的灰階影像,會在 HierarchicalBox HOG 中計算定向梯度直方圖 (Histogram of Oriented Gradients)。 在設計「HOG_9Bins_Histogram.vad」中,此直方圖會透過 DMA 傳送至 PC。而在 VA 設計「HOG_4Bins_HistogramMax.vad」與 「HOG_9Bins_HistogramMax.vad」中,最大分量會 轉發至 PC。接下來我們將說明「HOG_4Bins_HistogramMax.vad」的設計結構。其他兩個設計與此類似。 我們將針對對應的問題說明設計中的可能差異。預設平台為 marathon VCL。設計實作可以輕鬆調整 至其他平台或相機配置。
圖 372. VA 設計「HOG_9Bins_Histogram.vad」、「HOG_9Bins_HistogramMax.vad」與「HOG_4Bins_HistogramMax.vad」的基本設計結構
您可以在圖 373 中查看 HierarchicalBox HOG 的內容。
對於原始輸入影像,x 方向與 y 方向的梯度是在 HierarchicalBox GradientFilter 中進行計算。其實作如圖 47 所示。 運算子 FIRkernelNxM 會產生一個 3x3 核心。運算子 FIRoperatorNxM_VerticalEdges 與 FIRoperatorNxM_HorizontalEdges 則根據方程式 47 選取 x 方向與 y 方向的梯度。
對於這些梯度,根據方程式 48 的幅值與方向實作於 box MagnitudeOrientation 中(內容與結構請參見圖 375)。box 中的 詳細註解有助於理解所實作的公式。
像素在 8x8 像素儲存格中的分組是在 HierarchicalBox ExtractBlocks 中執行的。此 box 的輸出鏈結以大小為 64 像素的行形式轉發 儲存格的梯度幅值與方向。此資訊是計算定向梯度直方圖的輸入, 該計算在 HierarchicalBox Histogram 中執行。您可以在圖 376 中查看其內容。
在此,梯度方向(可位於
設定為
區域內)會在 SplitOrientations方塊中分配至四個 Bin。這些 Bin 為
,
,
和
。
對於設計「HOG_9Bins_Histogram.vad」和「HOG_9Bins_HistogramMax.vad」,九個 bin (
設定為
中的任意值,步長為
)。
將梯度方向分配至特定 Bin 的方式為:計算此方向對於該 Bin 的權重。舉例來說,權重計算以及因此
,如圖所示。
377.
在此,權重
根據公式
49 針對 bin 1 進行計算。此範例中,bin 之間的角度距離為
在此範例中為
(運算子 CONST_Phi_45Deg 在
box Sub45Deg)。bin 1 的角度 bin 方向
也為
(運算子 CONST_Chi_45Deg)。接著,每個 bin 的權重係數會與梯度強度相乘(見圖 376)。在 box
HistogramColumn_0 設定為 HistogramColumn_3 中,根據公式計算每個直方圖欄(針對每個 bin)的內容
50 ,計算方式為所有影像像素上加權梯度強度的總和。然後,透過使用運算子將直方圖欄合併來產生方向梯度直方圖 (Histogram of Oriented Gradients) MergeKernel_Histogram。
只有每個 kernel 元件的最後一個像素才是直方圖欄的真實值,因此會在 box 中選取
LastPixelOnly。為了考慮
局部梯度變化,每個儲存格的方向梯度直方圖會組合成大小為每個區塊 2x2 個儲存格的區塊,
重疊為
(見本節的理論部分)。儲存格組合成
區塊的操作是在 box 中執行 ConcatenateWithNeighbors。請參閱圖中的內容。
378.
對於包含定向梯度直方圖資訊的每個儲存格(由單個像素表示),每個 bin 的直方圖 欄位會使用 operator SplitKernel 進行分離。對於每個 kernel 元件,x 和 y 方向上的下一個儲存格相鄰項會透過 operator PixelNeighbours1xM 與 LineNeighboursNx1 計算。 operator FIRoperatorNxM 將 2x2 儲存格的資訊加總。 此處不執行正規化。作為替代實作,可以透過將 operator Const_Enable 設為零來省略將儲存格分組為區塊的操作。 計算出的定向梯度直方圖的最大值會在 box GetHistogramMax 中選取(請參見圖 373)。其內容如圖 379 所示。在設計 「HOG_9Bins_Histogram.vad」中,會省略直方圖最大值的選取。
最後,直方圖的最大值或直方圖本身會以紅線形式在 box Visualize(請參見圖 373)中視覺化。 在此 box(路徑:box Draw、EnableOriginal)中,您透過設定參數 ModuloCount_Period(計算影格數)、Is_InRange(設定影格範圍)以及 Const_Enable 或保持常開(將 Const_Enable 設定為 1),可以選擇將原始影像與 HOG 特徵一起視覺化顯示多個影格。 作為最後一步,HOG 特徵會透過 operator DmaToPC_DMA0 傳輸至 PC。 在此處,HOG 特徵可用作支援向量機 (SVM) 或卷積神經網路 (CNN) 中 Object Detection 的描述元。

上一頁

