halcon学习拓展系列—《halcon精髓之坐标系仿射篇》

本文深入探讨了Halcon中的坐标系仿射在机器视觉中的应用,包括矩形框仿射、工件坐标仿射、图像刚性变换和九点标定中的坐标变换。通过示例代码和实例解析了各种仿射变换的功能和使用方法,强调了坐标系仿射在量测和组装中的关键作用,以及在视觉引导中的核心地位。

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

仿射在机器视觉中起到了很重要的作用,且应用范围十分广泛,下面我们一一道来

总目录

1、图像定位中的矩形框仿射(坐标系仿射)

2、图像定位中的工件坐标仿射(坐标系仿射)

3、图像刚性变换(更加灵活,功能更丰富的坐标系仿射)

4、九点标定中的图像机械坐标系仿射(涉及较多二维点集的坐标系仿射)

5、总结

 

1、图像定位中的矩形框仿射(坐标系仿射)

vector_angle_to_rigid( : : Row1Column1Angle1Row2Column2Angle2 : HomMat2D)

根据坐标点和角度信息求坐标

### Halcon仿射变换的使用方法及示例 #### 1. 基本概念 仿射变换是一种线性映射,在图像处理领域广泛应用于几何校正、物体识别等任务。通过仿射变换,可以在保持平行性的前提下改变图形的位置、大小和方向。 #### 2. 创建仿射变换矩阵 在 HALCON 中创建仿射变换矩阵通常涉及平移、旋转、缩放等操作。对于二维空间中的仿射变换,可以通过 `hom_mat2d_identity` 函数初始化单位矩阵[^1]: ```cpp // 初始化一个2D仿射变换矩阵为单位矩阵 HHomMat2D hom_mat; hom_mat.Identity(); ``` 接着可以根据需求对该矩阵执行各种变换操作,比如绕某一点旋转一定角度: ```cpp // 绕指定点(x,y)逆时针旋转angle度 void RotateAroundPoint(HHomMat2D& mat, double angle, double x, double y){ // 平移到原点 mat.Translate(-x,-y); // 进行旋转变换 mat.Rotate(angle * M_PI / 180); // 将坐标系恢复回去 mat.Translate(x,y); } ``` #### 3. 获取并应用变换后的结果 完成上述设置之后,便可以将此变换作用于特定对象上,并提取所需的参数值(如位移量、旋转角等)。例如,在模板匹配完成后计算目标区域相对于参考物的姿态变化: ```cpp // 计算两个矩形之间的最佳相似变换 HOperatorSet::SimilarityTransRegion(model_region, scene_region, &trans_matrix); // 解析得到的角度和平移向量 double phi, tx, ty; HOperatorSet::GetHomMat2DRotateScale(trans_matrix, &phi, NULL, NULL, &tx, &ty); cout << "Rotation Angle: " << phi*RAD_TO_DEG << ", Translation X:" << tx <<", Y:"<< ty<<endl; ``` #### 4. 添加缩放功能至三维仿射变换 当涉及到更复杂的场景时,可能还需要考虑沿不同轴向的比例调整。此时可借助 `HomMat3dScaleLocal()` 方法实现局部尺度变换[^2]: ```cpp // 定义新的比例因子 double sx = 0.5; // X 轴上的缩小倍数 double sy = 1.2; // Y 轴上的放大倍数 double sz = 0.8; // Z 轴上的缩小倍数 // 构建带有新尺寸关系的新变换矩阵 HHomMat3D scale_local(hhommat3d.HomMat3dScaleLocal(sx,sy,sz)); // 输出转换后的矩阵元素 for(int i=0;i<scale_local.Tuple().Length();i++){ cout<<(double)scale_local.Tuple()[i]<<" "; if((i+1)%4==0)cout<<endl; } ``` 以上展示了如何基于 HALCON 实现基本的仿射变换及其扩展特性。实际项目开发过程中可根据具体应用场景灵活组合这些基础组件来满足不同的业务逻辑要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

谷棵

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值