数字图像处理双线性插值

Digital image processing bilinear interpolation

如果在数字图像处理中,我使用双线性插值进行图像缩放,如果缩放因子是 1.5x,那么我如何在物理矩阵结构中表示第 1.5 列?

这是插值工作原理的简要说明:

假设您要从尺寸为 NxN 的图像转换为尺寸为 MxM 的图像。

第 1 步:创建大小为 MxN 的中间图像。 2nd 维度现在保持不变。我们仅沿第一个维度进行插值。

所以对于每一行图像,输入是N个值,我们生成M个值。假设输入值的坐标是 0, 1, 2, 3, ... N-1。输出值的坐标将为 0、N/M、2*N/M、... N-1。这给你分数坐标。

对于每个输出值,对输入值进行插值。例如,第 4 个输出值为 3*N/M。在位置 floor(3*N/M)ceil(3*N/M) 处挑选输入值,并计算线性插值。

第 2 步:创建大小为 M*M 的输出图像,并沿 2 维对每条线重复上述过程,再次从 N 个样本增长到 M 个样本。

如果一维插值是一个单独的函数,这个过程真的很容易实现。很多人会将双线性插值直接实现为二维操作,为每个输出值计算二维坐标。但是将其作为可分离的转换来实施有很多好处。例如,它可以很容易地将插值方法更改为三次、Lanczos 甚至 b 样条,因为它们都是一维的。也很容易将过程从 2D 图像扩展到 3D 图像。