図 400 に、HOG特徴量を計算するためのVAデザインの基本設計構造を示します。 CameraLinkベース構成のカメラからのグレースケール画像に対して、HierarchicalBox HOG 内で方向勾配ヒストグラム(Histogram of Oriented Gradients)が計算されます。 このヒストグラムは、「HOG_9Bins_Histogram.va」デザインではDMAを介してPCに送信されます。VAデザイン「HOG_4Bins_HistogramMax.va」および「HOG_9Bins_HistogramMax.va」では、最大成分がPCに転送されます。 以下では、「HOG_4Bins_HistogramMax.va」のデザイン構造について説明します。他の2つのデザインについても同様です。 関連する問題における各デザインの差異については適宜説明します。デフォルトのプラットフォームは marathon VCL です。 デザインの実装は、他のプラットフォームやカメラ構成にも容易に適応させることができます。
図 400. VAデザイン「HOG_9Bins_Histogram.va」、「HOG_9Bins_HistogramMax.va」、「HOG_4Bins_HistogramMax.va」の基本設計構造
図 401 に HierarchicalBox HOG の内容を示します。
元の入力画像のx方向およびy方向の勾配は、HierarchicalBox GradientFilter 内で計算されます。 実装を図 47 に示します。オペレーター FIRkernelNxM が 3x3 カーネルを生成します。 オペレーター FIRoperatorNxM_VerticalEdges および FIRoperatorNxM_HorizontalEdges が、式 47 に従ってx方向およびy方向の勾配を選択します。
これらの勾配に対する大きさ(Magnitude)および方向(Orientation)の計算は、式 48 に従ってボックス MagnitudeOrientation 内に実装されています(内容と構造については図 403 を参照)。実装された数式を理解しやすくするため、ボックス内には詳細なコメントが記載されています。
8x8 ピクセルのセル単位へのピクセルのグループ化は、HierarchicalBox ExtractBlocks で行われます。 このボックスの出力リンクは、64 ピクセルのライン形式でセルの勾配の大きさと方向を転送します。 この情報が、HierarchicalBox Histogram で行われる方向勾配ヒストグラムの計算の入力となります。 その内容は図 404 で確認できます。
ここでは、特定の領域にある勾配方向の
を
の 4 つのビンへの割り当てが、ボックス SplitOrientationsで行われます。ビンは
,
,
および
です。
デザイン「HOG_9Bins_Histogram.va」および「HOG_9Bins_HistogramMax.va」には 9 つのビン(
を
次のステップサイズで:
)が存在します。
特定のビンへの勾配方向の割り当ては、その方向がビンに対して持つ重みを計算する方法で行われます。例として、ビンの重み付けとその結果としてのビン 1 への割り当ては、
は図
405.
ここでは、重み
。
中間画素位置の情報
49 がbin 1に対して計算されます。この例におけるbin間の角度距離
は
(オペレーター CONST_Phi_45Deg です(box Sub45Deg)。bin 1の角度binの向き
も
(オペレーター CONST_Chi_45Degです)。各binの重み付け係数は、勾配マグニチュードと乗算されます(図 404を参照)。box
HistogramColumn_0 を HistogramColumn_3 において、式
50 に従った各ヒストグラム列(各bin)の内容が、すべての画像ピクセルにわたる重み付けされた勾配マグニチュードの総和として計算されます。その後、オペレーター MergeKernel_Histogramを使用してヒストグラム列をマージすることにより、HOG(Histogram of Oriented Gradients)が生成されます。各カーネルコンポーネントの最後のピクセルのみがヒストグラム列の真の値であるため、これはbox
LastPixelOnlyで選択されます。局所的な勾配の変化に対応するため、各セルのHOGは、
のオーバーラップを持つ、1ブロックあたり2x2セルのサイズを持つブロックに結合されます(このセクションの理論編を参照)。セルからブロックへの結合は、box ConcatenateWithNeighbors。その内容については図を参照してください。
406.
Histogram of Oriented Gradientsに関する情報を持つ各セル(単一のピクセルで表される)について、各ビンのヒストグラム列はオペレーターSplitKernelで分離されます。各カーネルコンポーネントについて、x方向およびy方向の隣接セルがオペレーターPixelNeighbours1xMおよびLineNeighboursNx1によって計算されます。オペレーターFIRoperatorNxMは、2x2セルの情報を合算します。ここでは正規化は実行されません。代替の実装として、オペレーターConst_Enableをゼロに設定することで、ブロックへのセルのグループ化を省略できます。計算されたHistogram of Oriented Gradientsの最大値は、ボックスGetHistogramMaxで選択されます(図401参照)。その内容は図407に示されています。設計「HOG_9Bins_Histogram.va」では、ヒストグラム最大値の選択が省略されています。
最後に、ヒストグラムの最大値またはヒストグラム自体が、ボックスVisualize(図401参照)内で赤線として視覚化されます。このボックス(パス:ボックスDraw、EnableOriginal)では、パラメータModuloCount_Period(フレームをカウント)、Is_InRange(フレーム範囲を設定)、およびConst_Enableを設定するか、または常に(Const_Enableを1に設定して)HOG特徴量とともに元の画像を一定数のフレームにわたって視覚化するオプションがあります。最後のステップとして、HOG特徴量はオペレーターDmaToPC_DMA0を介してPCに転送されます。ここで、HOG特徴量は、サポートベクターマシン(SVM)や畳み込みニューラルネットワーク(CNN)におけるObject Detectionの記述子として使用できます。

前へ

