变换 Python 中的图像,指定每个像素的目标坐标

Transform an image in Python specifying target coordinates for each pixel

我正在寻找一个 Python 图像处理包,它允许我获取源图像,并通过指定像素位置来获取源图像中的每个像素来创建新图像 ,在逐个像素的基础上(即比仿射变换更通用)。具体来说,如果原始图像是一个二维数组 A,我们有一个 x 坐标数组(A 的索引)X 和一个 y 坐标数组(A 的索引)Y,然后是 Z 的每个元素, Z(i,j) 转到新图像 A' 中 (X(i,j),Y(i,j)) 处的像素。

基本上我正在尝试做 (x,y)->(f(x,y), g(x,y)),但很快。

目前,我正在 numpy 中“手动”执行此操作,作为对源图像中的像素进行迭代的嵌套循环,而且我确信软件包中有一些东西可以更快地执行此操作,尽管我还没找到。 cartopy 显然有类似的东西可以进行图像转换。

经过一些研究,我发现使用 remap 的 OpenCV 可以做到这一点。然而,重映射解决了相反的问题,即对于目标图像中的每个像素,指定了一个像素位置,在该像素位置对源图像进行采样。我只需要反转我的问题。

Stack Overflow 上的这个 是一个很好的起点。