Замена обнаруженного объекта в кадре на изображение. (ImageProcessing)

Обзор:

Я работаю над проектом создания видео. Технология, которую я использую: imageMagick, php, ffmpeg.

Текущее состояние:

В настоящее время проект способен создавать видеоролики с использованием изображений и текстов и несколько базовых переходов. То, как я это делаю, – использовать imagemagick для создания gif с использованием входных изображений (с эффектами перехода в них), а затем конвертировать все видео в видео и в то же время объединять видео вместе.

Next Move (Мой вопрос):

Теперь я собираюсь перейти на следующий уровень. Итак, у меня есть видео (1920×1080) с некоторыми белыми кадрами (1280×720), которые сохраняют смещение в каждом кадре. Я хочу заменить эти белые кадры, появляющиеся в некоторых кадрах видео, с некоторыми изображениями (1280×720), которые я хочу использовать. Пожалуйста, посмотрите изображение здесь, и вы получите представление: это всего лишь два кадра из моего видео. Если вы видите, что изображения смещаются (пробел не является постоянным).

введите описание изображения здесь

введите описание изображения здесь

Expectation:

Итак, я хочу заполнить эти пробелы одним из моих собственных изображений. Если бы случай был только для одного кадра, я мог бы использовать ffmpeg для наложения изображения на точную ширину и высоту. Но здесь пустое пространство не фиксировано и продолжает смещаться во всех кадрах, и есть много кадров. Итак, я ищу что-то вроде opencv или какой-либо другой технологии, которая может использоваться для обнаружения объекта в видео или в наборе кадров и заменять обнаруженную область каким-либо другим изображением.

Мне просто нужен пинок. Итак, если кто-то уже работал над чем-то вроде этого, просто предложите мне, какую технологию я могу использовать. Заранее спасибо.

Все зависит от того, что вы можете предположить:

Если вы можете с уверенностью предположить, что граница вашего прямоугольника никогда не закрывается (скрыта) каким-то образом, вы можете попробовать найти края в своем изображении (например, край Canny OpenCV), а затем искать прямоугольную форму (углы, образующие искаженный прямоугольник, или очень популярный Hough линии).

Если прямоугольник, который вы ищете, всегда белый, вы можете пороговое изображение в цветовом пространстве, таком как HSV, чтобы искать максимальное значение (V в яркости HSV ~), а затем искать прямоугольную форму в двоичном изображении.

Если ваши углы окклюдированы, иногда вам придется сделать некоторые настройки с вашим изображением, такие как морфологические операции («расти и сокращать» двоичное пороговое изображение), тогда Hough Lines может сделать трюк.

Обратите внимание, что этот ответ предполагает, что, когда вы знаете, где находится прямоугольник, «вы закончили», и вам просто нужно переписать прямоугольник с помощью настраиваемого содержимого. Я также не проверяю непрерывность: видеокадра может перескакивать в зависимости от внешнего вида прямоугольника. Вы должны были бы включить некоторые знания о предыдущих позициях.