使用matlab代码完成下列任务1. 选择一副图像,分别用最近邻、双线性、双立方插值法实现图像缩放。缩小比例分别为0.8、0.5;放大比列分别为2、4,对比不同缩放方法的图像整体效果和局部细节。 2. 选择一副图像,分别用不同方法顺时针旋转45°,比较不同方法的效果。 3. 裁剪一副图像,分别用指定区域坐标和鼠标选定两种方式
时间: 2024-02-13 07:04:52 浏览: 121
好的,以下是针对三个任务的 MATLAB 代码实现:
任务1:
```matlab
% 读取原始图像
img = imread('lena.png');
% 缩放比例
scale = [0.8, 0.5, 2, 4];
% 缩放方法
method = {'nearest', 'bilinear', 'bicubic'};
% 循环实现不同缩放方法的图像缩放
for i = 1:length(method)
for j = 1:length(scale)
% 图像缩放
img_resized = imresize(img, scale(j), method{i});
% 显示缩放后的图像
subplot(length(method), length(scale), (i-1)*length(scale)+j);
imshow(img_resized);
title(sprintf('%s, %.1f', method{i}, scale(j)));
end
end
```
任务2:
```matlab
% 读取原始图像
img = imread('lena.png');
% 旋转角度
angle = 45;
% 旋转方法
method = {'nearest', 'bilinear', 'bicubic'};
% 循环实现不同旋转方法的图像旋转
for i = 1:length(method)
% 图像旋转
img_rotated = imrotate(img, angle, method{i}, 'crop');
% 显示旋转后的图像
subplot(1, length(method), i);
imshow(img_rotated);
title(sprintf('%s', method{i}));
end
```
任务3:
```matlab
% 读取原始图像
img = imread('lena.png');
% 指定区域坐标
rect = [100, 100, 200, 200];
% 鼠标选定方式
figure;
imshow(img);
% 等待用户用鼠标选定裁剪区域
rect = round(getrect());
% 循环实现不同裁剪方法
method = {'指定区域坐标', '鼠标选定'};
for i = 1:length(method)
if i == 1
% 指定区域坐标裁剪
img_cropped = imcrop(img, rect);
else
% 鼠标选定裁剪
img_cropped = imcrop(img);
end
% 显示裁剪后的图像
subplot(1, length(method), i);
imshow(img_cropped);
title(sprintf('%s', method{i}));
end
```
以上代码实现了三个任务,您可以根据需要进行修改和调整。
阅读全文