matlab 图像旋转

来源:互联网 发布:德州扑克 mac 推荐 编辑:程序博客网 时间:2024/05/18 11:28

对图像处理的爱好,越来越深了。

 

从最基本开始,从最底层的代码开始,可以更深刻来理解图像算法。


今天需要了解的图像旋转。


下面是matlab写的旋转源代码

%imout  旋转后的图像

%imin 原始图像

%angle 旋转角度

function [ imout ] = ImageRotate( imin,angle )
%UNTITLED11 此处显示有关此函数的摘要
%   此处显示详细说明


[m,n,g] = size(imin);
imin = im2double(imin);


imout = zeros(m,n,g);


w = -2*pi*angle/360;


for i = 1:m
    for j = 1:n
        
        a = i - m/2;
        b = j - n/2;
        
        x = a*cos(w) + b*sin(w);
        y = b*cos(w) - a*sin(w);
        
        x = x + m/2;
        y = y + n/2;
        
        x = ceil(x);
        y = ceil(y);
        if (x>= 1 && x <= m && y >= 1 && y <= n)
            imout(i,j,:) = imin(x,y,:);
        end
        
    end
end


end



旋转函数测试

i = imread('g:\cool\data\1.jpeg');


figure('name','图像旋转测试');
subplot(221);  imshow(i);title('原始图像');


i = im2double(i);


out = ImageRotate(i,30);
out1 = ImageRotate(i,180);
out2 = ImageRotate(i,-30);


subplot(222);  imshow(out);title('旋转30度');
subplot(223); imshow(out2);title('旋转-30度');

subplot(224); imshow(out1);title('旋转180度');



测试结果图片:


0 0
原创粉丝点击