龙空技术网

HALCON高级篇:3D匹配

AI图像老白 117

前言:

眼前你们对“halcon基本操作”都比较着重,咱们都想要了解一些“halcon基本操作”的相关资讯。那么小编在网上网罗了一些关于“halcon基本操作””的相关知识,希望朋友们能喜欢,朋友们一起来了解一下吧!

3D匹配

3D匹配的目标就是在搜索数据中找到一个特定的3D物体,并决定其位姿,例如物体在空间中的位置和方向。HALCON提供了不同的方法:

对于shape-based(基于形状)的3D匹配,从一个3D CAD模型中产生一个3D形状模型,CAD模型必须是HALCON支持的格式之一。3D形状模型由3D物体从不同视角下得到的2D映射组成。类似于2D结构的基于形状的匹配,3D形状模型被用来在一张图像中识别物体的实例,但是这里,每一个实例的3D位姿被返回,而不是2D的位置,方向和尺度。对于surface-based(基于表面)的3D匹配,一个表面模型要么产生于一个符合支持格式的CAD模型,要么产生于一个OM3格式的3D物体模型,后者可以利用3D重构的方法从图像中获得,例如立体视觉。相比于基于形状的3D匹配,物体并不在图像中进行搜索,而是在3D场景中。就像基于形状的3D匹配,基于表面的3D匹配返回定位到每一个物体实例的3D位姿。Deformable surface-based可变性的基于表面的3D匹配类似于上面提到的基于表面的3D匹配,但是其也可以找到变形的3D物体。另外,它允许去定义一些针对参考物体特定的3D点,例如抓取点,这些点也被称为参考点。一旦这个(变形的)3D物体已经被找到,参考点的位置也将适应被发现物体的变形,例如抓取变形的物体。

如果你需要一个平面物体或者平面物体部分的3D位姿,我们推荐你用用给一个标定的透视匹配方法,而不是3D匹配。可行的方法是标定透视可变性的匹配和标定基于描述符的匹配,两者用起来更快更方便。

需要注意的是,基于形状的3D匹配,同标定透视可变性的匹配和标定基于描述符匹配,相机的标定是必要的。对于(可变性的)基于表面的匹配,当获取的3D物体模型是来源于用3D重构方法的图像,相机标定也是必要的。

基于形状的3D匹配:(左)包含螺丝钳的原始图像,(右)被发现映射在图像中螺丝钳的3D模型

基本概念

3D匹配由下面几个基本步骤组成:

访问3D物体模型

在创建一个特定方法的3D模型,例如3D形状模型或者表面模型,则描述感兴趣物体的3D物体模型必须被能够访问。

对于基于形状的3D匹配,3D物体模型用算子read_object_model_3d来访问。支持的CAD格式有DXF, PLY或者STL等。

对于(可变性的)基于表面3D匹配,3D物体模型要么用算子read_object_model_3d从文件中进行访问,要么通过一个在线的3D重构。如果3D物体模型是从一个文件中被访问的,除了支持的CAD格式外,OM3格式也能够被处理,其是HALCON特定支持的格式,其能够通过离线的3D重构获得。

创建特定方法的3D模型

已经能够访问3D物体模型,特定方法的3D模型就能够被创建,其为特定3D匹配方法准备了3D物体模型。

对于基于形状的3D匹配,算子create_shape_model_3d可以创建一个3D形状模型,它通过在用户指定的位姿范围内,计算3D物体模型的不同视图而产生。这些视图是通过在物体模型的周围放置虚拟相机得来的,并将3D物体模型映射到每一个相机位的图像平面。这样所有视图的2D形状描述被存储在3D形状模型中。为了避免存储和运行时间问题,特定的位姿范围应该被尽可能的限制,进而需要被计算并保存在3D形状模型中的2D映射的数量将被最小化。为了能够正确的创建模型视图,相机的参数是必须的,相机的参数可以通过相机标定来获得。对于(可变性的)基于表面的匹配,算子create_surface_mode和create_deformable_surface_mode通过对一定距离的3D物体模型的采样而创建了一个表面模型,进而,对于一个近似匹配,其是3步骤的第一步,仅仅一个消减的3D点必须被检测。

销毁3D物体模型

在创建了3D形状模型或者(可变性的)表明模型,3D物体模型通常就不在需要了,可以用算子clear_object_model_3d去销毁它。如果3D模型仍然被需要,例如为了可视化的目的,这一步必须被移到应用程序的最后。

获取搜索数据

如果基于形状3D匹配被应用,搜索推选哪个将被获取到。

如果(可变形的)基于表面的3D匹配被应用,搜索空间不是一张图像,而是一个可以作为3D物体模型的3D场景,其可以通过用3D重构方法的图像获得。

重构3D信息

借助用create_shape_model_3d, create_surface_model, 或者create_deformable_surface_model或者用read_shape_model_3d, read_surface_model或者read_deformable_surface_model创建的特定方法的3D模型,物体可以在搜索数据中被搜索,例如在图像中进行基于形状的3D匹配,在用3D物体模型描述的3D场景中进行基于(可变性的)表面匹配。

对于搜索,算子find_shape_model_3d,find_surface_mode, 或者find_deformable_surface_mode被应用,几个参数可以被设置用来控制搜索的进程。这两个算子返回匹配模型的位姿和描述匹配质量的一个得分。

销毁特定方法的3D模型

当特定方法的3D模型不再需要的时候,可以分别用算子clear_shape_model_3d, clear_surface_model, 或者clear_deformable_surface_mode去销毁它们。

第一个例子

下面的程序作为基本概念的一个例子,它应用了基于形状3D匹配去定位螺丝钳。

首先,用算子read_object_model_3d去读取包含螺丝钳的3D模型(如上图)的DXF文件。

对于3D形状模型的创建,相机参数是需要的,它们可以通过相机标定来决定。这里,它们是已知的,仅仅被分配到变量CamParam。

用算子create_shape_model_3d来创建3D形状模型。这里,除了相机参数外,下面这些参数也是必需的:物体可能的参考方向和位姿范围,例如最小的和最大的经线和纬线,就像相机和物体边界框盒中心之间的最小的和最大的距离(其对应的是被建立起来用来计算虚拟相机位置的球体的半径)。相机滚动角度的范围被设定为整个圆。

在创建了3D形状模型后,3D物体模型不再需要,用算子clear_object_model_3d销毁。

搜索图像被获取,用算子find_shape_model_3d在每一张图像上进行实际的匹配操作。

在程序的最后,3D形状模型用算子clear_shape_mode_3d来销毁。

标签: #halcon基本操作