Matlab 插值结果如何大于或小于原始信号的最小值/最大值?

Matlab 插值结果如何大于或小于原始信号的最小值/最大值?,matlab,image-processing,interpolation,image-resizing,Matlab,Image Processing,Interpolation,Image Resizing,如果我有一个矩阵 >> M=[0 0 1 1 0 ] M = 0 0 1 1 0 并调整其大小 >> imresize(M,[1,size(M,2)*2]) 我得到了答案 ans = 0 -0.0234 -0.0703 0.2031 0.7969 1.0938 1.0938 0.7969 0.2031 -0.0703 我的原始数组没有任何小于0或大于1的值。它

如果我有一个矩阵

>> M=[0 0 1 1 0 ]
M =
     0     0     1     1     0
并调整其大小

>> imresize(M,[1,size(M,2)*2])
我得到了答案

ans =
         0   -0.0234   -0.0703    0.2031    0.7969    1.0938    1.0938    0.7969    0.2031   -0.0703

我的原始数组没有任何小于0或大于1的值。它为什么包含大于1的值或小于0的值?

我假设您的问题是,“插值的结果为什么会大于或小于原始信号的最大值或最小值?”

答案是它取决于插值类型。例如,如果执行最近邻插值,则不会发生:

imresize(M,[1,size(M,2)*2],'nearest')
ans =

 0     0     0     0     1     1     1     1     0     0
在双线性系统中也不会发生这种情况:

imresize(M,[1,size(M,2)*2],'bilinear')
ans =
     0         0         0    0.2500    0.7500    1.0000    1.0000    0.7500    0.2500         0
它确实发生在双三次插值中,这是默认值:

 imresize(M,[1,size(M,2)*2],'bicubic')
这确实是双三次插值的特性之一。要理解为什么会发生这种情况,请查看一维情况(立方插值):


-0.0703是否不小于零?一定是某种新的数学。Funky math(tm)也适用于-0.0234。@woodchips这是答案:)如果使用双三次插值的例子,它会是一个更好的答案:)