3D变形几何体匹配

Halcon 3D匹配之变形几何体匹配 算子说明

1.变形几何体匹配过程中,需要指定参考点,作为变形体匹配参考。

add_deformable_surface_model_reference_point(DeformableSurfaceModel, ReferencePointX, ReferencePointY, ReferencePointZ : ReferencePointIndex)
DeformableSurfaceModel: 变形体几何体的句柄
ReferencePointX: 参考点的X坐标(坐标数组)
ReferencePointY: 参考点的y坐标(坐标数组)
ReferencePointZ: 参考点的z坐标(坐标数组)
ReferencePointIndex:输出参数,新的参考点的索引

2.将示例的形变特征添加到可变性几何体上

add_deformable_surface_model_sample(DeformableSurfaceModel, ObjectModel3D )
DeformableSurfaceModel:变形几何体
ObjectModel3D:示例的变形

3.将刚性几何体转变为可变性几何体(曲面)

create_deformable_surface_model( ObjectModel3D, RelSamplingDistance, GenParamName, GenParamValue : DeformableSurfaceModel)
ObjectModel3D:刚性几何体
RelSamplingDistance:采样尺度,根据刚性几何体与坐标轴平行的包围盒最大边长确定,假设最大边长是10cm,采样尺度为0.05,那么实际的采样距离为5mm.采样尺度越小,采样点越多,结果稳定性好,采样尺度越大,采样点越少,结果稳定性差。
GenParamName:生成曲面的方法:
GenParamValue:曲面生成方法对应的参数值
“model_invert_normals”:是否将曲面法向量反转;value:false,true
“scale_min” 和”scale_max”:模型最大最小缩放比例,必须成对设置,即设置了一个也要设置另一个
“bending max”:最大折弯角度,value 0-90度,单位是角度
“stiffness”:值越小变形越大,值越大变形越小
DeformableSurfaceModel:创建的可变性几何体句柄

4.在3D场景中找到一个可变性几何体的最佳匹配,即基于3D模型的匹配,类似于2D的模板匹配

find_deformable_surface_model(DeformableSurfaceModel, ObjectModel3D, RelSamplingDistance, MinScore, GenParamName, GenParamValue : Score,
DeformableSurfaceMatchingResult)
DeformableSurfaceModel:变形几何体,用来匹配的几何体,用来与ObjectModel3D中的几何体进行对比
ObjectModel3D:包含场景的几何体,里面可能有多个几何体待匹配,几何体要有采样点和法向量信息
RelSamplingDistance:采样尺度,具体尺寸由与坐标轴平行的几何体包围盒最大边长确定
MinScore:最小相似度

GenParamValue:通用参数值

Score:输出匹配完成之后的最终相似度
DeformableSurfaceMatchingResult:输出匹配结果
匹配原理:两种方法:1.基于点和点的法向量;2.基于点和2D映射,需要能从2D深度图映射到3D模型(使用的方法是xyz_to_object_model_3d)
在该方法中,在场景中,多边形和三角形是不参与匹配的,只有定点被用来匹配。因此,这种方法在基于CAD模型的匹配中是不建议使用的,因为CAD模型保存的曲面信息。这种方法在匹配之前需要使用sample_object_model_3d 方法采样点和法向量。当用飞行时间相机采集图像时,为了获取一个稳定的计算结果,需要将通用参数中的scene_normal_computation设置为”mls”。
首先,需要在被匹配的几何体上采样,均匀地采集点。采样距离收到RelSamplingDistance控制,减小这个距离,会导致采样点增加,得到的匹配结果会更加稳定,但是匹配时间会更长;减小这个距离,采样点减少,稳定性会降低,匹配速度会加快。可以通过
get_deformable_surface_matching_result获取场景中的采样点,来实现可视化检测。为了实现稳定匹配,建议每个几何体采样点至少有50100个。
匹配过程的实现是分两步走的,首先,使匹配几何体和被匹配几何体近似接近,位置合适之后,固定住位置,根据通用参数实施变形,直至匹配。
'scene_normal_computation':这个参数的主要作用是控制从几何体上采样点法向量的计算。默认的参数值是”fast”,法向量的是基于一个小的邻域内的点计算出来的。参数设为”mls”时,会从一个大的邻域内点计算法向量,并且使用更加复杂的基于重构mls曲面的方法。Mls方法是为了去除噪声,更加适用于用飞行时间相机获取的数据。这类相机获取的数据有较大的噪声,用该方法鲁棒性更好。
'pose_ref_num_steps':匹配迭代次数,增加迭代次数会有更高的匹配精度,但是会导致运行时间的增加。然而,一旦实现了最佳匹配,增加迭代次数,精度将不会增加。
'pose_ref_dist_threshold_rel':采样点到几何体表面的距离,大于这个距离被判定为噪声,小于这个距离认为是有效的采样点
'pose_ref_scoring_dist_rel':
'pose_ref_scoring_dist_abs':这两个参数是在匹配过程结束之后,计算匹配分数用的,只有一个起作用,如果两个都设置了,最后一个设置的有效。大于这个数值的点被判定为噪声,小于这个数值的点被认为是在曲面上,参与匹配分数的计算。

5.在3D匹配过程中,3D场景中的变形几何体的位置和形变基本已经确定,需要微调以达到最佳匹配时使用该算子。

refine_deformable_surface_model(DeformableSurfaceModel, ObjectModel3D, RelSamplingDistance, InitialDeformationObjectModel3D, GenParamName, GenParamValue : Score, DeformableSurfaceMatchingResult)
DeformableSurfaceModel:

DeformableSurfaceModel:变形几何体模型
ObjectModel3D:包含场景的3D模型
RelSamplingDistance:采样距离
InitialDeformationObjectModel3D:3D几何体初始的形变,其必须和匹配几何体有尽可能一样多的点,且排列顺序要相同
GenParamName:通用参数名 参考上面4
GenParamValue:通用参数值 参考上面4
Core : 优化后模型的匹配分数
DeformableSurfaceMatchingResult:匹配结果

6. 释放匹配结果内存

clear_deformable_surface_matching_result 释放3D匹配结果的几何体的内存,对应的创建算子为find_deformable_surface_model or refine_deformable_surface_model.

7. 释放变形几何体内存

clear_deformable_model 释放变形几何体的内存,对应的创建算子为create_planar_uncalib_deformable_model 或者 create_planar_calib_deformable_model.

8. 释放变形几何曲面内存

clear_deformable_surface_model.释放变形曲面几何体的内存,创建算子为create_deformable_surface_model

9. 查询变形几何体参数

get_deformable_surface_model_param获取变形几何体的参数

10. 查询变形几何体匹配结果

get_deformable_surface_matching_result 获取变形曲面几何体匹配结果
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值