Выравнивание снимков - PullRequest
       59

Выравнивание снимков

0 голосов
/ 29 октября 2018

Я немного поиграл с некоторыми методами обработки изображений, чтобы делать HDR-изображения и тому подобное. Мне очень трудно выровнять снимки, сделанные в пакетном режиме ... Я попробовал несколько наивных алгоритмов поиска движения, просто основываясь на сравнении небольших выборок пикселей (например, 16x16) между различными изображениями, которые в значительной степени работают так: - выберите один блок 16x6 на первом изображении, один с высокой контрастностью, затем размыть его, чтобы уменьшить шум - сравнить в соседнем радиусе (также размыто для шума) ... (обычно используя усредненную квадратическую разницу) - выберите наиболее похожий.

Я попробовал несколько вещей, чтобы улучшить это, например, используя эти алгоритмы поиска (https://en.wikipedia.org/wiki/Block-matching_algorithm), чтобы ускорить его. Однако результаты не являются хорошими, и когда они есть, они не устойчивы. Также они продолжают работать вычислительно очень интенсивный (что исключает использование на мобильном устройстве, например).

Я смотрел на популярные алгоритмы, основанные на исследованиях, такие как https://en.wikipedia.org/wiki/Lucas%E2%80%93Kanade_method,, но он не очень подходит для больших движений. Если мы видим серийные снимки, сделанные с помощью современных телефонов с сенсорами> 12Mpix, то легко, что небольшие движения приводят к разнице в 50-100 пикселей. Метод Лукаса Канаде кажется более подходящим для небольших движений ...

Это немного расстраивает, так как кажется, что есть сотни приложений, которые делают HDR, и они, кажется, могут в одно мгновение легко и надежно сопоставлять изображения ... Я пытался заглянуть в OpenCV, но все это предложения, кажется, выше метод Лукаса Канаде. Также я видел проекты типа https://github.com/almalence/OpenCamera,, которые легко делают это на чистой Java. Хотя код не прост (один класс имеет 5 тысяч строк, делающих все это). У кого-нибудь есть указатели на надежные ресурсы.

...