matlab 实现图像旋转
时间: 2023-11-02 18:00:30 浏览: 91
Matlab可以使用imrotate函数来实现图像旋转。该函数的语法是B=imrotate(A,angle,method,'crop'),其中A为输入图像,angle为旋转角度,method为插值方法,'crop'表示旋转后剪切图像使得大小与原图像相同。下面是一个例子:
```
I=imread('potted-plantsk.jpg');
I_rotated = imrotate(I,30,'crop');
imshow(I_rotated);
```
这段代码将读取一张名为'potted-plantsk.jpg'的图像,然后对它进行逆时针旋转30度,并使用'crop'方法进行插值和剪切,最后显示旋转后的图像。
如果你想自己编写函数来实现图像旋转,可以参考下面的代码:
```
function A = myimrotate(B, degree)
[r, c, d] = size(B);
nH = round(r * abs(cosd(degree)) + c * abs(sind(degree)));
nW = round(c * abs(cosd(degree)) + r * abs(sind(degree)));
A = zeros(nH, nW, d);
M1 = [1 0 0; 0 -1 0; -0.5*c 0.5*r 1 ];
M2 = [cosd(degree) sind(degree) 0; -sind(degree) cosd(degree) 0; 0 0 1];
M3 = [1 0 0; 0 -1 0; 0.5*nW 0.5*nH 1];
for i = 1:c
for j = 1:r
temp = [i j 1] * M1 * M2 * M3;
y = temp(1, 2);
x = temp(1, 1);
y = round(y);
x = round(x);
if (x >= 1 && x <= nW) && (y >= 1 && y <= nH)
A(y, x, :) = B(j, i, :);
end
end
end
end
```
你可以调用这个函数来实现任意角度的图像旋转。例如:
```
I = imread('potted-plantsk.jpg');
I_rotated = myimrotate(I, 30);
imshow(uint8(I_rotated));
```
这段代码将读取一张图像并使用自定义的myimrotate函数将它逆时针旋转30度,然后显示旋转后的图像。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)