齐次坐标系在机器视觉中的应用

齐次坐标系在机器视觉中的应用

目录

1. 齐次坐标的定义:

  用 n + 1 n+1 n+1 维分量来表示 n n n 维坐标。在齐次坐标中,用 ( h x , h y , h z , h ) (hx,hy,hz,h) (hx,hy,hz,h) 来表示 ( x , y , z ) (x,y,z) (x,y,z) ,比如说空间中的一点A ( 3 , 6 , 5 ) (3,6,5) (3,6,5)在齐次坐标中表示为 ( 3 h , 6 h , 5 h , h ) (3h,6h,5h,h) (3h,6h,5h,h),比如 ( 6 , 12 , 10 , 2 ) 、 ( 9 , 18 , 15 , 3 ) 和 ( 1.5 , 3 , 2.5 , 0.5 ) (6,12,10,2) 、(9,18,15,3) 和 (1.5, 3, 2.5,0.5) (6,12,10,2)(9,18,15,3)(1.5,3,2.5,0.5) 都表示空间中的点A,一般有:

笛卡尔坐标 → \rightarrow 齐次坐标:         齐次坐标 → \rightarrow 笛卡尔坐标:

[ x y z ] ⇒ h [ x y z 1 ] [ h x h y h z h ] ⇒ [ h x / h h y / h h z / h h / h ] ⇒ [ h x h y h z 1 ] \left[\begin{matrix} x\\y\\z \end{matrix}\right] \Rightarrow h\left[\begin{matrix} x\\y\\z\\1 \end{matrix}\right] \qquad \qquad \qquad \qquad \left[\begin{matrix} hx\\hy\\hz\\h \end{matrix}\right]\Rightarrow \left[\begin{matrix}hx/h\\hy/h\\hz/h\\h/h\end{matrix}\right] \Rightarrow \left[\begin{matrix}hx\\hy\\hz\\1\end{matrix}\right] xyzhxyz1hxhyhzhhx/hhy/hhz/hh/hhxhyhz1

由上述变量 h h h 可知,齐次坐标具有缩放不变性,即笛卡尔坐标系中的某一点,在齐次坐标系中具有 n n n 种表示方法。

2. 齐次坐标表示点和向量

  在二维坐标系 x o y xoy xoy中,向量(1,2)可以表示向量 O A → \overrightarrow{OA} OA ,也可以表示向量 B C → \overrightarrow{BC} BC , 只有方向和大小,而没有固定的起始位置;当默认以坐标原点为起点时,(1,2)也可以表示为一点。区分为点还是向量,需要通过相关使用环境,仅仅通过坐标形式无法从字面区分它是坐标还是向量。为了能够克服上述问题,引入了齐次坐标。

向量
  在坐标系 x o y xoy xoy中, x x x方向基向量 m m m ( 1 , 0 ) T (1,0)^T (1,0)T, y y y方向的基向量 n n n ( 0 , 1 ) T (0,1)^T (0,1)T。向量 O A → \overrightarrow{OA} OA 表示为 O A → = a x m + a y n \overrightarrow{OA}=a_xm+a_yn OA =axm+ayn,点 A = a x m + a y n + O A=a_xm+a_yn+O A=axm+ayn+O,因此,有如下形式:

O A → = [ a x a y ] [ m   n ] A = [ a x a y 1 ] [ m   n   O ] \overrightarrow{OA}= \left[\begin{matrix} a_x\\a_y \end{matrix}\right] \left[\begin{matrix} m \ n \end{matrix}\right] \quad \quad \quad A= \left[\begin{matrix} a_x\\a_y \\1\end{matrix}\right] \left[\begin{matrix} m \ n \ O\end{matrix}\right] OA =[axay][m n]A=axay1[m n O]
  从上述公式可以看出,点 A A A可以看作是从原点沿 x x x y y y平移而形成的新点。而这个平移量为 [ a x   a y ] T \left[\begin{matrix} a_x \ a_y \end{matrix}\right]^T [ax ay]T。为了写成统一的形式,有:
O A → = [ a x a y 0 ] [ m   n   O ] A = [ a x a y 1 ] [ m   n   O ] \overrightarrow{OA}= \left[\begin{matrix} a_x\\a_y \\0 \end{matrix}\right] \left[\begin{matrix} m \ n \ O \end{matrix}\right] \quad \quad \quad A= \left[\begin{matrix} a_x\\a_y \\1\end{matrix}\right] \left[\begin{matrix} m \ n \ O\end{matrix}\right] OA =axay0[m n O]A=axay1[m n O]
  因此,在齐次坐标中,向量表示为 [ a x   a y   0 ] T \left[\begin{matrix} a_x \ a_y \ 0\end{matrix}\right]^T [ax ay 0]T,点表示为 [ a x   a y   1 ] T \left[\begin{matrix} a_x \ a_y \ 1\end{matrix}\right]^T [ax ay 1]T

3. 采用齐次坐标的意义

  由于在图像处理时,经常会对图像进行缩放、旋转和平移。采用矩阵的形式计算这行操作,平移=矩阵相加,旋转=矩阵相乘,缩放=矩阵相乘,将这些矩阵用数学的形式表达: p ′ = R ′ p + T p'=R'p+T p=Rp+T(式中, p p p 表示原矩阵, R ′ R' R 表示旋转缩放矩阵, T T T 表示平移矩阵)。 这些操作是在点的基础上进行变换,所有变换后的点组成的集合即变换后的图像。

p ′ = R ′ p + T ⇒ [ x ′ y ′ z ′ ] = [ r 11   r 12   r 13 r 21   r 22   r 23 r 31   r 32   r 33 ] × [ x y z ] + [ t x t y t z ] p'=R'p+T\Rightarrow \left[\begin{matrix} x'\\y' \\z'\end{matrix}\right]= \left[\begin{matrix} r_{11} \ r_{12} \ r_{13} \\r_{21} \ r_{22}\ r_{23}\\ r_{31} \ r_{32}\ r_{33}\end{matrix}\right]\times \left[\begin{matrix} x\\y \\z\end{matrix}\right]+ \left[\begin{matrix} t_x\\t_y \\t_z\end{matrix}\right] p=Rp+Txyz=r11 r12 r13r21 r22 r23r31 r32 r33×xyz+txtytz
为了将矩阵 R R R T T T的运算合二为一,引入齐次矩阵(从笛卡尔坐标系转换到齐次坐标系中),有:
p ′ = R ′ p + T ⇒ h [ x ′ y ′ z ′ 1 ] = [ r 11   r 12   r 13   t x r 21   r 22   r 23   t x r 31   r 32   r 33   t x 0 0 0 1 ] × h [ x y z 1 ] p'=R'p+T\Rightarrow h\left[\begin{matrix} x'\\y' \\z'\\1\end{matrix}\right]= \left[\begin{matrix} r_{11} \ r_{12} \ r_{13} \ t_x\\r_{21} \ r_{22}\ r_{23}\ t_x\\ r_{31} \ r_{32}\ r_{33}\ t_x\\ 0 \quad 0\quad 0 \quad 1\end{matrix}\right]\times h\left[\begin{matrix} x\\y \\z\\1\end{matrix}\right] p=Rp+Thxyz1=r11 r12 r13 txr21 r22 r23 txr31 r32 r33 tx0001×hxyz1

  由于是齐次坐标系,所以存在系数 h h h h h h的变化不会影响该点在笛卡尔坐标系中的值,因为在我们在计算坐标时,需要从齐次坐标系转换到笛卡尔坐标系,需要除以 h h h,当 n + 1 n+1 n+1维的值为1时,可以去掉 h h h,此时齐次坐标中 x , y , z x,y,z x,y,z与笛卡尔坐标中的 x , y , z x,y,z x,y,z值相同。

  因此,我们有:
p ′ = R ′ p + T ⇒ p ′ = [ R   T 0      1 ] p = M p \color{red}{ p'=R'p+T\Rightarrow p'=\left[\begin{matrix} R\ T\\0 \;\; 1 \end{matrix}\right]p=Mp} p=Rp+Tp=[R T01]p=Mp
从笛卡尔坐标系转换到齐次坐标系,大大的方便了矩阵的计算。


1.齐次坐标除了上述用法外,还能很好的解释在投影空间中两平行直线相交的问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值