齐次坐标系

齐次坐标系用于描述透视问题,通过增加一维来表示N维坐标。2D齐次坐标中,点(X,Y)变成(x,y,w),X=Y=∞时对应w=0。这种坐标系统能表示无限远的点,比如平行线在无穷远处相交的几何概念。平行线Ax+By+C=0和Ax+By+D=0在齐次坐标下可以通过求解(x,y,0)找出无穷交点。" 8986125,1364061,配置Android Studio使用独立64位JDK,"['Android Studio', 'JDK', '64位', '32位', '开发环境']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先是区分向量和点

对于一个向量v以及基ov1v2v3,可以找到一组坐标(a,b,c),使得v = a v1 + b v2 + c v3

而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得 p – o = p1 v1 + p2 v2 + p3 v3

齐次坐标.JPG

齐次坐标是用来描述透视坐标上的问题的


齐次坐标就是用N+1维来代表N维坐标

例如:
我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标里面变成了(x,y,w),并且有
X = x/w
Y = y/w
例如,笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),X趋于无穷大的时候,w趋于0


同时齐次坐标可以用来描述无穷远处两平行线相交

image.png

看这个图可以明白,在视野尽头,铁轨是相交的。

证明如下

考虑两条平行线:

Ax+By

在使用Halcon进行图像处理时,有时需要将齐次坐标系转换为位姿(pose)。如果在转换过程中遇到类型不对的问题,可以参考以下步骤进行解决: 1. **检查输入数据的类型**:确保输入的齐次矩阵类型正确。通常,齐次矩阵是一个4x4的矩阵,类型应为`hom_mat2d`或`hom_mat3d`,具体取决于使用的函数。 2. **使用正确的转换函数**:Halcon提供了多个函数用于将齐次矩阵转换为位姿。确保使用与输入矩阵类型匹配的函数。例如: - 对于2D齐次矩阵,使用`hom_mat2d_to_pose`。 - 对于3D齐次矩阵,使用`hom_mat3d_to_pose`。 3. **检查矩阵的度和元素**:确保齐次矩阵的度和元素符合要求。例如,2D齐次矩阵应为3x3,3D齐次矩阵应为4x4。 以下是一个示例代码,展示了如何将2D齐次矩阵转换为位姿: ```halcon * 定义一个2D齐次矩阵 hom_mat2d_identity (HomMat2DIdentity) * 旋转矩阵 hom_mat2d_rotate (HomMat2DIdentity, rad(30), 0, 0, HomMat2DRotate) * 平移矩阵 hom_mat2d_translate (HomMat2DRotate, 100, 50, HomMat2DTranslate) * 将齐次矩阵转换为位姿 hom_mat2d_to_pose (HomMat2DTranslate, Pose) * 打印位姿 tuple_print (Pose, 'Pose:') ``` 以下是一个示例代码,展示了如何将3D齐次矩阵转换为位姿: ```halcon * 定义一个3D齐次矩阵 hom_mat3d_identity (HomMat3DIdentity) * 旋转矩阵 hom_mat3d_rotate (HomMat3DIdentity, rad(30), 0, 0, 1, HomMat3DRotate) * 平移矩阵 hom_mat3d_translate (HomMat3DRotate, 100, 50, 20, HomMat3DTranslate) * 将齐次矩阵转换为位姿 hom_mat3d_to_pose (HomMat3DTranslate, Pose) * 打印位姿 tuple_print (Pose, 'Pose:') ``` 通过以上步骤和示例代码,可以解决在将齐次坐标系转换为位姿时遇到的类型不对的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值