PIL中的像素轴转换

Pixel axis conversion in PIL

我正在尝试构建一个程序来自动从地块图像中提取数据。我几乎拥有它,但挂断了从像素坐标定义所需的轴。例如,如果正在使用此图像:

我可以找到数据点,但这些点参考了图像大小,看起来像这样:

进行此转换的最佳方法是什么?

这可以通过一些数学运算来完成。您必须将坐标从像素转换为绘图值,如下所示:

  • 将域压缩为 0...1
  • 镜像(只针对y轴,因为像素y坐标运行从上到下,plot坐标从下到上)
  • 将域扩展到图上的范围

例如,取您的一个数据点,其像素坐标为 (80, 150),从图中我可以看到它在图上的坐标是 (24, 8.75)。

我们先做 y 坐标,必须从 150 映射到 8.75:

  • 除以图像的 y 范围 (200):150/200 = 0.75
  • 镜像:1 - 0.75 = 0.25
  • 展开:0.25 * 35(图的 y 范围)= 8.75

然后是 x 坐标,不需要镜像:

  • 80/300 = 0.2666
  • 0.2666 * 90 = 24

我不确定轴是否是您图像的一部分,如果是,您可能还必须应用一些偏移量来解决它们。