2017-10-02 4 views
1

HOG (Histogram of Oriented Gradients)는 이미지의 단일 점에서 어떻게 작동합니까? Computer Vision Toolbox의 HOG 디스크립터 버전 인 https://www.mathworks.com/help/vision/ref/extracthogfeatures.html을 사용하고 있습니다.단일 점의 방향 지정된 그라디언트의 히스토그램 계산

이미지의 특정 지점에 HOG를 계산하고 단일 점에서 HOG를 계산할 때 가장 좋은 셀 크기 및 블록 크기는 무엇입니까?

+0

저는 "[features, validPoints] = extractHOGFeatures (I, points)"를 matlab에 사용하고 있습니다. 여기서 점은 [x, y] 좌표의 Mx2 행렬을 나타낼 수 있습니다. 참조는 다음과 같습니다. https://www.mathworks.com/help/vision/ref/extracthogfeatures.html –

+0

나는 알고 있습니다. 나는 대답을 쓸 것이다. – rayryeng

답변

0

단일 점에 대한 HOG 기술자는 없습니다. HOG 서술자는 짙은 서술자이므로 서라운드을 주목할 픽셀 블록을 얻을 수 있습니다. extractHOGFeatures 함수는 이미지와 선택적으로 HOG 디스크립터를 계산할 특정 입력 좌표를 취합니다. 이들은 (x,y)이거나 HOG 기술자를 계산할 이미지의 열과 행 위치입니다. 이것을 N x 2 행렬로 지정하고 각 행은 HOG 디스크립터를 계산할 위치의 (x,y) 좌표입니다.

로컬 픽셀 패치에서 HOG 디스크립터를 계산한다는 것을 상기하자. 이 로컬 패치의 기본 크기 또는 셀 크기은 Dalal 및 Triggs의 원래 보행자 감지 알고리즘에 따라 8 x 8입니다. 히스토그램에서 방향의 부호를 무시한다고 가정하면 히스토그램의 기본 빈 수는 9이거나 20도 단위로 각도를 고려하여 총 180 도가됩니다. 8 x 8 패치마다 9 칸의 막대 그래프가 있습니다. 당신은 또한 세포의 구성을이라고 간주합니다. 각 블록은 셀 격자로 구성되며 MATLAB의 기본값은 2 x 2 격자로 16 x 16 픽셀 창입니다.

따라서 지정한 위치가 가운데가되며이 가운데에 16 x 16 창이 표시됩니다. 그런 다음 4 개의 HOG 히스토그램 (블록 내의 각 셀에 하나씩)을 계산합니다. 마지막 단계로 모든 히스토그램을 연결하여 하나의 긴 막대 그래프를 만듭니다 (4 x 9 = 36 요소).이 벡터를 정규화하여 해당 좌표를 나타내는 최종 설명자를 계산합니다.

출력은 N 행의 행렬입니다. 각 행은 입력 위치 행렬의 해당 행에 의해 지정된 중앙 위치의 설명 자입니다. 더 구체적으로 말하자면 N x 36 행렬을 얻게됩니다. 특히 OpenCV의에서, 응용 프로그램에 있지만, 사용 사례의 대부분을 의존하는 최적의 블록 크기 및 셀 크기,에 관해서는

는 기본 2 x 2는 따라서 16 x 16을 만드는 블록 크기의 8 x 8 셀 크기를 가정하는 것입니다 픽셀 패치. Dalal과 Triggs는 서로 다른 크기의 셀과 블록을 실험하여이 두 크기가 보행자 감지의 사용 사례에 가장 적합하다는 것을 알았습니다.

+1

많은 혼란이 이제 해결되었습니다. 대단히 감사합니다. –

+0

대단히 반갑습니다. 나는이 디스크립터가 처음에는 매우 혼란 스럽다는 것을 인정할 것이다. 그것을 이해하기 위해 많은 튜토리얼을 읽어야했다. 행운을 빕니다! – rayryeng

+0

당신이 신경 쓸만하다면, 특별히 "MATLAB"함수 인 "extractHOGFeature"와 관련된 질문을 하나 더달라고 할 수 있습니다. –