hacon中深度图转点云图

一、常用算子
gen_image_surface_first_order( : ImageSurface : Type, Alpha, Beta, Gamma, Row, Column, Width, Height : )
作用:用于创建XY方法图像
ImageSurface :输出图像
Type:输出像素类型
Alpha:垂直方向的一阶系数。(线激光发射一条光线,线上每两个点的距离)
Beta:水平方向的一阶系数。(线激光两次触发的距离间隔)
Gamma:零阶系数。(Z轴分辨率)
Row:曲面参考点的行坐标。
Column:曲面参考点的纵坐标。
Width:图片的宽度
Height:图片的高度

xyz_to_object_model_3d(X, Y, Z : : : ObjectModel3D)
作用:将图像中的3D点转换为3D对象模型z。
X:用三维点的x坐标和三维点ROI区域。
Y:用三维点的y坐标和三维点ROI区y域。
Z:用三维点的z坐标和三维点ROI区域。
ObjectModel3D:3D对象模型句柄

write_object_model_3d( : : ObjectModel3D, FileType, FileName, GenParamName, GenParamValue : )
作用:保存一个3D模型
ObjectModel3D:3D对象模型句柄。
FileType:保存的类型。支持’dxf’, ‘obj’, ‘off’, ‘om3’, ‘ply’, ‘ply_binary’, ‘stl’, ‘stl_ascii’, ‘stl_binary’
FileName:保存文件的名称。
GenParamName:输入通用参数的名称。
GenParamValue :输入通用参数的值。

visualize_object_model_3d( : : WindowHandle, ObjectModel3D, CamParam, PoseIn, GenParamName, GenParamValue, Title, Label, Information : PoseOut)
作用:可视化3D对象模型
WindowHandle:窗口句柄
ObjectModel3D:3D对象模型句柄
CamParam:相机内参
PoseIn:3D姿态
GenParamName:参数名
GenParamValue:参数值
Label:在每个3d模型位置显示的文本
Information:窗口左下角显示的信息
PoseOut:输出点云的当前位姿

注意
GenParamName参数名中有很多设置,比较常见的是当GenParamName:=[‘color’,‘lut’]时,GenParamValue:=[‘color1’,‘coord_z’]时,意思时在color为第一种颜色,在Z轴设置渐变。

案例:

** 深度图转换为点云图
* 从文件 './pcb.tif' 中读取深度图像并存储在变量 ImageZ 中。

read_image (ImageZ, './pcb.tif')
** 
* 设置 x、y、z 三个方向上的分辨率,并将它们存储在 ScaleFactor 数组中。
xResolution:=0.06
yResolution:=0.06
zResolution:=0.001
ScaleFactor:=[xResolution,yResolution,zResolution]

* 获取窗口句柄 WindowHandle。
dev_get_window (WindowHandle)

* 获取图像 ImageZ 的大小 Width 和 Height。
get_image_size (ImageZ, Width, Height)

* 更新 x、y、z 分辨率为 ScaleFactor 中的值。
xResolution:=ScaleFactor[0]
yResolution:=ScaleFactor[1]
zResolution:=ScaleFactor[2]

** * 生成两个新的图像 ImageX 和 ImageY,用于存储实数值,大小为 Width x Height。
gen_image_surface_first_order (ImageY, 'real', 0, 1, 0, 0, 0, Width, Height)
gen_image_surface_first_order (ImageX, 'real', 1, 0, 0, 0, 0, Width, Height)

** 对深度图进行处理滤波处理
* 对 ImageZ 进行灰度最小最大化处理,获取最小值 Min 和最大值 Max,以及范围 Range。
min_max_gray (ImageZ, ImageZ, 0, Min, Max, Range)

* 如果最小值 Min 小于 0,对 ImageZ 进行缩放处理使其最小值为 0if(Min<0.0)
    scale_image (ImageZ, ImageZ, 1.0, -Min)
endif

* 再次对处理后的 ImageZ 进行灰度最小最大化处理,获取更新的最小值 Min、最大值 Max 和范围 Range。
min_max_gray (ImageZ, ImageZ, 0, Min, Max, Range)  

* 阈值分割
threshold (ImageZ, Region, 1,Max )
* 缩小 ImageZ 的感兴趣区域至 Region,存储在 ImageReduced 中。
reduce_domain (ImageZ, Region, ImageReduced)

* 将 ImageReduced 转换为实型图像 Z。
convert_image_type (ImageReduced, Z, 'real')

* 对 Z 进行灰度最小最大化处理,获取最小值 Min、最大值 Max 和范围 Range。
min_max_gray (Z, Z, 0, Min, Max, Range)

* 计算缩放因子 factor = xResolution / zResolution,然后计算 Z 方向上的缩放比例 ScaleZ = 1 / factor。
factor:=xResolution/zResolution
ScaleZ:=1/factor
*输出
* 将 Z 按照缩放比例 ScaleZ 进行缩放,并存储在 ImageScaled 中。
zScale:=ScaleZ
scale_image (Z, ImageScaled, ScaleZ, -ScaleZ*Min)

** 把X,Y,Z图像拟合为3D点云模型
* 使用 xyz_to_object_model_3d 函数将 ImageX、ImageY 和 ImageScaled 转换为 3D 对象模型 ObjectModel3D。
xyz_to_object_model_3d (ImageX, ImageY, ImageScaled, ObjectModel3D)
write_object_model_3d (ObjectModel3D, 'om3', 'test', [], [])
Instructions[0] := ''       
** 交互式显示点云数据
* 最后,通过 visualize_object_model_3d 函数将生成的 3D 对象模型在窗口中进行可视化展示。
visualize_object_model_3d (WindowHandle, [ObjectModel3D], [], [], ['lut','intensity'], ['color1','coord_z'], '', '', Instructions, PoseOut)   

运行结果
在这里插入图片描述
注意
姿势可以通过在按下鼠标按钮的同时移动鼠标来修改。默认的设置是:
旋转:鼠标左键
缩放:Shift+鼠标左键(或鼠标中心键)
Ctrl+鼠标左键

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白哒哒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值