Halcon3D点云处理-点云可视化的几种方式

在halcon处理三维数据的时候,我们就有一个非常棘手的需求,就是想要像Maya 3Dmax一样,非常直观的可视化自己的数据,而在halcon之中也提供了功能非常全面的可视化工具;
halcon提供的可视化功能可以

在三维坐标中很方便的观察点云对象

可以显示多个点云对象 在同一个窗体内

可以根据XYZ任意维度来对点云的点进行渲染着色


1.首先我们读取一个三维对象

在这里插入图片描述
这里我们是读取了一只斯坦福兔子,这个兔子对于学习点云处理的人来说可就太熟悉啦
在读取完毕之后观察变量窗口
发现多了一个三维对象变量
在这里插入图片描述
双击这个ObjectModel3D的句柄,出现如下图所示的界面
在这里插入图片描述
在这个窗体的左上角勾选Display Models,即可弹出一个可视化窗体
如图所示
在这里插入图片描述

在刚才的那个窗体里面还可以看到点云的一些属性
在这里插入图片描述
比如上图就显示了组成这个点云的点 是否有三角化/是否有法向量等等这些属性

至此我们读取一个三维对象就完成了

2.初步可视化三维对象

读取三维对象之后(在halcon内叫做HObjectModel3D),我们调用可视化本地函数-visualize_object_model_3d来可视化点云

dev_get_window (WindowHandle)
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], [], [], [], [], [], PoseOut)

直接执行,如下图所示
在这里插入图片描述
我们在给进去的窗口句柄的窗口上看到了可视化窗口,右下角有一个“继续”的按钮
此时可以通过鼠标左键来变化观察的视角,来观察一个三维对象

在这里插入图片描述
在这个本地函数的帮助文档里面,有着这样一句话
大概意思是旋转就是鼠标左键
缩放就是Shift键加上鼠标左键(或者是鼠标中间滚轮)
平移就是Ctrl键加上鼠标左键

3.按Z方向高度渲染颜色可视化

实现如下图所示结果
在这里插入图片描述
实现上图可视化功能很简单
只需要给可视化本地函数设置几个可视化参数就可以
代码如下

dev_get_window (WindowHandle)
GenParamName := ['lut','color_attrib','light_position','disp_pose','alpha']
GenParamValue := ['color1','coord_y','0.0 0.0 -0.3 1.0','true',0.9]
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [],GenParamName, GenParamValue, [], [], [], PoseOut)

可视化的这个本地函数参数很多
具体参考halcon的帮助文档

在这里插入图片描述
这里有一些可选参数
还有一些参数在disp_object_model_3d这个算子的帮助文档中
在这里插入图片描述
具体的参数名 和参数含义我就不挨着挨着去解释了,有了这个帮助文档,然后拿手机翻译一下单词,很容易就能理解的
这个可视化参考例程moments_object_model_3d

4.用颜色渲染深度图

很多时候我们在做一些简单的深度图处理的时候,我们不会去生成HobjectModel3d(生成的过程开销更大),那么很多时候我们就会需要直接对深度图进行可视化了;
之前做项目的时候,对着16位的深度图去看高低确实非常不直观,对于现场调试的兄弟们也非常不友好,很多时候我们没有办法直接通过看图来确定程序判定是否准确。

扫描二维码关注公众号,回复: 16185193 查看本文章

这样的话我们就可以在显示在界面上的时候稍微做一点点处理
比如下面我们读取一个深度图
在这里插入图片描述
处理之后就可视化成了
在这里插入图片描述
这样可以清晰的观察表面的纹路缺陷
halcon代码如下

MaxVal := 1
MinVal := -1
scaleVal := 255.0/(MaxVal-MinVal)


scale_image (Zmap, ImageScaled, scaleVal, scaleVal*-MinVal)

convert_image_type (ImageScaled, ImageConverted, 'byte')


gen_image_proto (ImageConverted, S, 200)

gen_image_proto (ImageConverted, V, 200)

trans_to_rgb (ImageConverted, S, V, ImageRed, ImageGreen, ImageBlue, 'hsv')

compose3 (ImageRed, ImageGreen, ImageBlue, MultiChannelImage)

猜你喜欢

转载自blog.csdn.net/linux_huangyu/article/details/132064731