- 双三次插值法(Bicubic interpolation)相对前两种算法计算过程更为复杂,考虑了待求像素坐标反变换后得到的浮点坐标周围的16个邻近像素。目的坐标M(x,y)和浮点坐标m(i+u,j+v),需要选取插值基函数来拟合数据,最常用的插值基函数是对sin[(πx)/x]的逼近。
- 计算公式

function re_im = dthird(im, p, q)
%双三次插值法实现图像缩放,输入目标图像和行缩放、纵缩放倍数
%ziheng zhou 2016.3.30
im = im2double(im);
[m,n] = size(im);
im_R = im(:,:,1);
im_G = im(:,:,2);
im_B = im(:,:,3);
l = round(m*p);
h = round(n*q)/3;
re_R = zeros(l,h);
re_G = zeros(l,h);
re_B = zeros(l,h);
for dstx = 1:l
for dsty = 1:h
x = floor(dstx/p); u = dstx/p - x;
y = floor(dsty/q); v = dsty/q - y;
%逼近函数,A = s[]
sa = 4 - 8*abs(u+1) + 5*abs(u+1)^2 - abs(u+1)^3;
sb = 1 - 2*abs(u)^2 + abs(u)^3;
sc = 1 - 2*abs(u-1)^2 + abs(u-1)^3