图像

时间:2017-09-20 07:45:46

标签: matlab image-processing interpolation bicubic

我已经实施了双立方插值,并参考了这些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)定义。

但是当我运行代码时,我得到以下图像:

Image when the normalizing factor is 1/6

但是当我将规范化因子改为1/32时,我得到:

Normalizing factor is 1/32

我原来的形象是:

Original Image

有人可以指出我哪里出错吗?

代码段如下:

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

0 个答案:

没有答案