Vil*_*lx- 11 algorithm image-processing resampling
这个算法已经在我脑海里存在了很长时间,但我无法在任何地方找到它.虽然我不能成为唯一一个想到它的人,但这很简单.以下是它的工作原理:
你从一个图像开始.说,7x7px:

你需要重新取样,比如5x5px:

所以你要做的就是采用每个新方块的平均颜色:

这不是最近邻居,因为它只采用一个像素的颜色,而不是恰好覆盖源像素的分数像素.它也不是双线性,双三次,lanczos或任何其他插值.
那么 - 它是什么?在我看来,这应该是"数学上完美的"重采样算法,虽然因为我没有"数学上完美"的定义,我无法证明或证明这一点.
最后但并非最不重要的是,"数学上完美"并不总是"最好看",所以我想知道它在"质量"方面与其他主流图像重采样算法(bicubic,lanczos)相比如何?当然,这是一个主观的术语,所以如果这个算法和其他算法之间存在显着差异,我很感兴趣,这是大多数人都会同意的.
PS我已经可以告诉它一些事情 - 它不会像素艺术那样"最好看",如这里所示; 有特殊的算法(2xSAI等); 并且它也不是最好的放大图片 - 插值会赢得那里.但是对于缩小的图片...?
更新1:嗯,刚刚发现超级采样.这似乎是它的变体,具有网格类型的样本排列,其中样本的数量针对源图像和目标图像的分辨率进行了优化.
首先我要说的是我不知道你的算法的正式名称。我知道 Paint Shop Pro 很早就将其称为 \xe2\x80\x9cBilinear\xe2\x80\x9d,但在版本 8 中被迫将其重命名为 \xe2\x80\x9cWeighted Average\xe2\x80\x9d发现该算法与双线性的经典定义不匹配。
\n\n大多数调整大小算法可以在两个独立的通道中应用,一个在 X 方向,一个在 Y 方向。这不仅更高效,而且使描述和推理不同算法变得更加容易。从现在开始, I\xe2\x80\x99m 将在一维中工作,并假设您可以外推到二维。
\n\n您的输入由 7 个像素组成,我们将给出坐标 0、1、2、3、4、5、6。\xe2\x80\x99 有助于认识到在这种情况下像素不是一个小正方形 ,而是只是一个点。要创建输出,您需要来自点 0.2、1.6、3.0、4.4、5.8 的插值。为什么不是 0.0、1.5、3.0、4.5、6.0?假设您将输入和输出的大小加倍为 14x14 和 10x10:坐标现在为 0.0、1.44、2.89、4.33、5.78、7.22、8.67、10.11、11.56、13.0。从第二个像素开始,结果会有所不同,并且 \xe2\x80\x99s 是不可接受的。所有点的间距应为 7/5,坐标为 0.2、1.6、3.0、4.4、5.8、7.2、8.6、10.0、11.4、12.8。
\n\n让\xe2\x80\x99s 比较以过滤器表示的常见调整大小算法,并看看它们与您的相比如何。
\n\n
通用形式的第一个示例称为框或平均滤波器。但是,当盒式过滤器的宽度恰好为 1.0 时,就会发生一件神奇的事情:输入中的一个像素将落入盒内并被赋予权重 1.0,而输入中的所有其他像素将被赋予权重 0.0 。这使得它相当于最近邻算法。
\n\n
我们的第二个示例通常称为帐篷过滤器。当宽度恰好为 2.0 时,它又变得很特别,它变成了线性插值;在 2D 中应用它\xe2\x80\x99s 称为双线性。
\n\n
第三个示例是三次过滤器,当应用于 2D 时称为双三次过滤器。该公式有不同的变体,本示例使用 Mitchell 和 Netravali 建议的公式。
\n\n
虽然高斯滤波器在调整大小应用程序中不经常使用,但我将其添加到此处进行比较。
\n\n
最后我们达到了你的算法。它\xe2\x80\x99是平均和双线性的组合,一个平顶的帐篷。
\n