algorithm - 缩小时的插值算法

标签 algorithm image interpolation

我正在尝试了解降尺度。我可以看到在放大时如何使用双三次和最近邻等插值算法来“填充旧的已知点(像素,在图像的情况下)之间的空白”。

但是降尺度?我看不出在那里可以使用任何插值技术。没有空白可填!

我一直坚持这个很长时间,给我一个正确方向的插入。事实上,当您移除已知数据时,您如何进行插值?

编辑:假设我们有一个一维图像,每个点有一个颜色 channel 。按平均像素值缩放 6 到 3 点的缩小算法如下所示: 1,2,3,4,5,6 = (1+2)/2,(3+4)/2,(5+6)/2 我走在正确的轨道上吗?这种插值是降尺度而不是丢弃数据吗?

最佳答案

如果将原始像素概念化为具有宽度 n,则该像素的中心距任一边缘 n/2。

可以假设像素中心的这一点定义了颜色。

如果你正在缩减采样,你可以从概念上这样考虑:即使你正在减小物理尺寸,而是认为你保持相同的尺寸,但减少像素数量(尺寸增加 - 概念上).然后可以算一算...

示例:假设您的图像高 1 像素,宽 3 像素,并且您只打算水平缩小。假设您要将其更改为 2 像素宽。现在原始图像为 3n,而您将其变为 2 个像素,因此每个新像素将占据原始图像像素的 (3/2)。

不再考虑中心...新像素的中心位于 (3/4)n 和 (9/4)n [即 (3/4) + (3/2)]。原始像素的中心位于 (1/2)n、(3/2)n 和 (5/2)n。因此,每个中心都位于我们可以找到原始像素中心的位置之间——没有一个与原始像素的中心匹配。让我们看看 (3/4)n 处的第一个像素 - 它与原始的第一个像素相距 (1/4)n,与原始的第二个像素相距 (3/4)n。

如果我们想保持平滑的图像,使用反比关系:取第一个像素颜色值的 (3/4) + 第二个像素颜色值的 (1/4),因为新的像素中心,从概念上讲,将比第二个(3n/4 远)更接近第一个原始像素中心(n/4 远)。

因此,不必真正丢弃数据 - 只需计算其邻居的适当比率(在总图像的物理尺寸不变的概念空间中)。这是一个平均而不是严格的跳过/丢弃。

在二维图像中,比率的计算更为复杂,但要点是相同的。插值,并从最近的原始“邻居”中提取更多值。如果下采样不是非常严重,则生成的图像看起来应该与原始图像非常相似。

关于algorithm - 缩小时的插值算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/875856/

相关文章:

javascript - 由于固定的枢轴和移动点,如何倾斜值?

c++ - 为什么字符串中的最后一个符号在 'std::remove' 之后加倍?

java - 使用 Java 编辑 jpeg EXIF 数据

java - Java 中的多项式微积分库?

opengl - 正好位于 GL_NEAREST 过滤的样本之间 : What Does It Return?

terraform - 为什么 Terraform 使用表达式 "Interpolation"

algorithm - 对列表的两个列表设置操作

python - 返回列表中重复元素并在列表中查找缺失元素的最快方法?

image - 插入Picture类的属性

java - 调整大小时 JDesktopPane 的内容消失 - Java Swing