2016-01-28 3 views
0

В настоящее время я работаю над проверкой дубликатов изображений, поэтому я использую ORB для этого, первая часть почти завершена, у меня есть вектор дескриптора обоих изображений, теперь как вторая часть, которую я хочу знаю, как мы вычислим оценки с использованием расстояния Хэмминга, и что должно быть порогом сказать, что они являются дубликатамипроверка дубликатов изображений с помощью ORB

img1 = gray_image15 
    img2 = gray_image25 
    # Initiate STAR detector 
    orb = cv2.ORB_create() 
    # find the keypoints with ORB 
    kp1 = orb.detect(img1,None) 
    kp2 = orb.detect(img2,None) 
    # compute the descriptors with ORB 
    kp1, des1 = orb.compute(img1, kp1) 
    kp2, des2 = orb.compute(img2, kp2) 

    matcher = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) 
    matches = matcher.match(des1, des2) 
    # Sort them in the order of their distance. 
    matches = sorted(matches, key = lambda x:x.distance) 

я просто хочу знать, следующий шаг в этом процессе, так что в конце концов я могу напечатать да или нет для дубликаты. Я использую opencv3.0.0 с питоном 2,7

+0

Для реализации C++ используйте https://github.com/vonzhou/opencv/blob/master/match/ORB_match.cpp и для реализации реализации python: http://stackoverflow.com/questions/11114349/how- чтобы визуализировать-дескриптора-согласования-с использованием OpenCV-модуль--в-питона. Надеюсь, это вам поможет. –

+0

Другая ссылка: http: //docs.opencv.org/3.0-beta/doc/py_tutorials/py_feature2d/py_matcher/py_matcher.html –

+0

Привет, не могли бы вы рассказать нам, каковы критерии «дубликатов изображений» из ваших представлений? В зависимости от ваших ответов решения могут быть совершенно разными: они могут варьироваться от простого способа, например сравнения гистограмм, или сложных алгоритмов, таких как сумка слов, хеширование изображений. Если вы хотите знать, как использовать OBR для определения аналогичного объекта (если это отдельный объект), это довольно просто, как сказал Сагар. – StereoMatching

ответ

2
  • После получения дескрипторов, вы можете использовать модель мешка из-слов, чтобы сгруппировать дескрипторы эталонного изображения, то есть, создать словарь (визуальные слова) ,
  • Затем спроектируйте дескрипторы другого изображения на этот словарь.
  • Затем вы можете получить гистограмму, показывающую распределение каждого из визуальных слов на двух изображениях.
  • Сравните эти две гистограммы с использованием метода сравнения гистограмм и используйте пороговое значение для обнаружения дубликатов. Например, если вы используете расстояние Бхаттачарья, низкое значение означает хорошее совпадение.

У меня нет реализации python этого, но вы можете найти что-то подобное в C++ here.