2013-07-17 6 views
1

표준 베이 즈 분류기를 사용하여 객체 분류에 sift를 사용하려고합니다. 가변 크기의 각 이미지에 대한 설명자를 계산할 때 크기가 다른 여러 가지 특징 벡터가 나타납니다. 예 :Opencv Sift의 특징 벡터 크기

Feature Size: [128 x 39] 

Feature Size: [128 x 54] 

Feature Size: [128 x 69] 

Feature Size: [128 x 64] 

Feature Size: [128 x 14] 

개발의 경우 20 개의 교육 이미지를 사용하고 있으므로 20 개의 라벨이 있습니다. 내 분류는 차, 책 및 공을 포함하는 3 개 수업 중 하나입니다. 그래서 내 레이블 벡터 크기는 [1 x 20]

내가 이해하는 한 기계 학습을 수행하려면 특성 벡터 크기와 레이블 벡터 크기가 같아야하므로 훈련 데이터의 벡터 크기를 [__ x 20]이고 레이블은 [1 x 20]입니다.

그러나 내 문제는 선별에는 128 차원 특성 공간이 있으므로 위에서 설명한 것처럼 각 이미지의 피쳐 크기가 다릅니다. 기능을 잃지 않고 같은 크기로 변환하려면 어떻게해야합니까? 또는 아마도 내가 잘못했을 수도 있으므로이 부분을 도와주세요.

추신 : 실제 나는 BOW 모델을 사용하여 작업을 수행했지만 학습 목적으로는이 점을 이해하기 위해 노력하고 있습니다. 아무런 힌트와 조언도 환영합니다. 감사합니다

답변

3

맞아요, SIFT 기술자는 128 차원 기능입니다.

이미지에서 감지 된 모든 키 포인트에 대해 SIFT 디스크립터가 계산됩니다. 기술자를 계산하기 전에 관심 지점을 탐지하기 위해 탐지기 (Harris, Sift 또는 Surf Detector)를 사용했을 것입니다.

키 포인트 및 컴퓨팅 설명자를 찾는 것은 두 가지 독립적 인 단계입니다!

Feature Size: [128 x Y]을 프로그램에 인쇄 할 때 Y는 현재 이미지에서 감지 된 키 포인트 수를 나타냅니다.

일반적으로 BOW를 사용하면 각 키 포인트 설명자에 대해 BOW에서 가장 가까운 클러스터의 색인을 지정할 수 있습니다. 응용 프로그램에 따라 결정할 수 있습니다. (장면의 한 객체가 있는지 여부에 대한 투표)

+0

감사합니다. 실제로 저는 과제를 수행하고 BOW를 사용했고 잘 작동합니다. 그러나 나는 이미지를 분류하는 다른 방법을 시도하고 있다는 것에 너무 흥미를 느꼈다. BOW 모델을 사용하지 않고 분류하려고하고 있으므로 어떻게 훈련 매트릭스를 할당 할 수 있을지 궁금합니다. 행렬을 [128 x Y]에서 [1 x Y]로 변경한다고 생각하십니까? 이것은 내가 벡터의 한 차원만을 사용한다는 것을 의미합니다. 이거 어떻게 생각하니? – rish

+1

[1 x Y] 행렬은 의미가 없습니다. 실제적으로 당신은 개별 SIFT 피쳐 [128 x 1]를 사용하여 Y를 다른 이미지로부터 추출 된 SIFT와 비교할 수 있습니다. – Eric

+0

죄송합니다 실제로 그것이 의미하는 것입니다 .. 고마워요. – rish

0

BOW를 사용하지 않으려는 경우 개별 SIFT 기능을 다음과 같이 일치시킬 수 있습니다. 원래 SIFT paper by Lowe에 설명되어 있습니다.

기본 아이디어는 두 이미지를 서로 비교하여 이미지가 비슷하거나 유사한 지 여부를 결정하는 것입니다. SIFT 기능을 개별적으로 비교하면됩니다. 일치하는지 결정합니다. 그런 다음 공간 위치가 일관성이 있는지 확인하려면 일치하는 기능을 한 이미지에서 다른 이미지로 변환 할 수 있는지 확인해야합니다.

자세한 내용은 SIFT wikipedia article에 설명되어 있습니다.