Halcon——仿射变换

仿射变换 & 透视变换仿射变换

仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。数学表示如下图。

平移

将原图每个点移动到(x + tx , y + ty)变换矩阵如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

缩放

将每一点的横坐标放大(缩小)至sx倍,纵坐标放大(缩小)至sy倍,变换矩阵为:
在这里插入图片描述

如果需要将参考点设置在 Px Py 则需要首先将目标移动到 -Px -Py 点进行缩放 在移动回原来位置。
在这里插入图片描述
在这里插入图片描述

### Halcon 中特征匹配与仿射变换的使用方法 #### 特征匹配概述 在机器视觉应用中,特征匹配用于识别和定位目标对象。Halcon 提供了一套完整的工具来执行基于几何形状、灰度模板以及局部不变量描述符的特征匹配[^1]。 #### 创建模型并训练数据集 为了进行有效的特征匹配,在Halconi中首先要创建一个合适的模型。这通常涉及到定义要寻找的对象区域,并提取其显著特性作为参考模式。对于复杂的场景或者多姿态的目标物体来说,可能还需要构建多个视图角度下的样本集合来进行更全面的学习过程。 ```cpp // C++ code example to create a model and train dataset using Halcon. create_shape_model (Image, 'auto', 0.7, 0.8, -pi/2, pi/2, 'use_polarity', [], ModelID); ``` #### 应用仿射变换调整检测结果 一旦完成了初步的位置估计之后,则可以利用仿射变换进一步优化最终输出位置。具体而言就是根据已知条件计算出相应的转换参数(比如平移向量、旋转角等),再把这些数值应用于原始坐标上从而得到修正后的位姿信息。 ```cpp // Example of applying affine transformation after initial matching results are obtained. hom_mat2d_identity (HomMat2DIdentity) affine_trans_point_2d (HomMat2DIdentity, Row, Column, RowTrans, ColTrans) ``` #### 处理不同类型的变换情况 除了简单的刚体运动之外,有时候也需要考虑更加复杂的情况如尺度变化甚至是轻微变形等问题。此时可以通过组合多种基本形式(例如先做旋转变换然后再加伸缩处理)或者是直接采用更高阶别的投影映射方式来达到目的。 #### 边缘中心坐标的特殊考量 值得注意的是,在某些特定应用场景下可能会涉及到亚像素级别的精度需求;这时就需要特别注意如何正确设置工作空间内的参照框架以便能够准确反映实际物理尺寸关系——即所谓的“边缘中心坐标系”。这种情况下所使用的仿射变换也会有所不同,需按照相应规则加以调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vector_LW

我们终将成龙 加油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值