Opencv Repeatability Результат не имеет смысла?
Я пытаюсь оценить SIFT и SURF детекторы по критериям повторяемости.
я узнаю, что ниже метод может найти повторяемость, соответствие SIFT и SURF
cv::evaluateFeatureDetector(img_1c, img_2c, h12, &key_points_1, &key_points_2, repeatability, corrCounter);
некоторые из результатов перечислены ниже:
Number Repeatibility Correspond Keypoint 1st Keypoint 2th
1to2 0.7777778 140 224 180
1to3 0.7125 114 224 161
1to4 0.704918 86 224 123
1to5 0.6853933 61 224 89
1to6 0.6521739 45 224 69
для повторяемости первой строки можно вычислить как -> (correnspond)/min(keypoint1st,keypoint2th) = (140/180) = 0.7777778, но для других строк это значение отличается от того, что я вычисляю с помощью приведенной выше формулы.
может кто-нибудь сказать, почему это происходит?
С уважением.
2 ответа
Я думаю, что, возможно, нашел проблему здесь.
Коэффициент повторяемости - это количество повторяющихся точек между двумя изображениями с учетом общего количества выделенных ключевых точек. Для измерения количества повторяющихся точек необходимо принять во внимание, что наблюдаемые сцены отличаются друг от друга из-за их измененных условий визуализации (точка обзора, вращение + масштаб, размытие и т. Д. В случае набора данных Миколайчик).
Ключевые точки, которые не обнаружены на обоих изображениях, могут повредить показатель повторяемости, поэтому только повторяемость влияет только на точки, которые лежат в общих частях сцены.
Происходит то, что вы учитываете все ключевые точки, обнаруженные на втором изображении, для расчета повторяемости, и на самом деле должны использоваться только ключевые точки в пределах гомографии.
Надеюсь это поможет.
Фактически, OpenCV 2.49 использует эту строку кода в evaluation.cpp
:
repeatability = minCount ? (float)correspondencesCount / minCount : -1;
что количество соответствий, деленное на меньшее количество Keypoint 1st
или же Keypoint 2th
так что я думаю, что ваша ошибка может быть где-то еще. Можете ли вы опубликовать свой полный код, где вы установили img_1c и т. Д., И вызвать функцию и отобразить результаты?