1. 如何将灰度图转为3D点云
这里所说的灰度图转为3D点云,其实是将灰度图像每个像素的行列坐标作为3D点云的X,Y坐标,像素的灰度值(0—255)作为三维点的Z坐标。
简单说就是将一张灰度图像拆成了三个数组:X,Y,Z,然后将这三个数组转为点云。

halcon代码:
dev_get_window (WindowHandle)read_image (Image, '1.bmp')rgb1_to_gray (Image, GrayImage)*获取图像尺寸get_image_size (GrayImage, Width, Height)gen_rectangle1 (Rectangle, 0, 0, Height-1,Width-1)*从区域生成所有的像素坐标get_region_points(Rectangle, X, Y)*读取图像的全部像素get_grayval(GrayImage, X, Y, Z)*创建3D对象模型gen_object_model_3d_from_points(X, Y, Z, ObjectModel3D)*显示3D模型visualize_object_model_3d (WindowHandle,ObjectModel3D , [], [], [], [], [], [], [], PoseOut)
2. 创建一张深度图
实际上深度图是使用X,Y,Z三个数组的数据创建来的;
X,Y是作为图像的行列坐标,Z是实数(表示的是深度/高度),而不是灰度,因为灰度值是0——255之间的整数;
Z的值是能够返回高度信息的传感器获取到的,比如点激光、线激光,结构光等。
下面是自己赋值得到的一张深度图。

dev_get_window (WindowHandle)read_image (Image, '2.bmp')rgb1_to_gray (Image, GrayImage)*获取图像尺寸get_image_size (GrayImage, Width, Height)gen_rectangle1 (Rectangle, 0, 0, Height-1,Width-1)*从区域生成所有的像素坐标get_region_points(Rectangle, X, Y)*读取图像的全部像素get_grayval(GrayImage, X, Y, Z)*改变Z的值Z:=Z-256*对在Rectangle2区域中的像素进行赋值gen_rectangle1 (Rectangle2, 101, 101, 140,140)get_region_points(Rectangle2, X2, Y2)Z[X2*400+Y2]:=2.4*创建一张类型为'real'的图像gen_image_const (ImageConst, 'real', Width, Height)*使用X,Y,Z给图像赋值Aset_grayval (ImageConst, X, Y, Z)
3. 深度图转点云、点云转深度图
接下来我们加载一张真正的深度图,它是由线激光采集数据得到的,保存格式为tiff文件;
这是截取了其中一段图像,扫描的是电路板上一些元器件和焊点的高度。

read_image (Image, '3DImage1.tiff')get_image_size (Image, Width, Height)*1. 这一步是将灰度图转为了X,Y,Z三个数组,当然也就可以转为三位点云了*获取图像尺寸get_image_size (Image, Width, Height)gen_rectangle1 (Rectangle, 0, 0, Height-1,Width-1)*从区域生成所有的像素坐标get_region_points(Rectangle, X, Y)*读取图像的全部像素get_grayval(Image, X, Y, Z)*2. 再将X,Y,Z这三个数组转回深度图,实际应用中,线机光返回的数据就是Z数组,X,Y数组由自己创建*创建一个空图像,注意type选择'real'gen_image_const (ImageConst, 'real', Width, Height)*然后使用数组填充图像,这样就完成了set_grayval (ImageConst, X, Y, Z)*3. 接下来就可以对深度图做进一步处理了。。。
4. 代码和图片下载地址
https://download.csdn.net/download/weixin_38566632/19765495
审核编辑 :李倩
-
3D
+关注
关注
9文章
2990浏览量
113827 -
数组
+关注
关注
1文章
420浏览量
27114 -
点云
+关注
关注
0文章
59浏览量
4045
原文标题:Halcon 3D点云和深度图的相互转化
文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
iSUN3D即将推出单组分弹性树脂3D打印解决方案!
玩转 KiCad 3D模型的使用
TechWiz LCD 3D应用:FFS仿真
英伦科技10.1英寸裸眼3D数码相框升级了,玩转AI文生图太cool了!
如何将FlexRay信号转为Can信号
一种以图像为中心的3D感知模型BIP3D
3D IC背后的驱动因素有哪些?
对于结构光测量、3D视觉的应用,使用100%offset的lightcrafter是否能用于点云生成的应用?
SciChart 3D for WPF图表库

如何将灰度图转为3D点云
评论