Фильтрация порогового совпадения в OpenCV (преобразование Matlab) - PullRequest
1 голос
/ 19 февраля 2020

Текущей задачей является попытка репликации кода стабилизации изображения Matlab 1: 1 с openCV для приложения реального времени (анализ стабилизированных кадров, отсутствие вывода видео). В настоящее время я создаю прототип в Python, но конечная цель - функции C ++ и CUDA. Да, я знаю, что есть лучшие способы. Прямо сейчас силы, которые считают, что мои матрицы преобразования должны давать результаты в пределах 0,1 пикселя.

Похоже, проблема заключается в репликации функции Matlab matchFeatures , работающей с аргументами по умолчанию (сумма квадратов, исчерпывающая, отношение 0,6, порог 1%, функции SURF). Кажется, что у него есть как тест с коэффициентом 0,6 (легко повторяется с помощью knnMatch, k = 2 и простой для l oop), так и фильтр с порогом идеального соответствия 1%. Я на самом деле запустил кодер C, который дал мне некоторые подсказки вместе с фактической документацией. Нормализованное расстояние совпадения может варьироваться от 0 (идеально) до 4. Таким образом, пороговый фильтр установлен на 0,04. Конечно, вывод кодера C настолько запутан, что это может быть и язык ассемблера.

Простая фильтрация результатов матчей (DMatch :: distance) для сохранения менее 0,04 не является ответом. Из кода C я могу сказать, что происходит некоторая нормализация для создания matchMetrics в Matlab, но я не понимаю основную математику. Может ли кто-нибудь пролить свет на процесс нормализации игрового расстояния?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...