仿射变换的原理

在条形码识别软件中有图像预览的功能。有时预览的图像需要进行转置(旋转180度或者90度)、缩放、镜像(左右反转)等操作。OpenCV提供了相应的函数进行以上操作。例如: 
转置:cv::WarpAffine() 
缩放:cv::resize() 
镜像:cv::remap() 
如果同时要转置,缩放和镜像,就需要进行三次图像运算。其实以上三个操作都是同一类型的变化,称作仿射变化。可以把这3次图像运算合并成一次,从而优化运算时间。如何合并这三次运算,需要从仿射变换的原理说起。

举个例子,我们需要对以下图像(蓝色)顺时针旋转90度(橙色),可以这么做:假设原来的图像宽w高h 


(1) 创建宽h高w内存区域存放新图像; 
(2) 逐一把原图像中的像素(x0,y0)搬到新图像的对应像素(x1,y1) 
例如原图像的左上角点①(0,0)被搬到新图像的右上角(h,0); 
右上角点②(w,0)被搬到新图像的右下角(h,w); 
右下角③(w, h)被搬到新图像的左下角(0,w) 
以此类推,可以发现(x0, y0)和(x1, y1)之间存在以下规律: 
X1=-y0+h; y1=x0;
对于其他各种几何变换,平移、缩放、镜像等,我们都可以用类似的方法进行运算。因此可以把上式写成通用的形式:

x1=ax*x0+bx*y0+cx

y1=ay*x0+by*y0+cy

在顺时针旋转90度的例子中,

 ax=0,bx=1,cx=0;ay=1,by=0,cy=w 

更一般的,我们可以把上面写成矩阵形式:


 

(x1y1)=(axaybxbycxcy)×x0y01
或者齐次形式。

x1y11=axay0bxby0cxcy1×x0y01


我们把矩阵MT=axay0bxby0cxcy1称作仿射矩阵。


转载自: http://blog.csdn.net/bytekiller/article/details/47803753


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492912.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拯救顽疾大作战!IDC绘中国医疗AI生态图谱,英伟达献医疗影像新杀器

来源:智东西摘要:中国千家医院部署AI系统!IDC医疗AI报告详解行业趋势和五大药方。2018年是令人唏嘘的一年,台湾作家李敖、动画大师高畑勋、相声表演艺术家师胜杰、央视主持人李咏、微软联合创始人保罗艾伦、武侠小说宗师金庸等一个…

设计模式之适配器模式(Adapter Pattern)

在正式开始之前,让我们先思考几个问题: 如果现有的新项目可以利用旧项目里大量的遗留代码,你打算从头开始完成新项目还是去了解旧项目的模块功能以及接口?如果你了解过遗留代码之后,发现有几个重要的功能模块接口不同&…

错位排列-信封问题

五个编号为1~5的小球放进5个编号为1~5的小盒里面,全错位排列(即1不放1,2不放2,依次类推)一共有多少种放法 这是著名的信封问题,很多著名的数学家都研究过瑞士数学家欧拉按一般情况给出了一个递推公式: 用A…

存在描述所有生命的方程吗?

○ 生物体既复杂又有序,就像这片亚麻茎的横截面。研究人员希望最终发展出描述所有生命的基本方程。来源:原理关于生命,没有什么是简单的。每一秒钟,都有数百万个缜密有序的化学反应发生在一个细胞内;数十亿个单细胞生物…

asp.net(C#)写SQL语句技巧

/*添加SQL*/string fields "";string values "";fields "xm"; values "" Request.Form["xm"].ToString() "";fields ",xb"; values "," Request.Form["xb"].ToString() …

Python函数参数值传递

Python的函数参数是通过值传递的,但是如果变量是可变对象,返回到调用程序后,该对象会呈现被修改后的状态 测试程序如下: # 值传递不改变变量 def addInterest(balance, rate):newBalance balance * (1rate)return newBalance de…

CSS3滤镜

今天在办公室亲眼目睹了同事使用CSS3滤镜为一张漂亮的照片轮廓加上了阴影,瞬间亮瞎了我的的双眼,见笑了。 所以也迅速尝试使用CSS3滤镜让最新出炉的MUI LOGO也性感一把,试图来愉悦一下大家的双眼。已经等不及了,赶紧奉上今天的测试…

Python中递归字符串反转

我们可以用Python轻松的反转字符串,代码如下: def reverse(s):if s :return selse:return reverse(s[1:]) s[0]print(reverse(hello))运行结果如下:Connected to pydev debugger (build 143.1559) ollehProcess finished with exit code 0

全面认识“边缘云”,中国首份边缘云白皮书发布

来源:中国电子技术标准化研究院、阿里云摘要:《边缘云计算技术与标准化白皮书》近期发布,定义了边缘云计算的概念和标准等。中心云和边缘云相互配合,实现中心-边缘协同、全网算力调度、全网统一管控等能力,真正实现“无…

Python中异常处理

Python使用try...except...来处理异常,当Python遇到一个try语句,他会尝试执行try语句体内的语句,如果执行这些语句没有错误,控制转移到try...except...后面的语句,如果语句体内发生错误,python会寻找一个符…

【Tech】Mac上安装MAMP打开本地网页

不知道为什么实验室老是用些奇葩的东西,这次是madserve,主要是用来统计移动端广告点击率的,基于PHP/MYSQL实现。 昨天很快在Windows上搭好一个xampp,并用它建立了一个virtual host把madserve跑起来了。但是在mac上xampp建立virtua…

中国10大最震撼的无人工厂,你吃的用的都是这么来的!

来源:工业机器人摘要:你吃的用的那么多东西,早已不是“人造”的!1.上海通用金桥工厂:386台机器人图中展示的是上海通用金桥工厂。这里号称中国最先进的制造业工厂、中国智造的典范。即使从全球来看,这个水平…

图像拼接2 特征匹配

特征匹配旨在从两幅图像所提取的特征集中寻找对应关系,匹配过程是从前面的图像特征描述符的相似性来进行判断。 判断两个图像特征集中的特征点的相似程度存在两种基本方式: 1:给定阈值,即从特征集中找出所有与待匹配点距离小于阈…

状态压缩 之 UVA 10944 - Nuts for nuts..

// [9/19/2014 Sjm] /* dis[j][k] : 从 j 点到 k 点的最少步数,由于They can travel in all 8 adjacent direction in one step.故而 dis[j][k] max( abs(Xj - Xk), abs(Yj - Yk) )f[j][i] : 在 i 状态下,最后收集坚果 j 的最少步数n 代表坚果的数目。…

对人工神经网络“开刀”,利用神经科学消融法检测人工神经网络

来源:DeepTech深科技摘要:当谈及人工神经网络,黑箱问题总会引起热议,人们对黑箱问题的评价褒贬不一。有人认为黑盒是神经网络的优势,这代表神经网络的自主学习性,代表其自动学习以及自动完善的特性。但大部…

wp8数据存储--独立存储文件 【转】

出自 : http://www.cnblogs.com/MyBeN/p/3339019.html 文章篇幅有点大,建议去源网看看 1.调用手机的独立存储 例如:IsolatedStorageFile storage IsolatedStorageFile.GetUserStoreForApplication() 2.创建独立存储文件流 例如:I…

从车联网到工业智联网

来源:智车科技摘要:本文从工业互联网的典型应用—车联网谈起,从工业网联技术发展过程的视角分析了工业智联网的构架、关键技术和前沿趋势,对智联网视域下的未来智联交通作出了展望。随着智能技术的发展,从工业互联网发…

图像拼接1 特征提取

图像特征提取在图像拼接中占据至关重要的地位,旨在从图像中提取显著特征并用数学语言加以描述。 图像特征包括:特征点、边缘、轮廓、闭合区域以及统计特征等。 一般来说,特征点是指图像中具有某些特性的结构特征,特征点既可以是…

清华发布《AI芯片技术白皮书》:新计算范式,挑战冯诺依曼、CMOS瓶颈

来源:机器人 悦智网摘要:在由北京未来芯片技术高精尖创新中心和清华大学微电子学研究所联合主办的第三届未来芯片论坛上,清华大学正式发布了《人工智能芯片技术白皮书(2018)》。《白皮书》首次整合了国际化的学术和产业资源,紧扣学…

hdu 3944 DP? (Lucas 定理)

仔细观察杨辉三角后可以发现从最高点到第n行第k个数的最短路为c(n1,k); 根据Lucas定理可以求出,一般来说要求答案模去一个质数p且p的范围不大于10^5则可用Lucas. Lucas(n,m,p)cm(n%p,m%p)* Lucas(n/p,m/p,p)Lucas(x,0,p)1;另外注意当k>n/2时,必须令kn…