Duanxx的图像处理学习:图像变换 三维变换及其齐次坐标表示
- 格式:pdf
- 大小:436.78 KB
- 文档页数:6
齐次坐标表示法在图形变换中的作用
齐次坐标表示法(HomogeneousCoordinatesRepresentation,简称HCR)是将三维坐标投影到平面的一种方法,它使用数学方法将三维坐标表示成(x,y,z)变换成(x/z,y/z,1)的形式,也可以称为齐次坐标。
齐次坐标表示法被广泛应用于计算机图形学中,用于实现图形变换,如旋转、平移、缩放等。
齐次坐标表示法通过将三维坐标映射到一个四元素向量,使得变换变得容易。
例如,使用位置矢量(x,y,z)表示空间中的点时,
可以使用齐次坐标表示法将它表示为(x,y,z,1)的形式。
使用这种形式可以用一个4×4的矩阵将这个点移动到空间中的另一个位置,而不需要重新计算其坐标(也就是说,只需要替换矩阵的某些元素即可)。
在图形变换中,旋转和平移是最基本的变换,而使用齐次坐标表示法可以简单、有效的实现它们。
首先,在没有使用齐次坐标表示法前,要实现旋转,就需要按照旋转轴和角度来计算出旋转后点的新坐标,而使用齐次坐标表示法则只需要通过一个4x4的旋转矩阵来计算出旋转后点的新坐标,这种方式实现旋转更加简单、方便。
同样,在实现平移时,也可以使用齐次坐标表示法来简化计算,即只需要改变矩阵的某些元素来实现平移,而无需重新计算出点的新坐标。
此外,使用齐次坐标表示法还可以实现缩放,即通过改变矩阵中某些元素来实现缩放,从而实现图形大小的变换。
总之,齐次坐标表示法是计算机图形学中的一种非常有用的方法,
它使得图形变换变得简单、快捷,使得计算机图形学取得了很大的进步,受到了广泛的应用。
第六章 三维图形变换第一节 三维图形变换基础一、三维坐标系xyzxyz右手坐标系左手坐标系三维图形学中习惯上通常是采用右手坐标系。
xy 平面对应于视平面,z 轴垂直于视平面,指向视平面之外。
二、三维齐次坐标及变换矩阵三维图形变换也是基于矩阵运算进行。
矩阵运算的维数被扩展为四维。
三维坐标点采用4元齐次坐标表示:(x , y , z , 1),三维坐标与三维齐次坐标的相互转换如下:三维坐标(x , y ,z )——齐次坐标(x , y ,z , 1) 齐次坐标(x , y ,z , h )——二维坐标(x /h , y /h ,z /h ) 变换矩阵则为4X4的矩阵:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡s nm kr j i h q f e d p c b a 其中:平移变换第二节 三维几何变换一、三维基本变换 1. 平移变换⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1010000100001nmk T )1,,,()1,,,(n z m y k x T z y x +++=⋅2. 比例变换)1,,,()1,,,(1000000000000jz ey ax T z y x j e a T =⋅⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡= 3. 旋转变换三维的基本旋转变换分为三种,即绕三个坐标轴的旋转变换。
(1)绕z 轴旋转γ角旋转后z 值不变,x,y 值将发生改变,x,y 值的计算公式与平面旋转相同,即:zz y x y y x x ='+='-='γγγγcos sin sin cos 则变换矩阵为:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=1000010000cos sin 00sin cos γγγγT 有:)1,1,cos sin ,sin cos ()1,,,(γγγγy x y x z y x +-=T(2)绕x 轴旋转α角则旋转后x 的坐标值不变,y 和z 的坐标值将改变,相当于在yz 平面上绕平面原点进行旋转变换。
平面转转变换的公式为:ααααcos sin sin cos y x y y x x +='-='对应而来,这里y 对应于x ,z 对应y ,有:ααααcos sin sin cos z y z z y y +='-='则变换矩阵为:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=10000cos sin 00sin cos 00001ααααT )1,cos sin ,sin cos ,()1,,,(ααααz y z y x z y x +-=T(3)绕y 轴旋转β角这时,z 对应于x ,x 对应于y 。
三维齐次坐标变换三维齐次坐标变换在计算机图形学和计算机视觉领域中具有重要的应用。
它是一种表示和变换三维空间中物体位置和姿态的方法。
本文将简要介绍三维齐次坐标变换的概念、原理和应用,以及其在计算机图形学和计算机视觉中的具体应用案例。
一、概述三维齐次坐标变换是一种将三维物体在三维空间中的位置和姿态进行表示和变换的方法。
它通过引入一个额外的尺度变量来将三维几何运算转换为矩阵乘法运算,从而简化了三维计算的表示和运算。
三维齐次坐标变换以齐次坐标的形式表示三维点和变换矩阵,通过矩阵乘法来进行坐标变换和几何运算。
二、三维齐次坐标表示在三维齐次坐标中,一个三维点可以表示为一个四维向量,即[x, y, z, w],其中w为尺度变量。
三维点的齐次坐标表示可以通过除以w得到其三维坐标表示[x/w, y/w, z/w]。
同样,一个三维向量可以表示为一个四维向量,其中w为0。
三、齐次坐标变换矩阵齐次坐标变换可以表示为一个4x4的变换矩阵,其中包括平移、旋转、缩放等变换操作。
变换矩阵可以通过组合多个变换操作得到,从而实现复杂的几何变换。
常用的齐次坐标变换包括平移变换、缩放变换、旋转变换等。
四、三维齐次坐标变换的应用三维齐次坐标变换在计算机图形学和计算机视觉中有广泛的应用。
其中一个主要应用是计算机图形学中的三维物体变换和渲染。
通过齐次坐标变换,可以对三维物体进行平移、旋转、缩放等操作,从而实现物体在三维空间中的位置和姿态的变换。
另一个主要应用是计算机视觉中的三维重建和相机校准。
通过齐次坐标变换,可以将多个相机坐标系对齐,实现三维重建和相机参数校准。
五、应用案例1. 计算机图形学中的三维物体变换:在三维游戏开发中,可以通过齐次坐标变换来实现角色的平移、旋转、缩放等操作,从而实现角色在游戏场景中的自由移动和姿态变化。
2. 计算机视觉中的三维重建:在三维重建中,通过齐次坐标变换可以将多个相机拍摄的图像对齐,实现对场景中物体的三维重建和重建精度的提升。
Duanxx的图像处理学习:
图像变换三维变换及其齐次坐标表示
——Duanxx
——2014-10-15
目录
1 平移及比例变换 (2)
2 旋转变换 (2)
2.1 绕轴旋转 (2)
2.2 一般三维旋转 (3)
三维空间变换的齐次坐标表示和二维空间变换相似,仅仅是在二维的基础上再添加一个维度。
1 平移及比例变换
三维空间的平移变换为:
T=[
10
01
00
00 00
t x t y
10
t z1
]
三维空间的比例变换为:
S=[S110
0S22
00
00 00
00
S330
01
]
而相对于给定点P(t x,t y,t z)的比例变换则为:
S=[
1 0
0 1
0 0
0 0
00
−t x−t y
10
−t z1
][
S110
0S22
00
00
00
00
S330
01
][
10
01
00
00
00
t x t y
10
t z1
]=
[
S110
0 S22
0 0
0 0
00
t x(1−S11)t y(1−S22)
S330
t z(1−S33)1
]
2 旋转变换
三维空间的旋转变换为:
在旋转变换中涉及方向问题,这里采用右手坐标系(可参考《Duanxx的数学知识:右手坐标系》),相应的坐标轴的正方向向原点看过去,绕轴的逆时针方向为正方向。
假如,我们是绕x轴转θ角度,那么,x轴上的数值自然是不会改变的,所改变的只有y轴和z轴上的数值,在《Duanxx的图像处理学习:图像变换二维变换及其齐次坐标表示》的1.3中,有二维的旋转变换的证明,这里虽然增加了一个维度,但是由于绕轴旋转时,所绕的那个轴上的数据是不变的,所以,这里绕轴旋转的其次坐标表示很容易得到:
2.1 绕轴旋转
绕x轴逆时针变换为:
沿x轴看过去的坐标系为:y-z坐标系
R x=[
10
0cosθ
00
sinθ0 0−sinθ
00
cosθ0
01
]
绕y轴逆时针变换为:
这里需要注意一下,在绕y轴旋转时,沿y轴看过去的坐标系为:z-x坐标系,和另外两个坐标系反了。
R y=[cosθ0
01
−sinθ0
00 sinθ0
00
cosθ0
01
]
绕z轴逆时针变换为:
沿z轴看过去的坐标系为:x-y坐标系
R z=[
00
0cosθ
00
sinθ0 0−sinθ
00
cosθ0
01
]
同理,很容易可以知道,绕x、y、z轴的顺时针变换为:绕x轴顺时针变换为:
R x=[10
0cosθ
00
−sinθ0 0sinθ
00
cosθ0
01
]
绕y轴顺时针变换为:
R y=[
cosθ0
01
sinθ0
00−sinθ0
00
cosθ0
01
]
绕z轴顺时针变换为:
R z=[00
0cosθ
00
−sinθ0 0sinθ
00
cosθ0
01
]
2.2 一般三维旋转
一般的三维旋转指的是旋转变换是绕空间中任意的轴做旋转变换,这里可以使用平移变换和绕轴变换的复合变换得到其变换矩阵。
在给定了旋转轴和旋转角后,主要可以通过下面三步来实现最终变换:
Step1:平移和旋转给定的旋转轴,使得给定的旋转轴与某一坐标轴重合
Step2:让图像绕着上面的坐标轴完成指定的旋转
Step3:使用对Step1的逆变换使得给定的旋转轴回到原始位置
比如:已知旋转轴为I,它和三轴之间的夹角分别是αβγ,
旋转角度为θ
旋转轴I上的点P r(x r,y r,z r)为旋转的中心点,
其旋转过程如下:
Step1:将旋转中心P r (x r ,y r ,z r )平移到坐标原点
T 1=[1 0 0 1
00
0000
−t x −t y
10−t z 1
]
Step2: 将I 轴绕Y 轴旋转θy 的角度,使得I 轴和YZ 平面重合,注意这里的θy 需要我们根据αβγ值计算出来。
为了方便理解,这里我画了下面这个图,注意,图中是左手坐标系,只是为了方便看才这样画的,但不影响结果。
其中,BG 就是转轴I 。
容易知道,∠GBD =α,∠GBC =β,∠GBA =γ,假设BG 的长度为L ,那么BD=L*cos α,BC=L*cos β,BA=L*cos γ,而要将BG 旋转到面YZ 上,就相当于将面BGC 旋转到面AFCB 上,其旋转角度θy 为∠FCG ,
很容易知道:
sinθy =√BD 2+BA 2
2
=2+cosγ2
2
cosθy =
√BD 2+BA 22
=
√cosα2+cosγ2
2
再由2.1中绕y 轴逆时针变换的公式可知:
R 1=[cosθy 0
1−sinθy 000sinθy 000cosθy 001
]
Step3:将I 轴绕x 轴旋转θx 角度,同Y 轴重合。
在Step2的基础上有右边的图:
∠BGC =θx ,GC=√BD 2+BA 22
,BG=√BD 2+BA 2+BC 22
容易知道:
sinθx =
√BD 2+BA 2+BC 2
2=√cosα2+cosγ22
cosθx =√BD 2+BA 2+BC 2
2=cosβ
再由2.1中绕x轴逆时针旋转的公式可以知道:
R2=[
10
0cosθx
00
sinθx0 0−sinθx
00
cosθx0
01
]
Step4:将图像绕Y轴旋转θ角度后,根据2.1中的绕Y轴变换,其变换矩阵为:
R3=[cosθ0
01
−sinθ0
00 sinθ0
00
cosθ0
01
]
Step5:绕X轴旋转-θx角度,为Step3的逆过程:
R5=[10
0cosθx
00
−sinθx0 0sinθx
00
cosθx0
01
]
Step6:绕Y轴旋转-θy角度,为Step2的逆过程:
R6=[
cosθy0
01
sinθy0
00−sinθy0
00
cosθy0
01
]
Step7:将旋转中心P r(x r,y r,z r)平移到原来的位置:
T2=[1 0
0 1
00
00 00
t x t y
10
t z1
]
其最终的复合矩阵为:
T=T1∗R1∗R2∗R3∗R4∗R5∗R6*T2
在变换过程中的中间变量:sinθy,cosθy,sinθx,cosθx通过上面画图后的方法可以很直观的得到,但是计算比较的麻烦。
我们可以这样考虑这个问题:考虑在旋转轴I上有一个单位向量n,它在三个坐标轴上的投影为n1,n2,n3,这里在去Y轴上一个单位向量首先将它绕x轴旋转-θx角度,然后在将它绕y轴旋转-θy角度,那么这个Y轴上的单位向量就会和I轴上的单位向量重合,其变换过程为:
[n1 n2 n3 1] = [0 1 0 1]* [10
0cosθx
00
−sinθx0
0sinθx
00
cosθx0
01
]∗[
cosθy0
01
sinθy0
00
−sinθy0
00
cosθy0
01
]
=[ sinθx∗sinθy cosθx −sinθx∗sinθy]
即:n1 = sinθx∗sinθy n2= cosθx n3=−sinθx∗sinθy
这里就很容易的可以吧sinθy,cosθy,sinθx,cosθx解出来了。