PIL的img.resize先放大再缩小会返回相同的图像吗?

4

我不确定这个算法的工作原理。

一般情况下,如果我将图像调整到较大的尺寸,然后再将其缩小回原始尺寸,那么这张图片是否与原始图片相同?

1个回答

2

这取决于你使用的插值类型和图像类型。例如,如果在两个方向上使用相同的方法,则NEARESTBILINEAR应该给出相同的结果。在一般情况下,BICUBICLANCZOS可能不是可逆的。如果先进行下采样再进行上采样,那么这些方法都不会完全可逆。如果在两个方向上使用不同的滤波器,则大多数方法都不可逆。通常情况下,使用BICUBIC进行上采样和NEAREST进行下采样应该会产生相同的结果,因为样条函数保证了节点处的值。但如果选择的下采样位置偏离了,这种方法就无法奏效(但可以通过适当的填充来解决)。
如果您打算使用resize方法而没有显式参数进行上采样和下采样,那么通常情况下结果是可逆的,因为它在两个方向上都使用了NEAREST

尝试了您在PIL上提到的内容。 只有在resize()上使用NEAREST(或没有resample参数),才能确保获取相同的数据(我使用数据来指代像素的颜色值)。 - Vasu Deo.S
@VasuDeo.S,感谢您的反馈。我没有测试的机会,只是根据我对涉及算法的知识给出了答案。实际上,像BILINEAR这样的东西不正确地对齐可能导致反向转换无法正常工作,需要进行填充。 - Mad Physicist
不错的回答(+1),顺便问一下,你能提供一个来源让我可以详细了解重采样方法的工作原理吗? - Vasu Deo.S
@VasuDeo.S。我没有任何现成的在线资源。但是,如果你在https://pillow.readthedocs.io/en/latest/handbook/concepts.html#concept-filters上谷歌/维基百科过滤器名称,你应该会有一个良好的开端。我大部分的知识都是在工作中和从书籍中学到的,但我现在已经记不清了。 - Mad Physicist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接