2014-11-24 3 views
0

Я пытаюсь создать кодовую книгу из набора патчей изображений. Я разделил изображения (Caltech 101) на 20 X 20 патчей изображений. Я хочу создать дескриптор SIFT для каждого патча. Но для некоторых патчей изображения он не возвращает дескриптор/ключевую точку. Я пробовал использовать OpenCV и vlfeat. Поведение такое же, как и в любой из библиотек.Null/No SIFT дескриптор и ключевые точки, сгенерированные в python

Ниже мой код, используя OpenCV -

sift = cv2.SIFT() 
img = cv2.imread('patch_temp.jpg',0) 
imgptch = cv2.imread('image_patch.jpg',cv2.CV_LOAD_IMAGE_GRAYSCALE) 
kp, des = sift.detectAndCompute(imgptch,None) 
print des 

дез является 'None'. То же самое происходит, если я использую vlfeat. Примечание: выше работает, если я использую другое изображение. Он возвращает None для некоторых изображений (6 из 10).

Я создал патч изображения с использованием OpenCV индексации -

patch = img[0:20,0:20] 
cv2.imwrite('image_patch.jpg',img) 

ответ

2

Функцию sift.detectAndComputeбудет первая попытки обнаружить сито затем характерную точку вычислить дескриптор на нашло места.

Это не то, что вы хотите: вы хотите иметь дескриптор для каждого патча. Вы можете вручную перенести места с ключевыми точками (путем настройки их свойства pt в центр ваших патчей и настройки их свойства size на ваш размер патча). Затем вызовите только дескриптор-экстрактор в этом наборе местоположений.

Смежные вопросы