插值结果如何大于或小于原始信号的最小值/最大值? [关闭]

问题描述 投票:1回答: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的值?

matlab image-processing interpolation image-resizing
1个回答
11
投票

我假设你的问题是,“为什么插值的结果可能大于或小于原始信号的最大值或最小值”。

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

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')

这确实是双三次插值的特性之一。要了解它为什么会发生,请看一维情况(三次插值):

© www.soinside.com 2019 - 2024. All rights reserved.