帮我写一个基于matlab的旋转图片90度的代码
时间: 2023-08-28 08:13:04 浏览: 107
以下是基于MATLAB的旋转图片90度的代码示例:
```matlab
% 读取图片文件
image = imread('example.jpg');
% 显示原始图片
subplot(1,2,1);
imshow(image);
title('Original Image');
% 将图片旋转90度
rotated_image = imrotate(image, 90);
% 显示旋转后的图片
subplot(1,2,2);
imshow(rotated_image);
title('Rotated Image');
% 保存旋转后的图片
imwrite(rotated_image, 'rotated_example.jpg');
```
代码中使用了`imread`函数来读取图片文件,`imshow`函数来显示图片,`imrotate`函数来旋转图片,`imwrite`函数来保存旋转后的图片。其中,`subplot`函数用于将原始图片和旋转后的图片显示在同一个窗口中。
相关问题
基于傅里叶变换的图像三维旋转实验Matlab代码
以下是基于傅里叶变换的图像三维旋转实验Matlab代码:
```matlab
% 读取图片
I = imread('lena.jpg');
% 转换为灰度图
I = rgb2gray(I);
% 图像大小
[N, M] = size(I);
% 三维旋转角度
theta_x = 0.1;
theta_y = 0.2;
theta_z = 0.3;
% 傅里叶变换
F = fft2(I);
% 生成傅里叶变换矩阵
u = 0:(M-1);
v = 0:(N-1);
idx = find(u>M/2);
u(idx) = u(idx)-M;
idy = find(v>N/2);
v(idy) = v(idy)-N;
[V, U] = meshgrid(v, u);
D = sqrt(U.^2 + V.^2);
F_angle = atan2(V, U);
% 三维旋转变换
Fx = F_angle + theta_x*D;
Fy = F_angle + theta_y*D;
Fz = F_angle + theta_z*D;
% 傅里叶反变换
F_rotate = interp2(V, U, F, Fx, Fy, 'cubic');
F_rotate = interp2(V, U, F_rotate, Fz, F_angle, 'cubic');
I_rotate = real(ifft2(F_rotate));
% 显示结果
figure;
subplot(1, 2, 1);imshow(I);title('原图');
subplot(1, 2, 2);imshow(I_rotate);title('旋转后图像');
```
其中,`lena.jpg` 是需要旋转的图像,可以自行更换。`theta_x`、`theta_y`、`theta_z` 分别表示绕 x 轴、y 轴、z 轴旋转的角度,可以自行调整。最后通过傅里叶反变换得到旋转后的图像,并显示出来。
阅读全文