ITKeyword,专注技术干货聚合推荐

注册 | 登录

图像旋转的原理与实现

HUSTLX 分享于

2020腾讯云双十一活动,全年最低!!!(领取3500元代金券),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1073

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

推荐:图像旋转原理及实现

建议阅读该博客的朋友最好对插值、matlab编程、数字图像有一些了解,另外所有代码和测试图片都可以到 GitHub去下载。 在一次数字图像处理课中,我接触到了图片旋


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

clip_image009[10]                          (3-6)

clip_image011[10]  (3-7)

 

写成矩阵表达式为

clip_image013[10]            (3-8)

 

 

其逆运算为

clip_image015[10]            (3-9)

推荐:Camera 图像处理原理分析

1.1        白平衡 1.1.1          色温 色温的定义:将黑体从绝对零度开始加温,温度每升高一度称为1开氏度(用字母K来表示),当温度升高到一定程度时候,黑体便

 

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

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

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

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

clip_image018[10]                        (3-10)

然后旋转

clip_image020[10]                 (3-11)

然后再平移回来

clip_image022[10]                        (3-12)

 

综上所述,变换矩阵为clip_image024[10]

附录:

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('旋转图');
       

推荐:图像的滤波原理和实现

1、  基本原理 图像信息在采集过程中往往受到各种噪声源的干扰,这些噪声在图像上的常常表现为一些孤立像素点,这可理解为像素的灰度是空间相关的,即噪声点像素

一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。