[3D&Halcon] 三维点云匹配&无序抓取

这篇具有很好参考价值的文章主要介绍了[3D&Halcon] 三维点云匹配&无序抓取。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


一. 3D无序抓取原理

通过3D成像系统(激光三角、结构光+单/双目等),对物体表面轮廓进行扫描,形成点云数据。选择其中一个物体的点云数据作为模板,去对其他物体的点云数据进行「三维点云匹配」,获取各个物体的姿态信息(x、y、z、Rx、Ry、Rz+1个旋转类型)。

根据物体所在的世界坐标系和机械手坐标系之间的「3D手眼标定」关系,将各个「物体坐标系下的姿态转换成机械手坐标系下的姿态」,从未完成机械手对物体的抓取。当然,抓取时还需要考虑避障、路径规划等。

针对上面无序抓取涉及到的三个核心点,本文主要讲解Halcon三维点云匹配:

⑴基于表面的三维点云匹配:参考案例 — `分类 — 方法 — 三维匹配(基于表面)`

halcon无序抓取,3D视觉,3d,三维点云匹配,halcon

⑵基于形状的三维点云匹配:参考案例 — `分类 — 方法 — 三维匹配(基于形状)`

halcon无序抓取,3D视觉,3d,三维点云匹配,halcon


二. 点云匹配核心算子

1、create_surface_model ( : : ObjectModel3D, RelSamplingDistance, GenParamName, GenParamValue : SurfaceModelID) — 创建3D点云模型
参数
ObjectModel3D(in)要读取的文件的文件名。
RelSamplingDistance(in)代表采样距离在点云最小外界球体直径的比例。
GenParamName(in)参数名称。
GenParamValue (in)参数名称对应的值。
SurfaceModelID(out)3D点云模板的句柄。

重点解释一下第二个参数RelSamplingDistance

曲面模型是通过以一定距离对三维对象点云模型进行采样来创建的,采样距离即为点云模型最小外界球体的直径D与比例参数RelSamplingDistance乘积,即D*RelSamplingDistance

例如,如果RelSamplingDistance设置为0.05,而ObjectModel3D的直径为“10 cm”,则从对象曲面采样的点之间的距离将约为“5 mm”。

参数RelSamplingDistance越小,则创建点云模板所参与的坐标点越多,匹配精度提高但匹配速度会下降,反之亦然。采样点用于运算符find_surface_model中的近似匹配,可以使用值“sampled_model”使用操作符get_surface_model_param获得采样点。通过参数选取采样点的时候,应避免对象模型中的异常点,因为它们会破坏直径。

halcon无序抓取,3D视觉,3d,三维点云匹配,halcon


三. 点云匹配具体流程

3.1、读取硬币点云模型数据

如图所示:

halcon无序抓取,3D视觉,3d,三维点云匹配,halcon

read_object_model_3d ('C:/Users/Administrator/Desktop/2020-01-22-71816.om3', 'mm', [], [], ObjectModel3D, Status)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], ['lut','color_attrib'], ['color1','coord_z'], [], [], [], PoseOut)
3.2、创建硬币点云模板

如图所示:

halcon无序抓取,3D视觉,3d,三维点云匹配,halcon

* 提取出硬币的点云数据(类似二维的Blob分析)
get_object_model_3d_params (ObjectModel3D, 'point_coord_z', GenParamValue)
select_points_object_model_3d (ObjectModel3D, 'point_coord_z', 12, 14, ObjectModel3DThresholded)
connection_object_model_3d (ObjectModel3DThresholded, 'distance_3d', 1.5, ObjectModel3DConnected)
select_object_model_3d (ObjectModel3DConnected, 'num_points', 'and', 30000, 45000, ObjectModel3DSelected)
* 对硬币的点云数据进行三角曲面重建
triangulate_object_model_3d (ObjectModel3DSelected, 'greedy', [],[], TriangulatedObjectModel3D, Information)
visualize_object_model_3d (WindowHandle, TriangulatedObjectModel3D, [], [], ['lut','color_attrib'], ['color1','coord_z'], [], [], [], PoseOut)
* 创建硬币点云数据模板,SFM句柄
create_surface_model (TriangulatedObjectModel3D, 0.03, [], [], SFM)
3.3、对硬币点云数据进行三维匹配并显示

如图所示:

halcon无序抓取,3D视觉,3d,三维点云匹配,halcon文章来源地址https://www.toymoban.com/news/detail-719051.html

* 对整个场景三角曲面重建(因为是对经过三角曲面重建的硬币点云数据创建的模板)
triangulate_object_model_3d (ObjectModel3D, 'greedy', [],[], TriangulatedObjectModel3D1, Information)
* 三维点云匹配,获取当前匹配对象的Pose
find_surface_model (SFM, TriangulatedObjectModel3D1, 0.03, 0.5, 0.9, 'true', 'num_matches', 6, Pose, Score, SurfaceMatchingResultID)
* 获取场景信息和关键点
get_surface_matching_result (SurfaceMatchingResultID, 'sampled_scene', [], SampledScene)
get_surface_matching_result (SurfaceMatchingResultID, 'key_points', [], KeyPoints)
visualize_object_model_3d (WindowHandle, [ObjectModel3D,SampledScene,KeyPoints], [], [], ['color_' + [0,1,2],'point_size_' + [0,1,2]], ['gray','cyan','yellow',1.0,3.0,5.0], [], [], [], PoseOut)
ObjectModel3DResult:=[]
* 有可能会匹配到多个点云数据,所以遍历依次显示(本文只有一个)
for Index2 := 0 to |Score| - 1 by 1
    if (Score[Index2] < 0.11)
        continue
    endif
    CPose := Pose[Index2 * 7:Index2 * 7 + 6]
    * 当前被找到物体的点云数据 = 原始点云模板 * 匹配得到的当前物体姿态
    rigid_trans_object_model_3d (TriangulatedObjectModel3D, CPose, ObjectModel3DRigidTrans)
    ObjectModel3DResult := [ObjectModel3DResult,ObjectModel3DRigidTrans]
endfor
visualize_object_model_3d (WindowHandle, [ObjectModel3D,ObjectModel3DResult], [], [], ['color_' + [0,1],'point_size_0'], ['gray','red',1.0], [], [], [], PoseOut)

下雨天,最惬意的事莫过于躺在床上静静听雨,雨中入眠,连梦里也长出青苔。

到了这里,关于[3D&Halcon] 三维点云匹配&无序抓取的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [3D&Halcon] 3D鞋点胶的点云边界提取

    📢博客主页:https://loewen.blog.csdn.net 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 丶布布 原创,首发于 CSDN, 转载注明出处 🙉 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨ 一. 边界提取的常规思路 3D鞋实物图如下所示: 鞋点胶的点云边界

    2024年02月15日
    浏览(101)
  • [Halcon&3D] 3D鞋点胶的点云边界提取

    📢博客主页:https://loewen.blog.csdn.net 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 丶布布 原创,首发于 CSDN, 转载注明出处 🙉 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨ 一. 边界提取的常规思路 3D鞋实物图如下所示: 鞋点胶的点云边界

    2024年02月09日
    浏览(31)
  • 基于qt+halcon实现视觉定位模板匹配【附部分源码】

    本文主要实现基于qt5.3做一个视觉定位识别的功能,halcon版本使用的是halcon12.0,调用halcon的dll来实现二次开发,下边从头开始设置。 与前面的python版、MFC版、Qt版一样,可供不同的开发者进行学习使用。 编程环境:qt5.3 halcon12.0 IDE: VisualStudio 2010 本次项目的效果视频: 基于

    2024年01月24日
    浏览(45)
  • Halcon3d 点云计算平面度

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

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

    2024年02月02日
    浏览(30)
  • Halcon3D篇-3D预处理,滤波,点云筛选

    由于3D相机采集到的数据通常通过Tiff格式的深度图进行显示或者保存。 深度图与模型的互转可以访问另一篇博客:https://blog.csdn.net/m0_51559565/article/details/135362674 关于3D相机的数据采集,可以访问我们另一篇关于LMI3D相机SDK的二次开发: https://blog.csdn.net/m0_51559565/article/details/1

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

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

    2024年02月03日
    浏览(33)
  • [Halcon&3D] 主流的3D光学视觉方案及原理

    📢博客主页:https://loewen.blog.csdn.net 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 丶布布 原创,首发于 CSDN, 转载注明出处 🙉 📢现在的付出,都会是一种沉淀,只为让你成为更好的人✨ 一. 前言 传统工业机器视觉中, 3D 视觉与 2D 视觉技术的最大区别在

    2024年02月06日
    浏览(38)
  • 点云从入门到精通技术详解100篇-基于 3D 视觉信息的机械手抓取机械零部件

    目录 前言 相关技术的国内外发展现状 点云配准 点云分割 点云位姿估计

    2024年02月06日
    浏览(37)
  • Halcon基于形状的模板匹配

    基于形状的模板匹配,也称为基于边缘方向梯度的匹配,是一种最常用也最前沿的模板匹配算法。该算法以物体边缘的梯度相关性作为匹配标准,原理是提取ROI中的边缘特征,结合灰度信息创建模板,并根据模板的大小和清晰度的要求生成多层级的图像金字塔模型。接着在图

    2024年01月19日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包