Объедините два перекрывающихся видео кадр за кадром, чтобы сформировать один кадр

Я получаю видеовход от 2 отдельных камер с некоторой областью перекрытия между выходными видео. Я пробовал код, который объединяет видеовыход по горизонтали. Вот ссылка на этот код:

https://github.com/rajatsaxena/NeuroscienceLab/blob/master/positiontracking/combinevid.py

Чтобы объяснить проблему визуально:

Перекрытие

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

Решение, которое я могу придумать, но не могу реализовать, заключается в том, что с помощью SIFT / SURF узнайте ключевые точки максимального расстояния из обоих кадров, а затем полностью возьмите первый видеокадр и просто выберите неперекрывающуюся область из второго видеокадра и объедините их по горизонтали, чтобы получить сшитый вывод.

Дайте мне знать о любых других возможных решениях. Спасибо!


person rahul saxena    schedule 23.12.2015    source источник


Ответы (1)


Я прочитал этот пост час назад. Я попробовал очень простой подход. Не идеально, но в некоторых случаях должно работать хорошо. Например, если у вас есть обе камеры на одном кадре, расположенные рядом.

Перекрывающиеся области

Взял с телефона 2 картинки как на картинке (цветные картинки). Программа выбирает область прямоугольников из обоих исходных изображений и изменяет размер и извлекает прямоугольники этой области. Идея состоит в том, чтобы найти «лучшие» перекрывающиеся области Rect с помощью нормализованной корреляции.

M1 и M2 — это область для сравнения, matchTemplate (M1, M2, res, TM_CCOEFF_NORMED);

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

Мой код написан на C++, но его очень просто воспроизвести на python. Это не лучшее решение, но одно из самых простых. Если ваши камеры зафиксированы в устойчивом положении между собой. Это хорошее решение, я думаю. Я держу телефон в руках :)

Вы также можете использовать этот простой подход на видео. Скорость зависит только от количества сравниваемых прямоугольников-кандидатов.

Вы можете улучшить это с помощью умной области, чтобы сравнить выбор.

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

Surf и sif отлично подходят для этого, но это самая простая идея, на мой взгляд.

Код находится здесь Код

person globalex    schedule 23.12.2015
comment
не могли бы вы поделиться кодом для поиска лучших областей перекрывающихся прямоугольников? - person rahul saxena; 23.12.2015
comment
Я делаю учебник сегодня здесь. funvision.blogspot.com/2015/12/ - person globalex; 23.12.2015
comment
stackoverflow.com/questions/56447495/ - person Muhammad Umer; 04.06.2019