我正在尝试了解如何使用双线性和双三次变换来调整图像大小。我根据我在这里和维基百科等阅读的内容编写了一个调整大小的函数,但我得到的结果与 MATLAB 和 Mathematica 给出的不同。
一个最小的工作示例是im=[100 50 0]MATLAB 或im={1, .5, 0}Mathematica 中的图像。我的算法(和“常识”)告诉我,将此图像的大小调整为 5 个像素应该分别给出
im=[100 75 50 25 0]和i={1, .75, .5, .25, 0}。但是,
当强制使用双线性方法时,我会从 MATLAB 和 Mathematica得到im=[100 80 50 20 0]和。i={1, .8, .5, .2, 0}具体来说,MATLAB 命令
im=[100 50 0];
imresize(im,[1,5],'bilinear')
返回
ans = 100.0000 80.0000 50.0000 20.0000 0
他们显然在做与我的代码(和常识)相同但不同的事情。
有人可以向我解释他们的算法吗?我猜我的错误与如何“索引”新图像有关。原始图像,只有一行,具有恒定的“ y”值 1,具有列x=1,2,3。我假设新图像可以被视为具有索引为 的列x=1, 1.5, 2, 2.5, 3,并且需要插值来计算 和 的f(1.5,1)值f(2.5,1)。
谢谢。