matlab中简单的图像旋转算法

function imrotate_(path,theta)   %这里的path为读入的图像路径
close all;                       
I=imread(path);  
[h,w,m]=size(I);  
theta=(theta/180)*pi;  
  
  
%%——定义四个顶点坐标  
coord(1,1)=-w/2;coord(1,2)=h/2;  
coord(2,1)=w/2; coord(2,2)=h/2;  
coord(3,1)=w/2; coord(3,2)=-h/2;  
coord(4,1)=-w/2;coord(4,2)=-h/2;  
  
  
%%--坐标变换矩阵1  
C1=[1  0   w/2;  
    0  -1  h/2;  
    0  0    1 ];  
  
  
%%--角度旋转变换矩阵  
A=[cos(theta)  sin(theta) 0;  
  -sin(theta)  cos(theta) 0;  
  0               0       1];  
  
  
A1=[cos(theta)  -sin(theta) 0;  
    sin(theta)  cos(theta)  0;  
    0                0      1];  
%%--四个顶点旋转后坐标  
for i=1:4  
    temp=[coord(i,1) coord(i,2) 1]';  
    temp=A*temp;  
    coord(i,1)=temp(1);  
    coord(i,2)=temp(2);  
end  
  
  
%%--计算旋转后新的图像的高和宽  
new_h=max(abs(coord(1,2)-coord(3,2)),abs(coord(2,2)-coord(4,2)))  
new_w=max(abs(coord(1,1)-coord(3,1)),abs(coord(2,1)-coord(4,1)))
C2=[1 0 -new_w/2;  
    0 -1 new_h/2;  
    0  0       1];  
if

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览