halcon点云处理-深度图像和点云数据之间的转换

1、读取深度图像转为halcon点云对象

X,Y坐标根据传感器精度转换

read_image (Image2TifHeight, 'xxxx.tif')

convert_image_type(Image2TifHeight, ImageConverted, 'real')

get_image_size(Image2TifHeight,Width, Height)


gen_image_surface_first_order (X, 'real', 0, 1, 0, 0, 0, Width, Height)
gen_image_surface_first_order (Y, 'real', 1, 0, 0, 0, 0, Width, Height)

scale_image(X,Xs,5.0/1000,0)
scale_image(Y,Ys,5.0/1000,0)
scale_image(ImageConverted,Zs,1.0/10/1000,0)

xyz_to_object_model_3d(Xs,Ys,Zs,ObjectModel3D)
dev_close_window()
dev_open_window(0, 0, 640, 480, 'black', WindowHandle)
sample_object_model_3d(ObjectModel3D, 'furthest_point', 15000, [], [], SampledObjectModel3D)
get_object_model_3d_params(SampledObjectModel3D, 'num_points', GenParamValue)
get_object_model_3d_params(ObjectModel3D,'point_coord_z',GenParamValue1)

visualize_object_model_3d(WindowHandle, SampledObjectModel3D, [], [], [], [], [], [], [], PoseOut)

2.无序点云转为深有序深度图像

get_object_model_3d_params(ObjectModel3D,'num_points', num_p)
get_object_model_3d_params (ObjectModel3D, 'point_coord_x', pxOut)
get_object_model_3d_params (ObjectModel3D, 'point_coord_y', pyOut)
tuple_min (pxOut, minX)
tuple_max (pxOut, maxX)
xRangle := maxX-minX
tuple_min (pyOut, minY)
tuple_max (pyOut, maxY)
yRangle := maxY-minY

*xy 分辨率0.1mm
resolusion := 0.1/1000
Width := int(ceil(xRangle /resolusion))
Height := int(ceil(yRangle/resolusion))
mapX:=[]
mapY:=[]

for Index := 0 to num_p-1 by 1   
    x := int( (pxOut[Index]-minX)/resolusion)
    y := int((pyOut[Index]-minY)/resolusion)
    mapX:=[mapX,x]
    mapY:=[mapY,y]
endfor
xy_map:=[Width,Height,mapY,mapX]
set_object_model_3d_attrib(ObjectModel3D,'xyz_mapping','object', xy_map, ObjectModel3DOut)
object_model_3d_to_xyz(X, Y, Z, ObjectModel3DOut, 'from_xyz_map', [], [])

生成的坐标映射也可以获取:

get_object_model_3d_params(ObjectModel3D,'mapping_row',yI)
get_object_model_3d_params(ObjectModel3D,'mapping_col',xI)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Halcon可以通过一系列的点云处理算法来处理点云数据,并从中提取出Z方向的图像信息。具体步骤如下: 首先,我们需要读取点云数据并进行预处理。可以通过Halcon提供的函数来读取点云数据,例如read_object_model或read_object_model_file函数。读取后的点云数据可以包含三维坐标信息以及其他属性,我们需要根据需求进行筛选和处理。 接下来,可以使用Halcon中的滤波算法对点云数据进行去噪或平滑处理,例如采用moving_least_squares或outlier_removal等方法。这样可以减少采集或传输过程中的噪声,并提高后续处理的准确性。 然后,我们可以利用Halcon中的三维重建算法将点云数据转换为三维模型。使用fit_shape_model或fit_generic_shape函数可以根据点云数据生成一个几何模型,便于后续的分析和提取。 最后,要提取Z方向的图像信息,可以使用Halcon中的三维视觉算法来实现。例如,可以利用project_shape_model函数将三维模型投影到二维图像平面上,并得到对应的图像区域。根据投影结果,可以提取出Z方向上的图像信息,例如高度、深度或曲率等。 总结起来,Halcon处理点云数据并提取Z方向图像的步骤包括:读取点云数据、预处理(滤波、平滑等)、三维重建(生成几何模型)、三维视觉算法(投影、提取Z方向信息)。这些步骤可以根据具体需求进行灵活的组合和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值