图像旋转的原理与实现
图像旋转的原理与实现
图像旋转的原理与实现
一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。设点逆时针旋转
角后的对应点为
。那么,旋转前后点
、
的坐标分别是:
(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:nx=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) ; endend
end%图像显示
figure(1);
imshow(B)
title('原始图像');
% figure(2);
% imshow(nrotateima);
% title('未插值的图像');
figure(3);
imshow(rotateima/256);
imwrite(rotateima/256, '旋转后图像.jpg', 'jpg');
title('旋转图');
原文链接:https://www.cnblogs.com/hustlx/p/5245226.html
图像旋转的原理与实现相关推荐
- 图像旋转的原理,实现与优化
文章目录 图像旋转的原理 图像旋转的实现 最近邻插值 双线性插值 双线性的优化 图像旋转的原理 图像旋转的原理其实很简单,为了简化公式的推导,这里我们假设绕原点 ( 0 , 0 ) (0,0) (0, ...
- 经验 | OpenCV图像旋转的原理与技巧
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的 ...
- OpenCV图像旋转的原理与技巧
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的第一 ...
- 基于双线性插值的图像旋转原理及MATLAB实现(非自带函数)
目录 1.图像旋转的原理 1.1.旋转矩阵 1.2.双线性插值 1.3.像素点匹配 2.实现效果与说明 1.图像旋转的原理 1.1.旋转矩阵 旋转一幅图像(假设这幅图像大小是矩形的),当然应该从像素点 ...
- 小白学习图像处理3——图像旋转原理
文章目录 一.图像旋转的原理 二.使用matlab实现 1.思路 2.实现代码 三.优化 1.思路 2.代码实现 3.使用双线性插值 四.matlab函数实现图像旋转 1.imrotate函数 2.i ...
- 【数字图像处理】MATLAB实现图像旋转
前言 上节课学习了实现图像旋转的原理,下课后用matlab实现了一下图像旋转的功能,这里做个记录. 图像旋转原理 图像旋转的本质利用的是向量的旋转. 矩阵乘法的实质是进行线性变换,因此对一个向量进行旋 ...
- 学习OpenCV3——图像旋转算法实现
图像旋转是非常常见的图像变换,通常应用于图像矫正,在OpenCV可以使用密集仿射变换函数cv::warpAffine()实现图像旋转.为了理解图像旋转的原理,本文实现了一个图像旋转算法. 图像旋转是指 ...
- 二维图像旋转的坐标公式推导
二维图像旋转后的坐标公式推导: 综上,图像顺时针和逆时针旋转的矩阵分别为: 对于此处红色字体的理解部分,有误解,图像没有翻转. 这个坐标转换只是让图像每个位置在某一坐标系的表达,转换到另一个坐标系上的 ...
- 图像的仿射变换原理及c++实现(旋转,平移,缩放,偏移,组合变换)
github地址:https://github.com/2209520576/Image-Processing-Algorithm 一.写在前面 几何空间变换是图像处理中的最基础的算法,主要包括图像的 ...
最新文章
- 互联网大脑的发育与元宇宙的兴起
- 进程间通信 —— 命名管道
- Duktape:一个新的小巧的超精简可嵌入式JavaScript引擎
- VUE+WebPack游戏开发:神庙逃亡的游戏设计
- css3实现流星坠落效果
- ffmpeg最新源代码(定期更新)
- 手把手教你用ECharts画饼图和环形图
- python条形图的间距_Matplotlib有间隙条形图
- 预演:使用 TensorFlow 进行深度学习
- 【ElasticSearch】ES分页查询超过10000限制解决
- 实验吧 因缺思汀的绕过 By Assassin(with rollup统计)
- APS Interview - Operating System
- android平板电脑忘记密码怎么解锁,平板密码忘了怎么解锁
- python库-collections模块Counter类
- 经典Hbase面试7题(附答案)
- 去法国,买哪些伴手礼既有面子又不破费
- Java中使用IE Proxy代理的方法
- 2022-9 做题时查漏补缺QVQ
- Mac下Android的Eclipse开发环境的搭建
- 23种设计模式之Java实现