【发布时间】:2010-09-27 22:51:02
【问题描述】:
我想找出可用于缩小光栅图片大小的最佳算法。最好我的意思是能给出最好看的结果的那个。我知道双三次,但还有更好的东西吗?例如,我从一些人那里听说,Adobe Lightroom 有某种专有算法,它比我使用的标准双三次产生更好的结果。不幸的是,我自己想在我的软件中使用这个算法,所以 Adobe 精心保护的商业机密不会这样做。
添加:
我检查了 Paint.NET,令我惊讶的是,在缩小图片尺寸时,超级采样似乎比双三次更好。这让我想知道插值算法是否完全可行。
这也让我想起了我自己“发明”但从未实现过的算法。我想它也有一个名字(因为这个微不足道的东西不可能是我一个人的想法),但我在流行的名字中找不到它。超级采样是最接近的。
想法是这样的——对于目标图片中的每个像素,计算它在源图片中的位置。它可能会覆盖一个或多个其他像素。然后可以计算这些像素的面积和颜色。然后,要获得目标像素的颜色,只需计算这些颜色的平均值,将它们的面积添加为“权重”。因此,如果目标像素覆盖黄色源像素的 1/3 和绿色源像素的 1/4,我会得到 (1/3*yellow + 1/4*green)/(1/3+ 1/4)。
这自然是计算密集型的,但它应该尽可能接近理想,不是吗?
这个算法有名字吗?
【问题讨论】:
-
您描述了超级采样的具体工作原理。它并不比双三次好,因为双三次从源图像中获取更多像素。
-
我投票重新提出这个非常古老的问题,因为它是一个很好的问题。 “看起来最好”听起来很主观,但研究这一点的人对其进行了充分量化,以获得良好的、非主观的和一致的答案。
-
@tom10 - 坦率地说,我认为 Lanczos 选项对于大多数用途来说已经足够了。