2014-09-12 4 views
2

100K 64x64 회색 패치 세트가 있습니다. (이미 정렬되었으므로 모두 동일한 방향입니다.) 각각에서 SIFT 설명자를 추출하고 싶습니다. OpenCV 사용.OpenCV - 사전 자른 패치에서 SIFT/SURF 서술자를 추출합니다.

내가해야 할 것은 kp.x = 32, kp.y = 32와 같은 하나의 키포인트 kp로 벡터를 정의하는 것입니다.

그러나 kp.size 매개 변수를 설정하는 방법을 모르겠습니다. SIFT의 코드를 살펴 보았을 때 패치의 크기라고 가정하는 대신에 매개 변수로 간단한 계산을하는 것처럼 보입니다.

질문 1 : 64x64 크기의 패치에서 SIFT 설명자를 추출 할 때 kp.size 매개 변수는 무엇이되어야합니까?

질문 2 : 64x64 크기의 패치에서 SURF 디스크립터를 추출 할 때 kp.size 매개 변수는 무엇이되어야합니까?

+0

은 원본 SIFT/SURF 논문에서 특징 척도와 설명자 크기가 어떻게 연결되어 있는지 살펴 봅니다. 2. 같은 계산을 사용하는지 여부에 관계없이 openCV 코드. 또는 scale 및 descriptor 크기를 출력하고 일부 값을 테스트하기 위해 openCV SIFT/SURF 코드를 수정할 수도 있습니다. – Micka

답변

2

sift 원본을 보면 키포인트의 크기가 기울기 크기 및 방향의 막대 그래프에 가중치를 부여하는 데 사용됩니다 (단락 6. 로컬 이미지 설명자). 따라서 회색 패치가 정렬되었으므로 패치 센터에서 픽셀의 기여도를 더 높이기 위해 가중치를 줄 것인지 여부를 결정하고 스케일을 선택하십시오 (예 : 가중치 가중치 창의 함께).).

SURF의 경우 그라데이션 크기 대신 그라디언트 웨이브 렛에 대한 응답이 사용되지만 기본적으로 가우시안 창을 사용하여 응답을 가중시킬 수 있다는 점만 제외하면 기본적으로 동일한 원리입니다.

또한 정렬 된 패치로 작업하기 때문에 OpenCV의 고급 기능을 사용하지 말고 단순히 설명자 추출 부분을 사용/다시 코딩하고 계산할 가중치를 적용하는 것이 좋습니다. 패치 표현. 그 이유 중 하나는 SIFT 예제에서 SIFT 설명자의 계산이 제공된 키포인트에 "새 키포인트 추가"가 될 수 있습니다. 알고리즘이 키포인트 방향에 "만족스럽지"않은 경우 동일한 키포인트를 복제합니다 위치는 다르지만 방향은 다릅니다.

2

오케이. 그래서 SIFT 기술자는 일반적으로 4x4 격자 인근을 사용하며, 각 격자는 대개 4x4 픽셀입니다. 따라서 픽셀 단위의 이웃은 대개 16x16입니다. 배율/크기는 키포인트의 다운 샘플링/흐리게/반경의 양을 결정하는 매개 변수입니다. 그래서 저는 귀하의 경우에 이것이 일 것이라고 생각합니다.

SIFT 키포인트는 하위 픽셀 레이어에서도 작동합니다. (32,32)는 이미지 패치의 정확한 중심이 아니며 이미지 크기 (x, y)가 1에서 시작하는 경우 실제로는 (32.5, 32.5)입니다. 0에서 시작하면 31.5, 31.5) - opencv의 경우와 같습니다.