zoukankan      html  css  js  c++  java
  • DAY13 Matlab直角坐标系实现图像旋转

    % 直角坐标系实现图像旋转
    im=rgb2gray(imread('robot.jpg'));
    figure,imshow(im);
    [row,col]=size(im);
    a=pi/6; % 逆时针旋转30度
    
    %得到行的初始矩阵
    r1=repmat(1:row,row,1);
    i=r1';
    
    %得到列的初始矩阵
    j=repmat(1:col,col,1);
    
    i1=zeros(row,col);
    for m=1:row
    for n=1:col
    i1(m,n)=round(m*cos(a)-n*sin(a)); %获得旋转后的i像素值 并且取整
    end 
    end
    
    j1=zeros(row,col);
    for m=1:row
    for n=1:col
    j1(m,n)=round(m*sin(a)+n*cos(a)); %获得旋转后的j像素值 并且取整
    end 
    end
    
    %判断旋转后的i,j是否小于0 坐标调整
    if min(min(i1))<min(min(j1))
    if min(min(i1))<0
    k=abs(min(min(i1))); 
    new_min=min(min(i1))+(k+1);
    A=i1+ones(row,col)*(k+1);
    end
    elseif min(min(j1))<0
    k=abs(min(min(j1))); 
    new_min=min(min(j1))+(k+1);
    A=j1+ones(row,col)*(k+1);
    end
    
    new_max_i=max(max(A)); %最大行
    new_max_j=max(max(j1)); %最大列
    G=zeros(new_max_i,new_max_j); %构造空白的新画布
    
    %接下来 进项数据填充
    
    for m=1:row
    for n=1:col
    G(A(m,n),j1(m,n))=im(m,n);
    end
    end
    
    figure,imshow(uint8(G));
    
     
    
     
    
     
    

      

  • 相关阅读:
    Java集合类
    打开Eclipse报错
    FusionWidgets之AngularGauge图
    OLAP 大表和小表并行hash join
    分页SQL模板
    全表扫描分页
    Java中的a++和++a的区别
    JAVA中线程同步方法
    final、finally和finalize的区别
    HashMap和Hashtable的异同点
  • 原文地址:https://www.cnblogs.com/Qsir/p/5644850.html
Copyright © 2011-2022 走看看