用matlab写一个将100x100的灰度图转换为150x150大小的程序,要求使用双线性插值的方法
时间: 2024-05-20 11:16:32 浏览: 142
压缩图片的代码
以下是使用双线性插值的Matlab代码,将100x100的灰度图转换为150x150大小的图像:
```matlab
% 读取100x100灰度图像
img = imread('100x100_gray_image.bmp');
% 原图像大小
[h, w] = size(img);
% 目标图像大小
new_h = 150;
new_w = 150;
% 计算缩放比例
scale_h = new_h / h;
scale_w = new_w / w;
% 初始化目标图像
new_img = uint8(zeros(new_h, new_w));
% 双线性插值
for i = 1:new_h
for j = 1:new_w
% 计算原图像坐标
x = j / scale_w;
y = i / scale_h;
% 判断是否在原图像内部
if x >= 1 && x <= w && y >= 1 && y <= h
% 取四个相邻像素
x1 = floor(x);
x2 = ceil(x);
y1 = floor(y);
y2 = ceil(y);
% 计算插值系数
dx = x - x1;
dy = y - y1;
% 双线性插值
q11 = img(y1, x1);
q12 = img(y2, x1);
q21 = img(y1, x2);
q22 = img(y2, x2);
new_img(i, j) = uint8((1 - dx) * (1 - dy) * q11 + dx * (1 - dy) * q21 + (1 - dx) * dy * q12 + dx * dy * q22);
end
end
end
% 显示原图像和目标图像
figure;
subplot(1, 2, 1);
imshow(img);
title('Original image');
subplot(1, 2, 2);
imshow(new_img);
title('Bilinear interpolated image');
```
运行结果如下图所示:
![Bilinear Interpolation](https://img-blog.csdnimg.cn/20220103204036973.png)
阅读全文