图像旋转的原理与实现
图像旋转的原理与实现
一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。设点逆时针旋转
角后的对应点为
。那么,旋转前后点
、
的坐标分别是:
写成矩阵表达式为
其逆运算为
利用上述方法进行图像旋转时需要注意如下两点:
(1)图像旋转之前,为了避免信息的丢失,一定要有坐标平移。
(2)图像旋转之后,会出现许多空洞点。对这些空洞点必须进行填充处理,否则画面效果不好,一般也称这种操作为插值处理。
以上所讨论的旋转是绕坐标轴原点(0,0)进行的。如果图像旋转是绕一个指定点(a,b)旋转,则先要将坐标系平移到该点,再进行旋转,然后将旋转后的图象平移回原来的坐标原点,这实际上是图像的复合变换。如将一幅图像绕点(a,b)逆时针旋转度,首先将原点平移到(a,b),即
然后旋转
然后再平移回来
附录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | 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 ( '旋转图' ); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库