Когда матрица гомографов с RANSAC вычисляется с меньшим количеством совпадающих ключевых точек (> 4), преобразованное изображение с warpPerspertive каким-то образом искажается или наклоняется. когда одно и то же изображение используется для деформирования с большим количеством согласованных клавиш, результат хорош. Я видел аналогичный вопрос здесь, но до сих пор не решена.
Теоретически нам нужно всего 4 сопоставленных ключевых точки, но в пассивном, почему это не работает? Может кто-нибудь объяснить или предоставить какой-либо документ, который объясняет причины.
благодаря
Одна большая часть проблемы заключается в том, что мы имеем ограниченную точность изображения. Многие алгоритмы используют субпиксельную точность, но трудно найти точное местоположение по самым разным причинам. Некоторые из них - это то, что визуальная информация теряется путем дискретизации сцены в пикселях, различий в разрешении изображения, недостатков и характеристик датчика камеры, изменения освещения и т.д.
Рассмотрим случай 1D. Скажем, у нас есть две точки, которые должны быть помещены в точные местоположения 0 и 20.5, но вместо них найдены в 0 и 20. Это ошибка 2.5%. Если эти точки были использованы для преобразования 1D-изображения размером 500, некоторые пиксели могут быть отключены на 12,5 пикселей. Эти ошибки оказывают очень большое влияние на части изображения вдали от найденных соответствий. Это называется ошибкой измерения.
Очевидно, если у нас будет одно плохое соответствие, то гомография будет плохой. Эти плохие совпадения называются ошибками классификации. На практике мы не можем рассчитывать на то, что любые четыре матча будут совершенно правильными, которые были сгенерированы с использованием любого дескриптора точки OpenCV. Мы можем (в зависимости от сцены и настройки) рассчитывать на многие точки, чтобы быть близкими к правильным.
Взгляните на случайный примерный консенсус: парадигма для моделирования моделей с приложениями для анализа изображений и автоматической картографии от Fishler и Bolles. Он описывает алгоритм, аналогичный RANSAC в OpenCV. В нем кратко обсуждается влияние ошибок классификации и измерений. В нем говорится, что ошибки измерения обычно следуют за нормальным распределением, поэтому, если у нас много совпадений, ошибки измерения будут иметь минимальный эффект. Мы также можем найти способ определить, какие совпадения могут быть ошибкой классификации и минимизировать их эффект.
findHomography
использует метод RANSAC, чтобы найти выбросы в соответствии. RANSAC предполагает наличие некоторого процента от значения Inlier, поэтому, если у вас мало ключевых точек, этот процент может больше не сохраняться. Я рекомендую реализовать свою собственнуюfindHomography
с RANSAC, чтобы иметь больше контроля над поведением.