Re: Image warping in Python or PIL

Fredrik Lundh <[email protected]>
Newsgroups gmane.comp.python.image
Message-ID <[email protected]>
On Sat, May 8, 2010 at 5:58 AM, Son Hua <[email protected]> wrote:
> Hi,
>
> Can anybody show me some hints on how to implement an image warping function
> efficiently in Python or PIL? Suppose we have a function f(x, y) -> (x', y')
> that warps a pixel location (x, y) to (x', y'). Because (x', y') may end up
> to be non-integer, and many (x, y) can map to the same (x', y'), reverse
> mapping is used. That is at every destination pixel (x', y'), we go and find
> the original pixel location (x, y) by taking (x, y) = f_1(x', y'), where f_1
> is the inverse function of f.
>
> Suppose the inverse function f_1 is given. So, for each pixel in the
> destination image, we can map to a non-integer pixel in the source image.
> Therefore, we must bilinear interpolate at the source location for the
> color.

The transform(MESH) operation might be what you need.

    http://effbot.org/tag/PIL.Image.Image.transform

Instead of mapping between individual pixels, cover the output image
with a grid, and calculate the source pixels for the corners of each
grid rectangle (forming a quadrilateral area).  Pass in the resulting
list of (grid rectangle, quadrilateral) pairs to transform(MESH), and
it'll take care of the rest.

(you can use a generator to produce mesh pairs on the fly)

The result is (usually) an approximation, with the maximum error
controlled by the grid resolution.

</F>
_______________________________________________
Image-SIG maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/image-sig
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.