有没有办法通过scipy zoom获得更好的抗锯齿效果

时间:2017-04-21 00:41:01

标签: python image scipy

我正在制作一个鼠标跟踪脚本,我只是尝试编写自己的重新采样,因为我希望输出合并所有记录的分辨率,但我无法解决一些错误所以放弃并尝试scipy。

它几乎完美无缺,但它同时看起来很糟糕,特别是如果使图像变小。我认为这可能是正常的,直到我看到PIL的结果,这是非常完美的,不幸的是,那时合并阵列为时已晚。

对于记录,new_data的格式为[[(x0, y0), (x1, y0)],[(x1, y0),...。最初它是在一个字典中,每个坐标都是一个键(但我不认为它可以变成一个numpy数组)。

这是使用scipy的缩减:

zoom_factor = (desired_resolution[0] / current_resolution[0],
               desired_resolution[1] / current_resolution[1])
numpy_image = zoom(np.array(new_data), zoom_factor, order=1)

enter image description here

这是使用PIL:

im = im.resize(desired_resolution, Image.ANTIALIAS)

enter image description here

如您所见,PIL更顺畅。我目前唯一可以想到的建议是使用scipy升级到最大分辨率,然后使用PIL再次降低尺寸,但它看起来很混乱。如果有人有其他想法,请告诉我。

1 个答案:

答案 0 :(得分:1)

事实证明,使用scipy进行升级,然后将其转换为RGB,然后使用PIL进行缩减,这正是所需要的。

升级到了4k,尽管在1080p时它仍然看起来几乎相同(略微更加锯齿状)。从4k阵列列表中,我可以通过获取最大值并将其转换为它的颜色值来组合结果。从那时起,它就像把它送到PIL并告诉它调整到更小的东西一样简单。

这是结合2560x1440和800x600曲目(以720p保存)的结果: enter image description here

显然,尺寸差异无法真正得到帮助,因为我没有存储矢量或任何东西,但它确实证明了它如何处理多种分辨率的组合。