Фильтр карты смещения в OpenCV

Мне любопытно узнать, как можно реализовать эффект, продемонстрированный здесь, с помощью OpenCV. Я думаю, что это какой-то фильтр карт смещения, но я не уверен на 100%.

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

Является ли это возможным? Как мне это сделать?

Примечание: здесь есть еще одна страница с таким же эффектом.

2 ответа

Решение

Прошло почти 2 года с тех пор, как я задал этот вопрос, и я думаю, что пришло время ответить на него.

Исходный код, который реализует этот фильтр с использованием OpenCV, можно найти в моем репозитории GitHub.

Реализация основана на документации Adobe Flash 'DisplacementMapFilter. Вы можете сравнить результаты моей реализации с учебником по Flash, доступным здесь: Фильтр и анимация карты смещения, который использует Flash 8 Pro и ActionScript 2. Есть еще один учебник, который я рекомендую людям прочитать: Учебник Psyark's DisplacementMapFilter. Это старый, но точный.

Я сделал видео о выводе моего приложения и поделился им на Youtube, чтобы показать эффект фильтра.

Естественно, я не знаю, что они используют на этой странице. Но вы можете получить аналогичный эффект, используя Parallax Mapping, примененный к плоской поверхности. В этом случае нет окклюзии, что делает его быстрее.

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

Вот еще одна ссылка, которая использует эту технику для фотографий.

Другие вопросы по тегам