【问题标题】:Is there a way to get better antialiasing with scipy zoom有没有办法通过 scipy zoom 获得更好的抗锯齿
【发布时间】:2017-04-21 10:23:23
【问题描述】:

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

这里使用 PIL:

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

如您所见,PIL 更加流畅。目前我能想到的唯一建议是使用 scipy 放大到最大分辨率,然后使用 PIL 再次缩小,但看起来很乱。如果有人有其他想法,请告诉我。

【问题讨论】:

    标签: python image scipy


    【解决方案1】:

    事实证明,使用 scipy 进行放大、组合然后转换为 RGB,然后使用 PIL 进行缩小,正是我们所需要的。

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

    以下是 2560x1440 和 800x600 轨道组合的结果(以 720p 保存):

    显然,由于我没有存储矢量或任何内容,因此无法真正解决大小差异,但它确实展示了它如何处理组合的多个分辨率。

    【讨论】:

    • 有点离题,但这看起来是一个很酷的项目。您是否有代码的公共存储库?
    • 谢谢哈哈,当然,这有点乱,但在这里 - github.com/Peter92/MouseTrack。如果你想尝试一下,我认为主脚本只需要win32api,然后只需检查导入以生成图像:)
    • 干杯。我在linux上,所以我可能会考虑移植它。 ;-)
    • 我已经将所有与 windows 相关的东西都放到了_track_windows.py 中(而且并不多),因此很容易看到需要更换的内容。如果你设法让它工作,如果你能把它寄回去,我会非常感激,我会把它变成主要的东西哈哈:P
    • 当我在那里时,你会收到一个拉取请求,不用担心。 ;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    • 2013-07-25
    • 1970-01-01
    • 2016-09-08
    相关资源
    最近更新 更多