双线性插值,数学原理很简单,可以参看该链接,参考前注意区分水平和竖直方向,图像的height代表行方向,图像的width代表列方向。
线面给出MATLAB代码:
% 双线性插值
% 输入图像文件及放大率
% 输出根据放大率变化后的新图像
function bilinear_interpolation = bilinear_interpolation(filename,R)
tic
% 初始化,读入图像,图像数据为m*n*color
img = imread(filename);
% 变化后图像
[row,col,color] = size(img); % 获得图像的行列数及色板数
row = round(row*R); % 新图像行
col = round(col*R); % 新图像列
%display([row,col,color]);
% 新图像初始化
% 使用class获得原图像的数据类型,使得新图像数据类型与原图像保持一致
img_new = zeros(row,col,color,class(img));
% 对新图像的行、列、色板赋值
x = 0;
for i = 1:row
y = 0;
u = (i-1)/R-floor((i-1)/R); %求取水平方向上的权重
if u == 0
x = x + 1;
end
for j = 1:col
v = (j-1)/R-floor((j-1)/R); %求取垂直方向上的权重
if v == 0
y = y + 1;
end
% 此处需要对图像边缘进行例外处理
% 本

本文介绍了如何利用MATLAB进行双线性插值,重点在于理解数学原理和MATLAB代码实现。通过参考链接,读者能清晰地区分水平和垂直方向,理解图像高度和宽度的含义。提供MATLAB代码辅助理解。
5774

被折叠的 条评论
为什么被折叠?



