Дескриптор FREAK с Opencv Python

Я пытался реализовать дескриптор FREAK в Python, используя Opencv. Вот код, который я использую:

def surf_freak_detect(image,hessianThreshold):
    surfDetector = cv2.SURF(hessianThreshold)
    surfDetector=cv2.GridAdaptedFeatureDetector(surfDetector,50)
    keypoints = surfDetector.detect(image,None) 
    freakExtractor = cv2.DescriptorExtractor_create('FREAK')
    keypoints,descriptors= freakExtractor.compute(image,keypoints)
    del freakExtractor
    return keypoints,descriptors

Это правильный способ инициализировать дескриптор Freak? Выполнив небольшую отладку, я обнаружил, что интерпретатор занимает очень много времени при вычислении дескрипторов, а затем в конце концов падает. Ключевые точки определяются правильно. Как ни странно, иногда это работает, а иногда просто падает!


person Colenso Castellino    schedule 29.01.2013    source источник
comment
Вы когда-нибудь добились чего-нибудь с этим?   -  person Paul Seeb    schedule 18.11.2013
comment
Вообще-то, нет. В итоге я использовал SURF. Похоже, что версия OpenCV Python, которую я использовал, не реализовывала оболочки для дескриптора FREAK. Если вам все еще нужно его использовать, вы можете использовать его через собственную реализацию C++.   -  person Colenso Castellino    schedule 19.11.2013


Ответы (2)


Если ключевые точки определяются правильно, но при создании дескрипторов происходит сбой программы, это происходит из-за того, что область дескриптора (которая окружает ключевую точку) выходит за пределы изображения и имеется доступ к памяти для позиции которого не существует.

Вы должны как-то ограничить рабочую область для фрикционных дескрипторов.

person Jav_Rock    schedule 17.12.2013