tiff转点云
1.设置分辨率
首先我们tiff的行和列为像素坐标,我们需要知道相机的x,y分辨率将其转换为真实坐标。在这里设置分辨率:
resolutionX:=0.07
resolutionY:=0.07
2.选择图像深度范围(有效区域)
在这里选择要转为为点云的区域,通过设置二值化阈值(-1000,1000)也为了排除无效值。
read_image (inputImage, Selection)
threshold (inputImage, validRegion, -1000, 1000)
3.获取真实点的坐标
将区域坐标乘分辨率转为真实坐标
get_region_points (validRegion, Rows, Columns)
get_grayval (inputImage, Rows, Columns,z)
x:=Columns*resolutionX
y:=Rows *resolutionY
4.显示可视化点云
这里通过z轴伪彩可视化点云
gen_object_model_3d_from_points(x, y, z, ObjectModel3D)
dev_get_window (WindowHandle)
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], ['color_attrib','lut','disp_pose'], ['coord_z','color1','true'], [], [], [], PoseOut)
5.保存点云
这里修改你要保存的路径(savePath)和格式(ply_binary),可选的保存格式还有“om3,dxf,off,ply,obj,stl,stl_binary,stl_asicii”。
savePath:='C:/pointCloud.ply'
write_object_model_3d (ObjectModel3D, 'ply_binary',savePath, [], [])
完整代码:
savePath:='E:/pointCloud.ply'
resolutionX:=0.07
resolutionY:=0.07
dev_close_window ()
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (ImageZoomed, Selection)
mean_image (ImageZoomed, ImageMean, 9, 9)
threshold (ImageZoomed, Region2, -10, 1000)
get_region_points (Region2, Rows, Columns)
get_grayval (ImageZoomed, Rows, Columns,z)
x:=Columns*resolutionX
y:=Rows *resolutionY
gen_object_model_3d_from_points(x, y, z, ObjectModel3D)
dev_get_window (WindowHandle)
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], ['color_attrib','lut','disp_pose'], ['coord_z','color1','true'], [], [], [], PoseOut)
write_object_model_3d (ObjectModel3D, 'ply_binary', 'savePath', [], [])