关于仿射变换

原创 2012年03月22日 12:58:29

“仿射变换”是坐标点在保持共线(面)的前提下,空间中的相对距离发生变化。这就是说,坐标点的所属平面不发生变化,且原本平行的直线仍然平行,但坐标点与坐标点之间的距离可能发生与原来成比例的变化。“仿射变换”允许位移,缩放,倾斜和旋转。他不能做锥形或角度扭曲。

如下图:

 

 

 

“变换矩阵”是一个3X3的矩阵

 

 

 示例如下:

a - x scale(X轴缩放)

b - y skew(Y轴倾斜)

c - x skew(X轴倾斜)

d - y scale(Y轴缩放)

tx - x translation(X轴位移)

ty - y translation(Y轴位移)

 

u, v, w是常数分别为0, 0, 1,得到如下"变换矩阵":

 

 

"变换矩阵"的公式为(Matrix类中没有把u, v, w做为属性):

           x' = x*a + y*c + tx

           y' = x*b + y*d + ty

     x'和y'是x和y的最终位置。

 

默认矩阵:

 

x' = x*1 + y*0 + 0   y' = x*0 + y*1 + 0

结果是 x' = x y' = y

 

应用变换:

 

x' = 2*x + 0*y + 0 = 2x

y' = 0*x + 1*y + 0 = y

 

----------------------------------------------------------------------------------

 

x' = 1*x + 1*y + 0 = x + y

y' = 0*x + 1*y + 0 = y

 

----------------------------------------------------------------------------------

旋转的实现是用a, b, c, d四个值乘上相应的三角函数而成。

 

公式如下:

x' = cos(angle)*x - sin(angle)*y + 0

y' = sin(angle)*x + cos(angle)*y + 0

 

另外一个详细介绍

http://apps.hi.baidu.com/share/detail/56353162

仿射变换的通俗解释

最近看的论文里很多都用到了仿射变换,记得本科时,图形学老师曾经讲过这部分的重要性,无奈当时看到一大堆数学公式头晕脑胀,并没有真正领会仿射变换的真谛。最近看论文的过程中,愈发觉得仿射变换不管是在利用特征...
  • sgfmby1994
  • sgfmby1994
  • 2017年03月16日 16:43
  • 1066

仿射变换VS透视变换

序言        在图像处理中,对图像进行二维变换有仿射变换(Affine Transformation),透视变换(Perspective Transformation)(应该还有其他变换,但是...
  • u012380663
  • u012380663
  • 2015年01月29日 17:05
  • 5582

关于OPencv里仿射变化和透射变换的理解和理论

当我们绕着图像原点进行图像旋转时,其旋转矩阵M是:  此变换如果在sin和cos前面加个系数,则是进行旋转和缩放。 如果要进行绕图像任意位置的旋转,则需计算出其:M=[α−β−βα(1−α)cente...
  • yangdashi888
  • yangdashi888
  • 2016年04月13日 21:12
  • 1415

线性变换和仿射变换

1. 线性变换设v、w是两个线性空间.一个v至w的线性映射T,就称为v至w的线性变换.线性变换必须满足任意的x,y∈v 及任意实数a,b,有 T(ax+by)=aT(x)+bT(y)如恒等变换 I ....
  • caimouse
  • caimouse
  • 2017年02月13日 15:59
  • 1022

图像处理中的旋转、平移、缩放——仿射变换的原理和优化

仿射变换的原理在条形码识别软件中有图像预览的功能。有时预览的图像需要进行转置(旋转180度或者90度)、缩放、镜像(左右反转)等操作。OpenCV提供了相应的函数进行以上操作。例如: 转置:cv::...
  • bytekiller
  • bytekiller
  • 2015年08月20日 10:08
  • 3680

【OpenCV入门教程之十八】OpenCV仿射变换 & SURF特征点描述合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处。   文章链接: http://blog.csdn.net/poem_qianmo/article/details/33320997 作...
  • yuzeze
  • yuzeze
  • 2016年05月26日 11:17
  • 2482

MATLAB实现基于仿射变换的图像变换的代码

算法框架和步骤可以以图像旋转算法为参考。 http://blog.csdn.net/izhouxiaofei/article/details/70473681 仿射变换公式: i´= a*i+b*j+...
  • izhouxiaofei
  • izhouxiaofei
  • 2017年04月22日 19:00
  • 2087

图像变换——仿射变换

在做图像处理中有两中情况会用到图像变换,第一种就是有一副自己想要转换的图像,第二种就是我们有一个点序列并想以此计算出变换,那么我用到的是在图像拼接中的点变换,通过提取两幅要拼接图像的关键点,利用欧式距...
  • lxy201700
  • lxy201700
  • 2014年02月22日 16:45
  • 6819

OpenCV实现仿射变换--通过三个点进行变换

什么是仿射变换?¶ 一个任意的仿射变换都能表示为 乘以一个矩阵 (线性变换) 接着再 加上一个向量 (平移). 综上所述, 我们能够用仿射变换来表示: 旋转 (线性变换)...
  • u013713010
  • u013713010
  • 2015年05月28日 10:10
  • 1629

MATLAB 仿射变换

首先,先简单介绍下仿射变换的基本原理。如下图,matlab中通过定义一个3×3的矩阵实现仿射变换(平移、缩放、旋转等)。注意到,变换矩阵的第三列恒为【0,0,1】,实际上,确定一个仿射变换只需要一个2...
  • FUZHENQI
  • FUZHENQI
  • 2017年06月04日 11:34
  • 3086
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于仿射变换
举报原因:
原因补充:

(最多只允许输入30个字)