HALCON visualize_object_model_3d 算子原理的理解以及使用HSmartWindowControlWPF重实现

这篇具有很好参考价值的文章主要介绍了HALCON visualize_object_model_3d 算子原理的理解以及使用HSmartWindowControlWPF重实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 参数说明

  1. WindowHandle:显示点云的窗口句柄
  2. ObjectModel3D:待显示的点云对象
  3. CamParam:相机内参
    1. 此处的相机指的是一个虚拟相机,为观察点云提供一个视角,如下图,点云在一个场景坐标系中(SCS),我们在WindowHandle中看到的点云效果就是通过此虚拟相机看到的点云
    2. 该值可以为空,如果为空,函数内部会根据窗口的width、height默认生成一组相机内参
      visualize_object_model_3d,3d,wpf,c#,视觉检测
  4. PoseIn:点云的初始位姿,按照指定的位姿显示点云,可以为空,为空是算子内部会自己计算一个初始位姿
  5. GenParamName、GenParamValue:设置渲染点云时的颜色、文字等参数,具体参考文档
  6. PoseOut:输出点云的当前位姿,被用户操作过的点云当前位姿

2. 算子原理

这个算子提供了我们最需要的两个核心功能:

  • 点云渲染
  • 鼠标交互:
    • 鼠标左键长按:控制点云旋转
    • 鼠标左键长按+Ctrl键:控制点云XY方向平移
    • 鼠标左键长按+Shift键:控制点云沿着Z轴平移,用户的感受为点云的放大和缩小
    • 鼠标右键单选某个点云:右键选定时,点云的透明度为降低,该点云被禁用,后续的鼠标交互操作对该点云没有作用
2.1. 点云渲染

渲染部分,使用的是3D Scene相关的算子,如display_scene_3d、具体可以参考帮助文档中的说明,HALCON已经封装的很好,也很容易理解

2.2. 鼠标交互

鼠标交互看起来比较复杂,主要由该算子内部analyze_graph_event算子实现,其解析鼠标事件,根据不同的鼠标事件类型做不同的处理,基本处理思路为:将鼠标的位置变化转换为点云的位姿变化

2.2.1. 点云旋转

鼠标移动,输入为鼠标的起始点和结束点(图像坐标系),最后输出一个旋转四元数:

  • 将起始点和结束点投影到virtual trackball上,得到三维空间的两个向量,project_point_on_trackball算子提供了Shoemake算法和Bell算法,具体原理可以参考文献
  • 两个向量的叉乘得到旋转轴,并计算出旋转角,
  • 使用axis_angle_to_quat算子计算出对应的四元数
  • 将四元数转为位姿旋转矩阵
  • 修改点云在场景坐标系中的位姿
  • 调用display_scene_3d刷新点云
2.2.2. XY平移

鼠标两个点(图像坐标系)的坐标反投影到Camera坐标系(使用了get_line_of_sight算子),计算在Camera坐标系中的两个点的XY方向的平移量,然后修改点云位姿中XY方向的值即可
简单用两个点测试一下:

dev_get_window (WindowHandle)
get_window_extents (WindowHandle, Row, Column, Width, Height)
gen_cam_par_area_scan_division (0.008, 0, 5.2e-006, 5.2e-006, Width*0.5, Height*0.5, Width, Height, CameraParam)

** 将图像坐标系中的点反向投影到相机坐标系中
get_line_of_sight (100, 120, CameraParam, PX, PY, PZ, QX1, QY1, QZ1)
get_line_of_sight (100, 220, CameraParam, PX, PY, PZ, QX2, QY2, QZ2)

** 将相机坐标系上的点投影到图像坐标系上
project_3d_point (QX1, QY1, QZ1, CameraParam, Row1, Column1)
***** Row1 = 100
***** Column1 = 120

** 手动验证,与project_3d_point结果一致
** u=x/dx + u(0)
** v=y/dy + v(0)
U_Col := QX1 / 5.2e-006 + Width*0.5 
V_Row := QY1 / 5.2e-006 + Height*0.5
** U_Col = 120
2.2.3. Z方向平移

鼠标在窗口中上Y方向的平移代表点云Z方向的平移量,同样只需更改点云位姿中Z方向的值即可

3. HSmartWindowControlWPF 实现点云渲染和鼠标交互

visualize_object_model_3d,3d,wpf,c#,视觉检测文章来源地址https://www.toymoban.com/news/detail-628742.html

到了这里,关于HALCON visualize_object_model_3d 算子原理的理解以及使用HSmartWindowControlWPF重实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Halcon 3D相关算子(二)

    (1) moments_object_model_3d( : : ObjectModel3D, MomentsToCalculate : Moments) 功能:计算3D对象模型的平均值或中心二阶矩。要计算3D物体模型点的平均值,在MomentsToCalculate中选择\\\'mean_points\\\';如果要计算二阶中心矩,则选择\\\'central_moment_2_points\\\',结果是x、y、z、x-y、x-z和y-z轴的方差;要计算3D物

    2024年01月20日
    浏览(44)
  • Halcon中的一些3D算子

    1.read_object_model_3d  从文件读取一个3d模型 如下图,读的一个ply文件出来是个3d点云模型  2.visualize_object_model_3d  交互式展示3d模型 即上个算子读出来后,通过这个算子可以把3d模型显示出来旋转、平移,缩放来观察操作 算子签名 visualize_object_model_3d( : : WindowHandle, ObjectModel3D,

    2024年02月11日
    浏览(28)
  • Halcon 3D-Transformation 相关算子(一)

    (1) hom_mat3d_identity( : : : HomMat3DIdentity) 功能:生成三维齐次变换矩阵。 控制输出参数:HomMat3DIdentity:变换矩阵。 (2) create_pose( : : TransX, TransY, TransZ, RotX, RotY, RotZ, OrderOfTransform, OrderOfRotation, ViewOfTransform : Pose) 功能:创建一个3D位姿。 控制输入参数1:(TransX, TransY, TransZ):分别表示

    2024年01月20日
    浏览(31)
  • 史上超全的Halcon常用3D算子:点云处理

    在计算机视觉和机器人领域,点云处理是一项重要的任务。Halcon作为一款强大的图像处理软件,提供了丰富的3D算子来进行点云数据的处理和分析。本文将介绍一些常见的Halcon 3D算子,并提供相应的源代码示例。 读取点云数据 点云数据通常以文件的形式存在,可以通过Halco

    2024年02月02日
    浏览(30)
  • [3D&Halcon] 3D重要算子及简单处理点云模型求高度示例讲解

    📢博客主页:https://loewen.blog.csdn.net 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 丶布布 原创,首发于 CSDN, 转载注明出处 🙉 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨ 一. 重要算子解析 read_object_model_3d ( : : FileName, Scale, GenParamName, Gen

    2024年02月03日
    浏览(33)
  • 3D Matching:实现halcon中的find_surface_model

            halcon中的三维匹配大致分为两类,一类是基于形状的(Shape-Based),一类是基于表面的(Surface-Based)。基于形状的匹配可用于单个2D图像中定位复杂的3D物体,3D物体模型必须是CAD模型,且几何边缘清晰可见,使用的相机也要预先进行校准。基于表面的匹配可用于3D场景中

    2024年04月11日
    浏览(28)
  • 【三】3D匹配Matching之可变形曲面匹配Deformable Surface—read_deformable_surface_model()算子

    😊😊😊 欢迎来到本博客 😊😊😊 🌟🌟🌟 Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有时间会更新具体案例。 😊😊😊 具体食用方式:可以点击本专栏【Halcon算子快速查找】–搜索你要查询的算子名称;或者点击

    2024年02月14日
    浏览(44)
  • 【三】3D匹配Matching之可变形曲面匹配Deformable Surface—refine_deformable_surface_model()算子

    😊😊😊 欢迎来到本博客 😊😊😊 🌟🌟🌟 Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有时间会更新具体案例。 😊😊😊 具体食用方式:可以点击本专栏【Halcon算子快速查找】–搜索你要查询的算子名称;或者点击

    2024年02月11日
    浏览(30)
  • HALCON的综合应用案例【01】: 3D 算法处理在 Visual Studio 2019 C# 环境中的集成实例

    HALCON 为一款比较流行的商业视觉处理软件,他提供了多种开发的模式,可以在HALCON中开发,也可以将HALCON的设计通过导出库的形式集成到其他开发环境里面,以方便系统集成。本文为笔者自己的一个3D 视觉检测项目,利用HALCON的3D 库开发算法,然后,将算法集成到 MS-VS-C#的环

    2024年02月06日
    浏览(34)
  • 【论文笔记】SAM3D: Zero-Shot 3D Object Detection via Segment Anything Model

    原文链接:https://arxiv.org/pdf/2306.02245.pdf   分割一切模型(SAM)作为视觉领域的基石模型,有强大的泛化性,能解决很多2D视觉问题。但是SAM是否可以适用于3D视觉任务,仍需要被探索。   目前几乎没有关于3D目标检测的零样本学习,如何使SAM的零样本能力适用于3D目标检测

    2024年02月16日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包