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));
    
     
    
     
    
     
    

      

  • 相关阅读:
    心得sql空值的应用
    C#开发GIS应用简明教程(二)
    网页右下角弹出窗口
    弹出输入框方法汇总
    C#开发GIS应用简明教程(三)
    防刷新的另一种方法
    相册
    网站下载速度限制方法
    .NET下多线程初探
    用DECODE做交叉报表
  • 原文地址:https://www.cnblogs.com/Qsir/p/5644850.html
Copyright © 2011-2022 走看看