matlab用矩阵实现图像旋转
时间: 2023-12-06 19:55:54 浏览: 141
matlab实现图像的放大及旋转_matlab图像_数字图像处理_
5星 · 资源好评率100%
下面是一个matlab代码示例,用于实现图像旋转:
```matlab
% 读取原始图像
img = imread('image.jpg');
% 转换成灰度图像
gray_img = rgb2gray(img);
% 定义旋转角度
theta = 30;
% 计算旋转矩阵
rot_mat = [cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1];
% 计算新图像大小
[height, width] = size(gray_img);
new_height = ceil(height * abs(cosd(theta)) + width * abs(sind(theta)));
new_width = ceil(width * abs(cosd(theta)) + height * abs(sind(theta)));
new_gray_img = zeros(new_height, new_width, 'uint8');
% 计算中心点
center = [height/2, width/2];
% 遍历新图像的每个像素,并计算对应原始图像的坐标
for i = 1:new_height
for j = 1:new_width
% 计算对应原始图像的坐标
pos = rot_mat \ [i-center(1), j-center(2), 1]';
x = round(pos(1)) + center(1);
y = round(pos(2)) + center(2);
% 判断是否越界
if x >= 1 && x <= height && y >= 1 && y <= width
new_gray_img(i, j) = gray_img(x, y);
end
end
end
% 显示结果
figure;
subplot(1,2,1);
imshow(gray_img);
title('原始图像');
subplot(1,2,2);
imshow(new_gray_img);
title('旋转后的图像');
```
该代码读取一张原始图像,并将其转换成灰度图像。然后,定义旋转角度,并计算旋转矩阵。接下来,计算新图像的大小,并创建一个新的灰度图像作为旋转后的图像。然后,遍历新图像的每个像素,并计算对应原始图像的坐标。最后,将对应像素的灰度值赋值给新图像,并显示结果。
阅读全文