karlphillip
karlphillip

Reputation: 93410

Displacement Map Filter in OpenCV

I'm curious to know how one can implement the effect demonstrated here using OpenCV. I think it's some sort of displacement map filter but I'm not 100% sure.

After that page has fully loaded, move the mouse around to see the background image move (it's the effect I'm looking for).

Is it possible? How would I go about doing it?

Upvotes: 13

Views: 6986

Answers (2)

karlphillip
karlphillip

Reputation: 93410

It's been almost 2 years since I've asked this question and I think it's time to answer it: the source code that implements this filter using OpenCV can be found in my GitHub repo.

The implementation is based on the documentation of Adobe Flash DisplacementMapFilter.

There's another tutorial I recommend people to read: Psyark’s DisplacementMapFilter Tutorial. It's old but accurate.

The result:

Output

Upvotes: 23

rasmus
rasmus

Reputation: 3216

Naturally, I don't know what they are using on this page. But you can get a similar effect using Parallax Mapping applied to a flat surface. In this case there is no occlusion, which makes it faster.

There is a shader implementation in this thread which should be easy enough to translate to a kernel.

Here is another link that uses this technique for photos.

Upvotes: 1

Related Questions