切入正题:
下面是一个测试INTERP2()函数的MATLAB代码
function INTERP2_TEST()
I=[2 3 6 8
3 5 1 7
4 2 9 6
6 8 1 3];
[X,Y]=meshgrid(1:4,1:4);
xa=X*0.5;
xb=X*2;
ya=Y*0.5;
yb=Y*2;
Ia=interp2(X,Y,I,xa,ya,'*linear');
disp(Ia);
Ib=interp2(X,Y,I,xb,yb,'*linear');
disp(Ib);
figure;
surf(I);
figure;
surf(xa,ya,Ia);
figure;
surf(xb,yb,Ib);
执行结果如下:
>> interp2_test
NaN NaN NaN NaN
NaN 2.0000 2.5000 3.0000
NaN 2.5000 3.2500 4.0000
NaN 3.0000 4.0000 5.0000
5 7 NaN NaN
8 3 NaN NaN
NaN NaN NaN NaN
NaN NaN NaN NaN、
由此可以看出
Ia=interp2(X,Y,I,xa,ya,'*linear')的结果是与I 相同大小的图像,由于a=0.5,因此取I左上1/4处的值,并通过线性插值扩展到与I相同尺寸。
I=[2 3 6 8
3 5 1 7
4 2 9 6
6 8 1 3];
Ib=interp2(X,Y,I,xb,yb,'*linear')的结果是与I 相同大小的图像,由于b=2,因此采样取I上值,并通过线性插值扩展到与I相同尺寸。
I=[2 3 6 8
3 5 1 7
4 2 9 6
6 8 1 3];
若将I扩展为图像;
原始图像I,
Ia
Ib