OpenCV3历程(8)——三维空间坐标系变换

时间:2024-04-04 08:49:22

一、序言

在机器视觉中,涉及到三维定位的问题我们很大程度上会遇到从相机坐标系转换到机械臂坐标系,这篇文章讲述一下关于图像三维空间坐标系变换的相关知识。

二、相关知识点

1、位置的表示:

坐标系建立后,任意点p在空间的位置可以用一个3×1的位置矢量来描述;例如,点p在三维坐标系中表示为:

其中px,py,pz为P点的坐标分量(位置矢量不同于一般矢量,它的大小与坐标原点的选择有关)。

OpenCV3历程(8)——三维空间坐标系变换OpenCV3历程(8)——三维空间坐标系变换

 2、不同三维坐标系之间的转换关系

(1)平移

设坐标系{i}和坐标系{j}具有相同的姿态,但他俩的坐标原点不重合,若用3×1矩阵iPjorg表示坐标系{j}的原点相对坐标系{i}的位置,则同一点P在两个坐标系中的表示关系为:

OpenCV3历程(8)——三维空间坐标系变换OpenCV3历程(8)——三维空间坐标系变换

 (2)绕z轴旋转OpenCV3历程(8)——三维空间坐标系变换

坐标系{i}和坐标系{j}的原点重合,坐标系{j}的坐标轴方向相对于坐标系{i}绕z轴旋转一个OpenCV3历程(8)——三维空间坐标系变换角(OpenCV3历程(8)——三维空间坐标系变换角的正负一般按右手法则确定,即由z轴的矢端来看,逆时钟为正)。

OpenCV3历程(8)——三维空间坐标系变换

 

OpenCV3历程(8)——三维空间坐标系变换

 令:

OpenCV3历程(8)——三维空间坐标系变换

(3)绕x轴旋转α角的旋转变换矩阵为:

OpenCV3历程(8)——三维空间坐标系变换

OpenCV3历程(8)——三维空间坐标系变换

(4)绕y轴旋转β角的旋转变换矩阵为:

OpenCV3历程(8)——三维空间坐标系变换

OpenCV3历程(8)——三维空间坐标系变换

(5)复合转动

OpenCV3历程(8)——三维空间坐标系变换

 

OpenCV3历程(8)——三维空间坐标系变换

(6)绕任意轴转动

设绕k轴转动OpenCV3历程(8)——三维空间坐标系变换角,则旋转矩阵为:

OpenCV3历程(8)——三维空间坐标系变换

其中:

OpenCV3历程(8)——三维空间坐标系变换

若给出一定旋转矩阵:

OpenCV3历程(8)——三维空间坐标系变换

则可计算出:

OpenCV3历程(8)——三维空间坐标系变换

OpenCV3历程(8)——三维空间坐标系变换

3、例子

已知坐标系{B}沿坐标系{A}x轴移动12个单位,并沿坐标系{A}y轴移动6个单位,绕坐标系{A}z轴旋转30°,求平移变换矩阵和旋转变换矩阵。

假设某点在坐标系{B}中的矢量为OpenCV3历程(8)——三维空间坐标系变换             ,求该点在坐标系{A}中的表示。

解:由题意可得平移变换矩阵和旋转变换矩阵分别为:

OpenCV3历程(8)——三维空间坐标系变换OpenCV3历程(8)——三维空间坐标系变换

则:

OpenCV3历程(8)——三维空间坐标系变换

4、齐次坐标变换

用齐次坐标可以将坐标系的平移和旋转用一个矩阵统一表示。

(1)齐次坐标的定义

空间中任一点在直角坐标系中的三个坐标分量用OpenCV3历程(8)——三维空间坐标系变换表示,若有四个不同时为零的数OpenCV3历程(8)——三维空间坐标系变换与三个直角坐标分量之间存在以下关系:

OpenCV3历程(8)——三维空间坐标系变换

则称OpenCV3历程(8)——三维空间坐标系变换是空间该点的齐次坐标。

以后用到齐次坐标时,一律默认k=1

所以,坐标变换将平移与旋转写成统一的矩阵形式则有:

OpenCV3历程(8)——三维空间坐标系变换

OpenCV3历程(8)——三维空间坐标系变换

 式中, OpenCV3历程(8)——三维空间坐标系变换 称为齐次坐标变换矩阵它是一个4×4的矩阵。

(2)齐次坐标变换矩阵的意义

若将齐次坐标变换矩阵分块,则有:

OpenCV3历程(8)——三维空间坐标系变换

 意义:左上角的3×3矩阵是两个坐标系之间的旋转变换矩阵,它描述了姿态关系;右上角的3×1矩阵是两个坐标系之间的平移变换矩阵,它描述了位置关系,所以齐次坐标变换矩阵又称为位姿矩阵。