【发布时间】:2018-12-24 10:53:22
【问题描述】:
有人知道 MATLAB 的“盒子”插值内核在 imresize 函数中使用的方程/算法/定理吗?或者(甚至更好)知道一个 numpy 等价物?
【问题讨论】:
标签: python matlab numpy interpolation image-resizing
有人知道 MATLAB 的“盒子”插值内核在 imresize 函数中使用的方程/算法/定理吗?或者(甚至更好)知道一个 numpy 等价物?
【问题讨论】:
标签: python matlab numpy interpolation image-resizing
box 插值只是对指定窗口大小内的像素进行平均。
详情可以查看matlab函数smooth3等。
【讨论】:
box 相当于 nearest。我猜,内核可以定义为box = @(h) -0.5 < h & h <= 0.5;。
“盒子”内核是具有统一权重的平均内核。如果是插值核,则对应最近邻插值(总是取一个输入样本的平均值)。
一点理论:插值内核是在原点处值为 1,在距原点整数距离处值为 0 的内核。在两者之间它可以做不同的事情。因此,要从“盒子”中制作一个插值内核,我们将使其宽度介于无限薄和略低于 2 个样本间距之间。这使它符合插值内核的定义。但是,如果它比 1 个样本间距更薄,它将为某些位移生成 0 的输出——这是不可取的。如果它比 1 个样本间距宽,则输出是两个输入样本相加的位移,是应有的两倍大 - 也不可取。因此,使其恰好为 1 个样本间距宽是这里唯一有用的宽度。有了这个宽度,在任何位移下,它总是只覆盖一个输入样本——因此它会进行线性插值。
【讨论】: