그림 372에서 HOG 피처 계산을 위한 VA 디자인의 기본 디자인 구조를 확인할 수 있습니다. CameraLink 베이스 구성의 카메라에서 입력된 그레이스케일 이미지에 대해, Oriented Gradients의 히스토그램은 HierarchicalBox HOG 내에서 계산됩니다. 이 히스토그램은 "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에 따른 크기와 방향이 MagnitudeOrientation 박스에 구현되어 있습니다(콘텐츠 및 구조는 그림 375 참조). 박스 내의 상세한 주석은 구현된 공식을 이해하는 데 도움이 됩니다.
8x8 픽셀 셀 단위의 픽셀 그룹화는 HierarchicalBox ExtractBlocks에서 수행됩니다. 이 박스의 출력 링크는 64픽셀 라인 형태의 셀 그래디언트 크기와 방향을 전달합니다. 이 정보는 HierarchicalBox Histogram에서 수행되는 Oriented Gradients 히스토그램 계산의 입력으로 사용됩니다. 그림 376에서 그 콘텐츠를 확인할 수 있습니다.
여기서는 영역 내에 있을 수 있는 그래디언트 방향을
(으)로
, 네 개의 빈(bin)으로 할당하는 작업이
박스 SplitOrientations에서 수행됩니다. 빈은
,
,
및
.
"HOG_9Bins_Histogram.vad" 및 "HOG_9Bins_HistogramMax.vad" 디자인의 경우 9개의 빈(
(으)로
단위로,
)이 존재합니다.
그래디언트 방향을 특정 빈에 할당하는 방식은 해당 빈에 대한 이 방향의 가중치를 계산하는 방식으로 이루어집니다. 예를 들어, 빈 1에 대한 가중치 부여 및 그에 따른
할당은
, 그림에 나와 있습니다.
377.
여기서 가중치는
식에 따라
49 빈 1에 대해 계산됩니다. 각 빈 사이의 각도 거리는
이 예에서는
(연산자 CONST_Phi_45Deg
박스 Sub45Deg)입니다. 빈 1의 각도 빈 방향은
또한
(연산자 CONST_Chi_45Deg)입니다. 그런 다음 각 빈의 가중치 계수에 그래디언트 크기를 곱합니다(그림 참조). 376). 박스에서
HistogramColumn_0 (으)로 HistogramColumn_3 각 히스토그램 열(각 빈에 대한)의 콘텐츠는 식에 따라
50 모든 이미지 픽셀에 걸친 가중된 그래디언트 크기의 합으로 계산됩니다. 그런 다음 Histogram of Oriented Gradients는 연산자를 사용하여 히스토그램 열을 병합함으로써 생성됩니다. MergeKernel_Histogram.
각 커널 구성 요소의 마지막 픽셀만 히스토그램 열의 실제 값이 되므로, 상자에서 선택됩니다.
LastPixelOnly. 국소 그래디언트 변화를 고려하기 위해 각 셀의 Histogram of Oriented Gradients는 블록당 2x2 셀 크기의 블록으로 결합되며,
(이 섹션의 이론 부분 참조). 셀을 블록으로 결합하는 작업은 상자 ConcatenateWithNeighbors에서 수행됩니다. 내용은 그림
378.
Oriented Gradients 히스토그램 정보가 포함된 각 셀(단일 픽셀로 표현됨)에 대해, 각 빈의 히스토그램 열은 operator SplitKernel을 사용하여 분리됩니다. 각 커널 구성 요소에 대해 x 및 y 방향의 다음 셀 이웃은 PixelNeighbours1xM 및 LineNeighboursNx1 operator를 사용하여 계산됩니다. FIRoperatorNxM operator는 2x2 셀의 정보를 합산합니다. 여기서 정규화는 수행되지 않습니다. 대안적 구현으로, Const_Enable operator를 0으로 설정하여 셀을 블록으로 그룹화하는 과정을 생략할 수 있습니다. 계산된 Oriented Gradients 히스토그램의 최댓값은 GetHistogramMax 박스에서 선택됩니다(그림 373 참조). 그 콘텐츠는 그림 379에 나와 있습니다. "HOG_9Bins_Histogram.vad" 디자인에서는 히스토그램 최댓값 선택이 생략됩니다.
마지막으로 히스토그램의 최댓값 또는 히스토그램 자체가 Visualize 박스(그림 373 참조)에 빨간색 선으로 시각화됩니다. 이 박스(경로: box Draw, EnableOriginal)에서는 파라미터 ModuloCount_Period(프레임 카운트), Is_InRange(프레임 범위 설정) 및 Const_Enable을 설정하거나 항상 켜두어(Const_Enable을 1로 설정) 원본 이미지를 여러 프레임 동안 HOG 피처와 함께 시각화할 수 있습니다. 마지막 단계로 HOG 피처는 DmaToPC_DMA0 operator를 통해 PC로 전송됩니다. 여기서 HOG 피처는 Support Vector Machine(SVM)이나 합성곱 신경망(CNN)을 이용한 Object Detection의 디스크립터로 사용될 수 있습니다.

이전

