matlab双线性插值代码
时间: 2023-10-24 19:10:07 浏览: 56
好的,以下是 Matlab 的双线性插值代码:
```matlab
function output = bilinear_interpolation(input, scale_factor)
[height, width] = size(input);
new_height = round(height * scale_factor);
new_width = round(width * scale_factor);
output = zeros(new_height, new_width);
for i = 1:new_height
for j = 1:new_width
x = (i - 0.5) / scale_factor + 0.5;
y = (j - 0.5) / scale_factor + 0.5;
x1 = floor(x);
x2 = ceil(x);
y1 = floor(y);
y2 = ceil(y);
if x1 == x2 && y1 == y2
output(i, j) = input(x1, y1);
elseif x1 == x2
output(i, j) = (y2 - y) * input(x1, y1) + (y - y1) * input(x1, y2);
elseif y1 == y2
output(i, j) = (x2 - x) * input(x1, y1) + (x - x1) * input(x2, y1);
else
q11 = input(x1, y1);
q12 = input(x1, y2);
q21 = input(x2, y1);
q22 = input(x2, y2);
output(i, j) = (x2 - x) * (y2 - y) * q11 + (x - x1) * (y2 - y) * q21 + (x2 - x) * (y - y1) * q12 + (x - x1) * (y - y1) * q22;
end
end
end
end
```
其中,`input` 是输入的图像,`scale_factor` 是缩放因子。函数返回的 `output` 是双线性插值后的图像。