当前位置: 首页 > news >正文

Halcon刚性变换

     刚性仿射变换(Rigid Affine Transformation)是一种机械视觉和图像处理常用的技术,通常用于在保持物体形状和大小不变的情况下,对物体进行旋转和平移。常见于模板匹配,定位跟随等场景。

1: vector_angle_to_rigid( : : Row1, Column1, Angle1, Row2, Column2, Angle2 : HomMat2D)

     功能:用于从点和角度计算刚性仿射变换。该函数根据点对应关系和两个对应角度计算刚性仿射变换,并将其作为齐次变换矩阵HomMat2D返回。这个函数从匹配函数的结果中对构造一个刚体仿射变换很有用,把参考图像变为当前图像。

     Row1Column1代表原始点的行列坐标,Angle1是原始点的角度

    Row2Column2代表转换点的行列坐标,Angle2是转换点的角度,

    HomMat2D是输出的转换矩阵。

2:affine_trans_contour_xld(Contours, ContoursAffineTrans, HomMat2D)

     功能:用于对XLD轮廓进行任意仿射2D变换。这个函数将任意仿射2D变换(即缩放、旋转、平移和倾斜)应用于轮廓中给定的XLD轮廓,并以ContoursAffineTrans的形式返回变换后的轮廓。仿射变换由HomMat2D中给出的齐次变换矩阵来描述。

     Contours  输入的XLD轮廓

    ContoursAffineTrans  转换后的XLD轮廓

    HomMat2D 输入的转换矩阵。

   通过这两个函数,可以实现对图像中物体的定位和变换,以适应不同的视觉处理需求。

案例分析:


read_image (Image33, 'E:/Halcon数据/资源图片/33.png')
get_image_pointer1 (Image33, Pointer, Type, Width, Height)
r:=Height/2
c:=Width/2
dev_set_color ('blue')
gen_arrow_contour_xld (Arrow, r, c, r, c+300, 5, 5)
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, rad(90), r, c, HomMat2DRotate)
affine_trans_contour_xld (Arrow, ContoursAffineTrans, HomMat2DRotate)
*初始位
r1:=r
c1:=c+150
dev_set_color ('red')
gen_rectangle2_contour_xld (Rectangle, r1, c1, rad(90), 50.5, 10.5)*目标位 角度变换90
r2:=r-150
c2:=cdev_set_color ('red')
*刚性变换vector_angle_to_rigid (r1, c1, 0, r2, c2, rad(90), HomMat2D)
affine_trans_contour_xld (Rectangle, ContoursAffineTrans2, HomMat2D)

通过矩阵分步演化

dev_set_color ('green')
hom_mat2d_identity (HomMat2DIdentity1)
hom_mat2d_rotate (HomMat2DIdentity1, rad(90), r1, c1, HomMat2DRotate1)
hom_mat2d_translate (HomMat2DRotate1, (r2-r1), (c2-c1), HomMat2DTranslate)
affine_trans_contour_xld (Rectangle, ContoursAffineTrans1, HomMat2DTranslate)


http://www.mrgr.cn/news/68216.html

相关文章:

  • 全面解析Flutter中的Stream用法及实际应用
  • 基于python多准则决策分析的汽车推荐算法设计与实现
  • 手机屏幕上进行OCR识别方案
  • 移动应用开发 实验二:标准身高计算器
  • 设计模式小结一工厂模式
  • AI大模型如何重塑软件开发:从传统流程到未来趋势?
  • go语言解决rtsp协议只播放部分的问题(业务问题)
  • Android 读取内部文件
  • C++ 标准模板库 (STL)- 高效学习推荐
  • React 中 `key` 属性的警告及其解决方案
  • 初三数学,最优解问题
  • [241108] AMD 开源首批 10 亿参数语言模型:AMD OLMo | Xfce 4.20 Pre1发布
  • 【Linux系列】字符串操作的艺术:删除前缀的 Shell 脚本技巧
  • AI 浅探,揭秘【AI开发流程】的奥秘
  • Java | Leetcode Java题解之第546题移除盒子
  • 高级java每日一道面试题-2024年10月30日-JVM篇-新生代垃圾回收器和老生代垃圾回收器有哪些?有什么区别?
  • 如何实现低代码接口?低代码平台接口开发详解
  • 解决警告:Boxed value is unboxed and then immediately reboxed
  • C++:模拟实现STL的list
  • 鸿蒙NEXT开发笔记(十二)仿微信聊天App的图片转BASE64串
  • Nginx 配置文件详解
  • 【最高分数与最低分数 】
  • 理解Web登录机制:会话管理与跟踪技术解析(三)-过滤器Filter
  • 【系统设计】数据库压缩技术详解:从基础到实践(附Redis内存优化实战案例)
  • 软件测试基础十四(python 类与对象)
  • 问:SpringFramwork都有哪些模块?