我已经实施了双立方插值,并参考了这些slides。幻灯片编号118给出了计算双立方插值的公式。
我以同样的方式实现了我的代码,保持P(dr-m)和P(n-dc)为:
P_dr = 1/6*( (max(d_r-m+2,0)^3) -4*(max(d_r-m+1,0)^3) -6*(max(d_r-m,0)^3) -4*(max(d_r-m-1,0)^3));
P_dc = 1/6*( (max(n-d_c+2,0)^3) -4*(max(n-d_c+1,0)^3) -6*(max(n-d_c,0)^3) -4*(max(n-d_c-1,0)^3));
其中max函数由幻灯片中定义的Q(X)定义。
但是当我运行代码时,我得到以下图像:
但是当我将规范化因子改为1/32时,我得到:
我原来的形象是:
有人可以指出我哪里出错吗?
代码段如下:
for i = 5:r_new-4
for j = 5:c_new-4
x = i/SF;
y = j/SF;
ro = round(x);
co = round(y);
d_r = x - ro;
d_c = y - co;
temp = 0;
for m = -1:2
for n = -1:2
P_r = 1/32*( (max(d_r-m+2,0)^3) - 4*(max(d_r-m+1,0)^3) - 6*(max(d_r-m,0)^3) - 4*(max(d_r-m-1,0)^3));
P_c = 1/32*( (max(n-d_c+2,0)^3) - 4*(max(n-d_c+1,0)^3) - 6*(max(n-d_c,0)^3) - 4*(max(n-d_c-1,0)^3));
temp = temp + I(ro+m,co+n)*P_r*P_c;
end
end
I_new(i,j) = temp;
end
end