2013-10-24 6 views
2

나는 가변 크기의 기능을 클러스터링하기 위해 opencv에서 BOW를 사용하고 있습니다. 그러나 한 가지는 OpenCV의의 문서에서 분명하지 않다 또한 나는이 질문에 대한 이유를 찾을 수 없습니다입니다 :Opencv에서의 Visual Word 가방

가정을 : 사전 크기 = 100

나는 특징을 계산하기 위해 서핑을 사용하여 각 이미지는 128 x 34, 128 x 63 등 가변 크기 설명자를 갖습니다. 이제는 BOW에서 각각 클러스터되고 I 이미지의 고정 된 설명자 크기가 128 x 100이됩니다. 나는 kmeans 클러스터링을 사용하여 생성 된 클러스터 센터가 100임을 압니다.

그러나 이미지에 128 x 63 디스크립터가있는 경우 디스크립터 행렬을 1D로 변환하지 않는 한 kmeans를 사용하여 불가능한 클러스터를 100 클러스터로 만드는 방법보다 혼란 스럽습니다. 1D로 변환하지 않으면 단일 키 포인트의 유효한 128 차원 정보가 손실됩니까?

설명자 행렬을 조작하여 63 개의 피쳐에서만 100 개의 클러 터 센터를 얻는 방법을 알아야합니다.

답변

9

이렇게 생각하십시오.

현재 이미지에는 총 10 개의 클러스터 평균과 6 개의 기능이 있습니다. 이러한 특징 중 처음 3 개는 5 번째 평균에 가장 가깝고 나머지 3 개는 각각 7 번째, 8 번째 및 9 번째 평균에 가장 가깝습니다. 그런 다음 해당 기능은 [0, 0, 0, 0, 3, 0, 1, 1, 1, 0] 또는 정규화 된 버전이됩니다. 어느 것이 10 차원이고 그것은 클러스터 평균의 수와 같습니다. 원한다면 63 개의 피쳐로부터 100000 차원의 벡터를 만들 수 있습니다.

하지만 BOW를 적용한 후에는 128x100이 아닌 1x100이어야하기 때문에 뭔가 잘못되었다고 생각합니다. 클러스터 의미는 128x1이고 128x1 크기의 기능 (첫 번째 이미지에 대해 34 128x1 기능, 두 번째 이미지에 대해 63 128x1 기능 등)을 해당 수단에 할당합니다. 따라서 기본에서는 34 개 또는 63 개 기능을 100 개 평균에 할당하고 결과는 1x100이어야합니다.

+0

정말 고맙습니다. 그리고 제 정확한, 나는 BOW 특징 벡터 크기에 대해 글쓰기에 실수를했습니다. 당신이 말했듯이 그것의 1 x 100을 확인했습니다. 그 사과 .. 명확한 해결책을 주셔서 감사합니다. –