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)