Halcon 3D基础知识及常用函数

一、基本概念

1、点云(Point Cloud)

点云是一组3D数据点,每个点由笛卡尔坐标系或其他坐标系中的一个三维坐标表示,它被认为是一组非结构化的三维点,象征着三维物体的几何形状。点云是一种简单、完整的数据结构,消除了网格数据的复杂性。

2、位姿(Pose)

Halcon中的Pose是一个7参数元组,表示3D平移和旋转的组合。它可以描述一个坐标系相对于另一个坐标系的位置和方向,或者用于在不同坐标系间转换点坐标。Pose通过齐次变换矩阵实现刚性变换。一个pose是具有7个参数的元组:3个参数描述平移(TransX、TransY、TransZ),3个参数描述旋转(RotX、RotY、RotZ)。最后一个参数确定了平移和旋转的顺序(以及旋转的方向)。

3、深度图(Depth Map)

深度图就是从图像采集器到场景中各点的距离(深度)作为像素值的图像。像素值表示深度: 深度图的每个像素值代表场景中该点到摄像头或传感器的距离,通常用灰度值来表示。较亮的像素表示较近的物体,而较暗的像素则表示较远的物体。深度值可以是以毫米、米等单位测量的实际距离,或是相机坐标系中的相对距离。

  • 相对深度:在某些情况下,深度图并不提供场景中物体的实际物理距离,而是提供一种相对深度信息,即物体间的相对远近。
  • 绝对深度:这种深度图包含物体到传感器的真实物理距离,这对机器人导航、3D建模等精确应用至关重要。

深度图通常是单通道图像,不包含颜色信息。每个像素的值是一个浮点数或整数,代表场景中的深度。与RGB图像相比,深度图通常更强调几何信息,而非视觉纹理。

视角和投影: 深度图反映的是从摄像机或传感器视角下的距离,因此它通常依赖于特定的相机模型。不同视角或摄像机位置会产生不同的深度图。相机内参(如焦距、光心位置)和外参(相机在空间中的位置和方向)都会影响深度图的生成。

二、Halcon 3D基础函数

1)read_object_model_3d

功能:从文件读取一个3d模型。

参数说明:read_object_model_3d( : : FileName, Scale, GenParamName, GenParamValue : ObjectModel3D, Status)

FileName:要读取的点云文件名;

Scale:文件中数据的缩放因子;

ObjModel3D:输出 3D对象模型句柄;

Status:输出状态信息;

2)visualize_object_model_3d

功能:用于显示3d模型。该函数功能很多,包括设置位姿,颜色,鼠标翻转、缩放、平移,选择和取消选择目标,降低鼠标灵敏度,切换检查模式等。

参数说明:visualize_object_model_3d( : : WindowHandle, ObjectModel3D, CamParam, PoseIn, GenParamName, GenParamValue, Title, Label, Information : PoseOut)

WindowHandle:窗体句柄。

ObjectModel3D:3d模型。

CamParam:相机参数

PoseIn:初始位姿。

PoseOut:用户调整模型姿态后输出这个3d姿态。

3)surface_normals_object_model_3d

功能:用于计算三维物体模型的三维曲面法线。

参数说明:surface_normals_object_model_3d( : : ObjectModel3D, Method, GenParamName, GenParamValue : ObjectModel3DNormals)

: : ObjectModel3D:包含3D点数据的3D对象模型句柄。

Method:法线计算方法。默认值:'mls'。

GenParamName:一般平滑参数的名称。值列表:'mls_abs_sigma', 'mls_force_inwards', 'mls_kNN', 'mls_order', 'mls_relative_sigma'。

GenParamValue :一般平滑参数的值。。

ObjectModel3DNormals:具有计算出的三维法线的三维对象模型的句柄。

4)smooth_object_model_3d

功能:用于平滑3D对象模型的3D点。

参数说明:smooth_object_model_3d( : : ObjectModel3D, Method, GenParamName, GenParamValue : SmoothObjectModel3D)

: : ObjectModel3D:包含3D点数据的3D对象模型句柄。

Method:法线计算方法。默认值:'mls'。

GenParamName:一般平滑参数的名称。值列表:" mls_abs_sigma"," mls_force_inwards"," mls_kNN"," mls_order"," mls_relative_sigma"

SmoothObjectModel3D:带有光滑的三维点数据的三维对象模型的句柄。

5)triangulate_object_model_3d

功能:为三维对象模型创建曲面三角剖分。

参数说明:triangulate_object_model_3d( : : ObjectModel3D, Method, GenParamName, GenParamValue : TriangulatedObjectModel3D, Information)

: : ObjectModel3D:包含3D点数据的3D对象模型句柄。

Method:三角化方法。包括:'greedy', 'implicit', 'polygon_triangulation', 'xyz_mapping' GenParamName: 三角化参数名称。 GenParamValue:三角化参数值。

TriangulatedObjectModel3D:三角化处理后的3D模型;

Information:三角化过程的其他信息。

6)create_surface_model

功能:用于创建3D对象模型的表面匹配模型。内容涉及模型创建、参数设置、采样距离、边缘支持、基于视图的分数计算以及对噪声数据的处理,强调了法线方向和模型质量对匹配稳定性的影响。

参数说明:create_surface_model( : : ObjectModel3D, RelSamplingDistance, GenParamName, GenParamValue : SurfaceModelID)

: : ObjectModel3D:包含3D点数据的3D对象模型句柄。

RelSamplingDistance:相对于物体直径的采样距离。

GenParamName:通用参数的名称。

GenParamValue:通用参数的值。

SurfaceModelID:表面模型的句柄。

7)create_pose

功能:创建3D位姿;

参数说明:create_pose( : : TransX, TransY, TransZ, RotX, RotY, RotZ, OrderOfTransform, OrderOfRotation, ViewOfTransform : Pose)

: : TransX, TransY, TransZ:指定沿x轴,y轴和z轴的平移;

RotX, RotY, RotZ:指定绕x轴,y轴和z轴的旋转;

OrderOfTransform:选择平移方式。

OrderOfRotation:选择旋转方式。

ViewOfTransform:变换的视角。

Pose:三维姿态。输出为一个包含7个元素的 pose,通常表示为 [Tx, Ty, Tz, Rx, Ry, Rz, Order],其中 Tx, Ty, Tz 为平移分量,Rx, Ry, Rz 为旋转分量,Order 为旋转顺序。

8)gen_plane_object_model_3d

功能:创建表示平面的三维对象模型;

参数说明:gen_plane_object_model_3d( : : Pose, XExtent, YExtent : ObjectModel3D)

: : Pose:平面的位姿;输入 平面的中心和旋转;元素数量: Pose == 7

XExtent:指定平面范围的x坐标;

YExtent: 指定平面范围y坐标;

ObjectModel3D:3D模型结果;

9)intersect_plane_object_model_3d

功能:将三维对象模型与平面相交。

参数说明:intersect_plane_object_model_3d( : : ObjectModel3D, Plane : ObjectModel3DIntersection)

: : ObjectModel3D:三维对象模型

Plane :带姿态的平面;

ObjectModel3DIntersection: 将交点描述为一组线的三维对象模型的句柄。

相关推荐
笑鸿的学习笔记1 天前
qt-Quick3D笔记之官方例程Runtimeloader Example运行笔记
笔记·qt·3d
你好!蒋韦杰-(烟雨平生)3 天前
第一个3D程序!
c++·数学·3d
xwz小王子4 天前
北京大学与智元机器人联合实验室发布OmniManip:显著提升机器人3D操作能力
3d·机器人
m0_743106465 天前
【论文笔记】Fast3R:前向并行muti-view重建方法
论文阅读·深度学习·计算机视觉·3d·几何学
iloveas20147 天前
three.js+WebGL踩坑经验合集(4.2):为什么不在可视范围内的3D点投影到2D的结果这么不可靠
3d·webgl
有Li7 天前
2D 超声心动图视频到 3D 心脏形状重建的临床应用| 文献速递-医学影像人工智能进展
人工智能·3d·音视频
mirrornan7 天前
3D可视化定制:开启个性化购物新时代,所见即所得
3d·3d模型·web3d
Hypochondria.7 天前
基于SMPL的三维人体重建-深度学习经典方法之VIBE
人工智能·深度学习·计算机视觉·3d
就是个名称8 天前
cesium相机
前端·3d
一粒马豆8 天前
three.js用粒子使用canvas生成的中文字符位图材质
3d·three.js·canvas·中文字符·粒子动画