由于JavaScript中没有本地实现插值(旁边是最近邻居),我正在尝试创建自己的方法。但考虑到双三次(或双线性)插值需要相邻像素(16或4),我应该怎样处理没有所需邻居数量的边缘像素?我应该忽略它们吗?但插值公式需要所有像素。
答案 0 :(得分:5)
重复最近的像素。
不要使用白色或黑色,因为它会在边缘分别引入更浅或更暗的色调。
答案 1 :(得分:3)
如果一方没有邻居,那就是推断。如果你想要推断: http://en.wikipedia.org/wiki/Extrapolation
这是由拉格朗日的插值完成的: http://en.wikipedia.org/wiki/Lagrange_interpolation
答案 2 :(得分:2)
通常,您为虚边缘像素组成一个值。
最简单的方法是将所有边缘像素设置为白色或黑色,但将它们设置为最接近的真实像素的颜色非常容易。
答案 3 :(得分:1)
根据Don Lancaster的文章“一些图像像素插值算法的回顾”(link),用最接近的已知值代替是解决问题的可接受方式。文章提出(ab)使用线性插值来推断这些值作为替代 - 我个人发现应用最近邻完成后的结果更符合我的喜好。
答案 4 :(得分:1)
想要提供我的贡献,即使很久以前就提出了这个问题。
就像肯德尔所说,你通常会根据附近的值来计算点/像素的值。你应该如何做到这一点取决于你选择的插值。更具体地说,它由您的方法的插值多项式的顺序确定。 OP提到的方法如下:
遇到边缘问题时,您需要使用与所选算法相同的近似值来推断鬼点的值。对于OP询问的(bi)立方体情况,这如下。假设[x1 x2 x3 x4 x5]
是您的输入值;您需要将x0
计算为:
x0 = 3*x1 - 3*x2 + x3
,同样地:x6 = 3*x5 - 3*x4 + x3