pythonopencvimage-processinggraphicswarp

Image warping using mesh


I would like to warp one fisheye image: Left:

Into this target image:

The target image is actually a part of the synthetic panorama:

I know a method called mesh warping, like:

But how am I able to find or define a irregular mesh like this? Very grateful if someone can give me some suggestions. I would like to have this mesh, so that I can use this mesh for every frame of a video and warp every frame into this target image.


Solution

  • Is this a one-off project, or are you trying to write an automatic procedure?

    If the former, you can just hand-tag corresponding points in the two images till you have enough coverage, particularly in the more "curvy" areas, then warp using (for example) a thin-plate spline defined by the point correspondences. This works iteratively: match some points, warp, figure out where the error is largest, add more point matches there. Doing all this in, say, Matlab or Python+OpenCv is quite easy.

    You can then try to automate it using feature extraction and matching. The trouble is you'll need to use both point and line correspondences...