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中如何基于点稀疏度对点云进行降噪的所有代码。数据和代码见上方链接。