图像的坐标变换

图像的坐标变换

图像的平移、旋转、缩放等都属于图像的坐标的变换。图像中的每一个像素都有一个坐标,比如某像素的坐标是v=(x,y),则像素的坐标变换可以写成矩阵的乘积形式:

v=Av

其中A是一个2×2的变换矩阵。对与有m个像素的图像,他们的坐标组成了一个2×m的矩阵V,则关于图像的坐标变换为:

V=AV

但是在使用中,我们并不直接使用2维的像素坐标,而是它的齐次坐标形式,下面就对齐次坐标做一个说明。

齐次坐标

齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示,是指一个用于投影几何里的坐标系统。

在齐次坐标里,需要三个值来表示投影平面上的一点。则点 (X,Y) 在齐次坐标里面变成了 (x,y,w) ,并且有 X=x/w, Y=y/w 。笛卡尔坐标系下 (1,2) 的齐次坐标可以表示为 (1,2,1) ,如果点 (1,2) 移动到无限远 处,在笛卡尔坐标下它变为 (,) ,然后它的齐次坐标表示为 (1,2,0) ,因为 (10,20)=(,) ,我们可以不用 来表示一个无穷远处的点。下面为齐次坐标与笛卡尔坐标的转换关系。

(x,y,w)<=>(xw,yw)=(X,Y)(1,2,1)<=>(11,21)=(1,2)(2,4,2)<=>(22,42)=(1,2)

齐次坐标在电脑图形内无处不在,因为该坐标允许平移、旋转、缩放及透视投影等可表示为矩阵与向量相乘的一般向量运算。依据链式法则,任何此类运算的序列均可相乘为单一个矩阵,从而实现简单且有效之处理。与此相反,若使用笛卡儿坐标,平移及透视投影不能表示成矩阵相乘。所以接下来我们用齐次坐标来表示图形的坐标变换。

仿射变换

仿射变换就是线性变换加平移,线性变换有三个特点:

  1. 变换前是直线,变换后依然是直线;
  2. 直线比例保持不变
  3. 变换前是原点,变换后依然是原点

旋转变换的分解

一个旋转变换可以看作是两个剪切变换的结合:

R=[cosθsinθ0sinθcosθ0001]=[100tanθ1/cosθ0001][cosθsinθ0010001]

示意图如下:

第一个变换为:

x=xcosθ+ysinθy=y

即图像被用偏移量 ysinθ 水平平移, 并根据因子xcosθ 而收缩 。

第二个变换为:

x=xy=y/cosθxtanθ

它仅在垂直方向进行剪切和收缩变换。

为了避免使用收缩变换,也可以使用三个剪切变换来组合:

R=[cosθsinθ0sinθcosθ0001]=[1tan(θ/2)0010001][100sinθ10001][1tan(θ/2)0010001]

posted @   GXX探索者  阅读(565)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示