Halcon: 如何基于点稀疏度对点云进行降噪

Halcon: 如何基于点稀疏度对点云进行降噪

主要使用算子:

*获取3D对象模型的属性
get_object_model_3d_params 

*3D对象模型的属性应用一个阈值
select_points_object_model_3d 


前言

HALCON是德国MVtec公司开发的一套完善的标准的机器视觉算法包,拥有应用广泛的机器视觉集成开发环境。它有强大的三维视觉处理算法。


这篇文章主要介绍如何使用get_object_model_3d_params、select_points_object_model_3d两个算子,基于点稀疏度对点云进行降噪。

步骤

前期准备:halcon任一版本(我使用19.11)、点云数据。

数据和代码下载:
Halcon基于点稀疏度对点云进行降噪程序与数据

1.读取图片数据

准备数据:

dev_clear_window()
dev_open_window(0, 0, 800, 600, 'black', WindowHandle)
*读取图片
read_image (Image, '1.tiff')
*通道拆分
decompose3(Image, X, Y, Z)
threshold(Z, ZRegion, 100, 5000)
reduce_domain(Z, ZRegion, Z)
*转化成模型
xyz_to_object_model_3d(X, Y, Z, ObjectModel3D1)

2.开始处理模型

开始处理:

*降噪,去除3D对象模型中稀疏的部分
get_object_model_3d_params (ObjectModel3D1, 'num_points', NumPoints)
*距离最近的第n个点
NumNeighbors := 100
get_object_model_3d_params (ObjectModel3D1, 'neighbor_distance ' + NumNeighbors, DistanceDistribution)
*比例
InlierRate := 95
Distance := sort(DistanceDistribution)[|DistanceDistribution| * InlierRate / 100]
*最不超过x的距离内的邻居数
select_points_object_model_3d (ObjectModel3D1, 'num_neighbors ' + Distance, NumNeighbors, NumPoints, ObjectModel3DThresholdedAccurate)

3.结果显示

将结果显示:

Color := ['yellow','red']
visualize_object_model_3d (WindowHandle, [ObjectModel3DThresholdedAccurate,ObjectModel3D1], [], [], ['color_0','color_1','point_size'], [Color,2], [], [], [], VisPose1)

红色的点就是基于点稀疏度对点云进行降噪后去除的点云
在这里插入图片描述

4.整体代码

所有的代码:

dev_clear_window()
dev_open_window(0, 0, 800, 600, 'black', WindowHandle)
read_image (Image, '1.tiff')
decompose3(Image, X, Y, Z)

threshold(Z, ZRegion, 100, 5000)
reduce_domain(Z, ZRegion, Z1)
xyz_to_object_model_3d(X, Y, Z1, ObjectModel3D1)

*降噪,去除3D对象模型中稀疏的部分
get_object_model_3d_params (ObjectModel3D1, 'num_points', NumPoints)
*距离最近的第n个点
NumNeighbors := 100
get_object_model_3d_params (ObjectModel3D1, 'neighbor_distance ' + NumNeighbors, DistanceDistribution)
*比例
InlierRate := 95
Distance := sort(DistanceDistribution)[|DistanceDistribution| * InlierRate / 100]
*最不超过x的距离内的邻居数
select_points_object_model_3d (ObjectModel3D1, 'num_neighbors ' + Distance, NumNeighbors, NumPoints, ObjectModel3DThresholdedAccurate)
Color := ['yellow','red']
visualize_object_model_3d (WindowHandle, [ObjectModel3DThresholdedAccurate,ObjectModel3D1], [], [], ['color_0','color_1','point_size'], [Color,2], [], [], [], VisPose1)
visualize_object_model_3d(WindowHandle, ObjectModel3DThresholdedAccurate, [], VisPose1, [], [], [], [], [], PoseOut1)

总结

以上就是Halcon中如何基于点稀疏度对点云进行降噪的所有代码。数据和代码见上方链接。