matlab自己实现一个图像旋转代码
时间: 2023-06-19 17:09:33 浏览: 133
以下是一个简单的 MATLAB 代码实现图像旋转的功能:
```matlab
% 读入原始图像
img = imread('lena.png');
% 定义旋转角度(顺时针方向旋转)
angle = 30;
% 计算旋转后的图像大小并创建新图像
[height, width, ~] = size(img);
newWidth = ceil(height*abs(sind(angle))+width*abs(cosd(angle)));
newHeight = ceil(width*abs(sind(angle))+height*abs(cosd(angle)));
newImg = zeros(newHeight, newWidth, 3, 'uint8');
% 计算旋转中心点
centerX = floor(width/2);
centerY = floor(height/2);
% 遍历新图像每个像素,计算其对应的旋转前的坐标并赋值
for y = 1:newHeight
for x = 1:newWidth
oldX = (x - centerX)*cosd(angle) - (y - centerY)*sind(angle) + centerX;
oldY = (x - centerX)*sind(angle) + (y - centerY)*cosd(angle) + centerY;
if oldX >= 1 && oldX <= width && oldY >= 1 && oldY <= height
newImg(y, x, :) = img(round(oldY), round(oldX), :);
end
end
end
% 显示旋转后的图像
imshow(newImg);
```
在这个代码中,我们首先读入一个原始图像,然后定义旋转角度(这里使用的是顺时针方向旋转),计算旋转后的图像大小并创建新图像。接着,我们计算旋转中心点,并遍历新图像每个像素,计算其对应的旋转前的坐标并赋值。最后,我们显示旋转后的图像。