Фильтр карты смещения в OpenCV
Мне любопытно узнать, как можно реализовать эффект, продемонстрированный здесь, с помощью OpenCV. Я думаю, что это какой-то фильтр карт смещения, но я не уверен на 100%.
После того, как эта страница полностью загрузится, наведите курсор мыши, чтобы увидеть движение фонового изображения (это эффект, который я ищу).
Является ли это возможным? Как мне это сделать?
Примечание: здесь есть еще одна страница с таким же эффектом.
2 ответа
Прошло почти 2 года с тех пор, как я задал этот вопрос, и я думаю, что пришло время ответить на него.
Исходный код, который реализует этот фильтр с использованием OpenCV, можно найти в моем репозитории GitHub.
Реализация основана на документации Adobe Flash 'DisplacementMapFilter. Вы можете сравнить результаты моей реализации с учебником по Flash, доступным здесь: Фильтр и анимация карты смещения, который использует Flash 8 Pro и ActionScript 2. Есть еще один учебник, который я рекомендую людям прочитать: Учебник Psyark's DisplacementMapFilter. Это старый, но точный.
Я сделал видео о выводе моего приложения и поделился им на Youtube, чтобы показать эффект фильтра.
Естественно, я не знаю, что они используют на этой странице. Но вы можете получить аналогичный эффект, используя Parallax Mapping, примененный к плоской поверхности. В этом случае нет окклюзии, что делает его быстрее.
В этом потоке есть реализация шейдера, которая должна быть достаточно простой для перевода в ядро.
Вот еще одна ссылка, которая использует эту технику для фотографий.