码迷,mamicode.com
首页 > 其他好文 > 详细

图像旋转的原理与实现

时间:2016-03-05 17:31:10      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:

图像旋转的原理与实现

一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。设点技术分享逆时针旋转技术分享角后的对应点为技术分享。那么,旋转前后点技术分享技术分享的坐标分别是:

技术分享                          (3-6)

技术分享  (3-7)

 

写成矩阵表达式为

技术分享            (3-8)

 

 

其逆运算为

技术分享            (3-9)

 

利用上述方法进行图像旋转时需要注意如下两点:

1)图像旋转之前,为了避免信息的丢失,一定要有坐标平移。

2)图像旋转之后,会出现许多空洞点。对这些空洞点必须进行填充处理,否则画面效果不好,一般也称这种操作为插值处理。

以上所讨论的旋转是绕坐标轴原点(0,0)进行的。如果图像旋转是绕一个指定点(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图象平移回原来的坐标原点,这实际上是图像的复合变换。如将一幅图像绕点(a,b)逆时针旋转技术分享度,首先将原点平移到(a,b),即

技术分享                        (3-10)

然后旋转

技术分享                 (3-11)

然后再平移回来

技术分享                        (3-12)

 

综上所述,变换矩阵为技术分享

附录:

B=imread(‘image1.bmp‘);

%读取原图像

[m,n]=size(B); %获取原图尺寸w

%参数设置 

theta = pi/4;  %旋转角度

a = sin(theta);

b = cos(theta);

T = [cos(theta),sin(theta),;    %旋转矩阵

    -sin(theta),cos(theta)];

 

%建立存储空间

row=m+round((m)/2);

col=n+round((n)/2);

rotateima = zeros(row, col);  %存储旋转后图像的矩阵

 

%图像旋转         

for i=1:m                                       

    for j=1:n

        x=ceil(abs((i-round(m/2))*b-(j-round(n/2))*a+round(row/2)));  %坐标平移至中心

        y=ceil(abs((i-round(m/2))*a+(j-round(n/2))*b+round(col/2)));  %坐标平移至中心

        rotateima(x,y)=B(i,j);                   %未插值的图像

    end

end

nrotateima = uint8(rotateima);

imshow(nrotateima);

title(‘未插值的图像‘)

 

%图像插值(近邻插值法)

for i=1:row    

    for j=2:col-1       

              

            if(rotateima(i,j) == 0 && rotateima(i,j-1) ~= 0 && rotateima(i,j+1) ~= 0 )       

                rotateima(i,j) =rotateima(i,j-1) ;      

           

            end

    end

end

 

%图像显示

figure(1);

imshow(B)

title(‘原始图像‘);

% figure(2);

% imshow(nrotateima);

% title(‘未插值的图像‘);

figure(3);

imshow(rotateima/256);

imwrite(rotateima/256, ‘旋转后图像.jpg‘, ‘jpg‘);

title(‘旋转图‘);

       

 

图像旋转的原理与实现

标签:

原文地址:http://www.cnblogs.com/hustlx/p/5245226.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!