Suz*_*ioc 1 matlab interpolation image-processing image-resizing
如果我有一个矩阵
>> M=[0 0 1 1 0 ]
M =
0 0 1 1 0
Run Code Online (Sandbox Code Playgroud)
并调整它的大小
>> imresize(M,[1,size(M,2)*2])
Run Code Online (Sandbox Code Playgroud)
我得到了答案
ans =
0 -0.0234 -0.0703 0.2031 0.7969 1.0938 1.0938 0.7969 0.2031 -0.0703
Run Code Online (Sandbox Code Playgroud)
我的原始数组没有任何小于0或大于1的值.为什么它包含大于1的值或小于0的值?
And*_*ein 11
我假设你的问题是,"为什么插值的结果可能大于或小于原始信号的最大值或最小值".
答案是它取决于您的插值类型.例如,如果进行最近邻插值,则不会发生:
imresize(M,[1,size(M,2)*2],'nearest')
ans =
0 0 0 0 1 1 1 1 0 0
Run Code Online (Sandbox Code Playgroud)
它也不会发生在双线性中:
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
Run Code Online (Sandbox Code Playgroud)
它确实发生在双三次插值中,这是默认值:
imresize(M,[1,size(M,2)*2],'bicubic')
Run Code Online (Sandbox Code Playgroud)
这确实是双三次插值的特性之一.要了解它为什么会发生,请看一维情况(三次插值):
