【问题标题】:libvips Nearest Neighbor / Bicubic Deep Zoom Pyramid Creationlibvips 最近邻/双三次深度缩放金字塔创建
【发布时间】:2020-01-29 16:36:43
【问题描述】:

我正在将我的一些代码从 openzoom.py 移到 Libvips 上,但我不确定如何规定插值方法,这很重要。我至少需要能够在一种情况下使用双三次/双线性,在另一种情况下使用最近邻。

我的旧代码如下:

creator = deepzoom.ImageCreator(tile_size=128, tile_overlap=2, tile_format="png",
                                        image_quality=0.8, resize_filter="nearest")
creator.create(sourceFile, destFile)

目前,使用 pyvips 我有以下内容

image = pyvips.Image.new_from_file(sourceFile)
image.dzsave(destFile, tile_size=128, overlap=2,
                     suffix='.png[Q=80]')

任何帮助将不胜感激:)

【问题讨论】:

    标签: python image-processing deepzoom vips


    【解决方案1】:

    默认情况下,dzsave 将平均每个 2x2 像素块,相当于双线性。

    有时,例如对于像素值代表标签而不是强度的图像,您需要非插值缩小。对于这些情况,您可以使用region_shrink 参数选择medianmode,它们都将保留标签值。

    我会使用:

    image = pyvips.Image.new_from_file(sourceFile, access='sequential')
    image.dzsave(destFile,
                 overlap=1,
                 tile_size=126,
                 region_shrink='mode',
                 suffix='.png')
    

    别忘了设置access 提示。对于不支持随机访问的大图像,它会显着提高速度和内存行为。

    PNG Q 数设置输出调色图像时的量化质量。 Perhaps you mean compression? libvips 默认为 6,PNG 标准。

    你确定要overlap=2吗? deepzoom 标准是重叠 1。重叠 1 意味着每个图块的边缘周围有一个额外的像素,因此图像中心的图块将与其邻居共享每个边缘的两个像素。设置overlap=2 意味着您将有四个像素重叠,令人困惑。

    同样,tile_size=128 表示您的大部分图块将是 132x132 像素。对 PNG 来说没关系,但 JPG 在轴上的倍数为 8 时效果最好。我会将tile_size 设置为(128 - 2 * 重叠),就像 deepzoom 默认设置的那样。

    git master libvips 还添加了maxminnearest(总是选择左上角的像素)。一个分支有lanczos3,但由于各种原因从未合并。

    【讨论】:

    • 谢谢!这正是我需要做的,感谢您发现我的其他错误:)
    • 如果这是您要找的,请考虑在投票记录旁边接受 John 的回答(通过单击勾号/复选标记)。希望你也可以投票。
    猜你喜欢
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-29
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多