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

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

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

Возможно ли это? Как мне это сделать?

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

Ответ 1

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

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

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

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

dd4am.jpgc0N5G.jpgvjyUc.jpg36ekf.jpg

Ответ 2

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

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

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