VisualApplets에서의 구현

그림 400에서는 HOG 특징을 계산하기 위한 VA 설계의 기본 구조를 확인할 수 있습니다. CameraLink 기본 구성의 카메라에서 촬영된 그레이스케일 이미지의 경우, 방향성 그라디언트 히스토그램(HOG)은 HierarchicalBox 내에서 계산됩니다 HOG에서 계산됩니다. 이 히스토그램은 "HOG_9Bins_Histogram.va" 설계 내의 DMA를 통해 PC로 전송됩니다. "HOG_4Bins_HistogramMax.va" 및 "HOG_9Bins_HistogramMax.va" VA 설계에서는 최대 성분이 PC로 전달됩니다. 다음에서는 “HOG_4Bins_HistogramMax.va”의 설계 구조를 설명합니다. 이는 나머지 두 설계에도 동일하게 적용됩니다. 해당 사항에 대해서는 설계 간의 가능한 차이점을 설명합니다. 기본 플랫폼은 marathon VCL입니다. 설계 구현은 다른 플랫폼이나 카메라 구성에 쉽게 적용할 수 있습니다.

“HOG_9Bins_Histogram.va”, “HOG_9Bins_HistogramMax.va” 및 “HOG_4Bins_HistogramMax.va” VA 설계의 기본 설계 구조

그림 400. VA 설계인 “HOG_9Bins_Histogram.va”, “HOG_9Bins_HistogramMax.va” 및 “HOG_4Bins_HistogramMax.va”의 기본 설계 구조


HierarchicalBox의 내용을 확인할 수 있습니다 HOG 의 내용을 그림 401에서 확인할 수 있습니다.

HierarchicalBox HOG의 콘텐츠

그림 401. HierarchicalBiox HOG의 구성


원본 입력 이미지에 대한 x 방향 및 y 방향의 그래디언트가 HierarchicalBox GradientFilter에서 계산됩니다. 구현 방법은 그림 47에 나와 있습니다. 오퍼레이터 FIRkernelNxM은 3x3 커널을 생성합니다. 오퍼레이터 FIRoperatorNxM_VerticalEdges 및 FIRoperatorNxM_HorizontalEdges는 수식 47에 따라 x 방향 및 y 방향의 그래디언트를 선택합니다.

HierarchicalBox GradientFilter의 콘텐츠

그림 402. HierarchicalBox GradientFilter의 내용


이 그라디언트의 경우, 식 ( 48 )에 따른 크기와 방향이 상자 내에 구현되어 있습니다. MagnitudeOrientation (내용 및 구조는 그림 403 참조)에 구현되었습니다. 박스 내의 상세한 주석은 구현된 공식을 이해하는 데 도움이 됩니다.

HierarchicalBox MagnitudeOrientation의 콘텐츠

그림 403. HierarchicalBox의 MagnitudeOrientation 속성


8x8 픽셀 단위의 셀 내 픽셀 그룹화는 HierarchicalBox에서 수행됩니다 ExtractBlocks에서 수행됩니다. 이 박스의 출력 링크는 셀의 기울기 크기와 방향을 64픽셀 크기의 선 형태로 전달합니다. 이 정보는 방향성 기울기 히스토그램(HOG) 계산에 입력되며, 이는 HierarchicalBox Histogram에서 수행됩니다. 그 내용은 그림 404에서 확인할 수 있습니다.에서 수행됩니다. 그 내용은 그림 404에서 확인할 수 있습니다.

HierarchicalBox Histogram의 콘텐츠

그림 404. HierarchicalBox 히스토그램의 내용


여기서는 영역에 포함될 수 있는 그래디언트 방향을 에서 네 개의 빈(Bin)으로 할당하는 작업이 SplitOrientations박스에서 수행됩니다. 빈은 , , 및 . “HOG_9Bins_Histogram.va” 및 “HOG_9Bins_HistogramMax.va” 설계의 경우, 9개의 빈( 에서 다음의 증가 단위로 )이 존재합니다. 그래디언트 방향을 특정 빈에 할당하는 방식은 해당 빈에 대한 이 방향의 가중치를 계산하는 방식으로 수행됩니다. 예시로, 빈 1에 대한 가중치 부여 및 그에 따른 할당은 (은)는 그림 405.

HierarchicalBox Bin1의 콘텐츠

그림 405. HierarchicalBox Bin1의 내용


여기서 가중치 식에 따라 49 빈 1에 대해 계산됩니다. 각 빈 사이의 각도 거리 는 이 예시에서 (연산자 CONST_Phi_45Deg 박스 Sub45Deg)입니다. 빈 1의 각도 빈 방향 역시 (연산자 CONST_Chi_45Deg)입니다. 그런 다음 각 빈의 가중치 계수를 그래디언트 크기와 곱합니다(그림 참조). 404). 박스 HistogramColumn_0 에서 HistogramColumn_3 식에 따른 각 히스토그램 열(각 빈의)의 콘텐츠 50 은 모든 이미지 픽셀에 걸친 가중치가 적용된 그래디언트 크기의 합으로 계산됩니다. 그런 다음 HOG(Histogram of Oriented Gradients)는 연산자 MergeKernel_Histogram. 각 커널 컴포넌트의 마지막 픽셀만이 히스토그램 열의 실제 값이므로, 박스에서 선택됩니다. LastPixelOnly. 로컬 그래디언트 변화를 반영하기 위해 각 셀의 HOG(Histogram of Oriented Gradients)는 블록당 2x2 셀 크기의 블록으로 결합되며, (이 섹션의 이론 부분 참조). 셀을 블록으로 결합하는 작업은 다음 박스에서 수행됩니다. ConcatenateWithNeighbors. 그림에서 내용을 확인하십시오. 406.

HierarchicalBox ConcatenateWithNames의 내용

그림 406. HierarchicalBox의 ConcatenateWithNeighbors 함수 내용


방향성 그라디언트 히스토그램(HOG) 정보가 포함된 각 셀(단일 픽셀로 표현됨)에 대해, 각 빈에 대한 히스토그램 열은 연산자로 구분됩니다 SplitKernel연산자로 구분됩니다. 각 커널 성분에 대해 x 및 y 방향의 인접 셀은 PixelNeighbours1xM 및 LineNeighboursNx1를 사용하여 계산됩니다. 연산자 FIRoperatorNxM 는 2x2 셀의 정보를 합산합니다. 여기서는 정규화가 수행되지 않습니다. 대안적인 구현 방법으로, 연산자 Const_Enable 를 0으로 설정하여 셀을 블록으로 묶는 과정을 생략할 수 있습니다. 계산된 방향성 그라디언트 히스토그램의 최대값은 상자 GetHistogramMax 상자에서 선택됩니다(그림 401 참조). 그 내용은 그림 407에 표시되어 있습니다. 설계 "HOG_9Bins_Histogram.va"에서는 히스토그램 최대값의 선택이 생략되어 있습니다.

HierarchicalBox GetHistogramMax의 내용

그림 407. HierarchicalBox의 GetHistogramMax 함수 내용


마지막으로 히스토그램의 최대값이나 히스토그램 자체가 박스 형태로 시각화됩니다 시각화 (그림 401 참조)에서 빨간색 선으로 표시됩니다. 이 박스(경로: box 그리기, EnableOriginal)에서는 매개변수 ModuloCount_Period ModuloCount_Period (프레임 수), Is_InRange (프레임 범위 설정), Const_Enable 또는 항상 ( Const_Enable 값을 1로 설정) 중 하나를 선택합니다. 마지막 단계로 HOG 특징은 연산자 DmaToPC_DMA0를 통해 PC로 전송됩니다. 여기서 HOG 특징은 서포트 벡터 머신(SVP)이나 컨볼루션 신경망(CNN)에서 물체 탐지를 위한 디스크립터로 사용될 수 있습니다.