我想找出哪种算法最适合用于缩小光栅图片。最好,我的意思是给出最佳外观的产品。我知道双三次,但是还有更好的东西吗?例如,我从某些人那里听说Adobe Lightroom具有某种专有算法,该算法比我使用的标准双三次方产生更好的结果。不幸的是,我想自己在软件中使用此算法,因此Adobe谨慎保护的商业机密将无法实现。
添加:
我检查了Paint.NET,令我惊讶的是,缩小图片时,超级采样比三次三次要好。这让我想知道插值算法是否完全可行。
这也让我想起了自己“发明”但从未实现的算法。我想它也有一个名字(因为这个琐碎的东西不能仅凭我一个主意),但是我在流行的名字中找不到它。超级采样是最接近的一种。
想法是这样的- 对于目标图片中的每个像素,计算它在源图片中的位置。它可能会覆盖一个或多个其他像素。然后将有可能计算这些像素的面积和颜色。然后,要获得目标像素的颜色,只需简单地计算这些颜色的平均值,然后将它们的面积添加为“权重”。因此,如果目标像素覆盖黄色源像素的1/3和绿色源像素的1/4,我将得到(1/3 黄色+ 1/4 绿色)/(1/3 + 1/4)。
这自然会占用大量计算资源,但应尽可能接近理想值,不是吗?
这个算法有名称吗?
不幸的是,我找不到与原始调查的链接,但是随着好莱坞摄影师从电影到数字图像的转变,这个问题浮出水面,所以有人(也许是SMPTE,也许是ASC)聚集了一大批专业摄影师并向他们展示了镜头使用一系列不同的算法进行了重新缩放。结果是,对于这些观看大型电影的专业人士来说,共识是 Mitchell (也称为高品质Catmull-Rom)是放大效果最好的, sinc 是缩小效果最好的。但是,sinc是一个理论滤波器,会变为无穷大,因此无法完全实现,因此我不知道它们实际上对“ sinc”的含义。它可能是指Sinc的截短版本。 兰佐斯 是Sinc的几种实用变体之一,它试图在截断后进行改进,并且可能是缩小静态图像的最佳默认选择。但是像往常一样,它取决于图像和所需内容:例如,缩小线条图以保留线条是一种情况,您可能更希望保留在缩小花朵照片时不受欢迎的边缘。
在剑桥的Color中,有一个很好的例子说明了各种算法的结果。
在乡亲 fxguide 放在一起了很多资料上缩放算法,这是值得考虑看看(用约合成等图像处理很多其他的东西一起)。它们还包括测试图像,这些图像可能对您进行自己的测试很有用。
现在,如果您真的想使用ImageMagick,则可以获取有关重新采样滤镜的详尽指南。
具有讽刺意味的是,在缩小图像方面存在更多争议,从理论上讲,这是可以完美实现的,因为您只丢弃信息,而在进行缩放时则试图添加不存在的信息。不存在。但从Lanczos开始。