SIFT в opencv не работает должным образом - PullRequest
0 голосов
/ 04 мая 2018

Я работаю с opencv и SIFT в Python.

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

Я пытаюсь найти этот объект в этом изображении , но получаю только этот результат .

В основном я работаю с:

dect = cv2.xfeatures2d.SIFT_create(nOctaveLayers=5)
bf = cv2.BFMatcher(crossCheck=False) 
M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC , 5.0)

Я действительно в отчаянии, потому что иногда (с другими подобными объектами [правителями]) это работает, а иногда нет, даже если ситуация ясна визуально.

1 Ответ

0 голосов
/ 04 мая 2018

Не уверен, что можно сопоставить ваш объект и сцену, используя SIFT или другие пары детектор / дескриптор. Ваш объект идеально черно-белый, а ваша сцена - нет.

Для игры с подходящими параметрами и методами я рекомендую Find-Object (http://introlab.github.io/find-object/).

Возможно, вам нужно как-то подготовить изображение сцены. Например. Использование порога для генерации чёрного изображения. Я сделал это при поиске маркеров Фотомоделлера (http://www.photomodeler.com/products/pm_automation.html) на изображениях. Адаптивный порог (https://docs.opencv.org/3.2.0/d7/d4d/tutorial_py_thresholding.html) работал лучше всего.

Вы можете взглянуть на алгоритмы обнаружения маркеров. Например: https://docs.opencv.org/3.1.0/d5/dae/tutorial_aruco_detection.html. Если у вас есть цель с известными позициями маркера, вы можете извлечь масштаб.

...