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: 将交点描述为一组线的三维对象模型的句柄。

相关推荐
多恩Stone5 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
多恩Stone5 天前
【3D-AICG 系列-15】Trellis 2 的 O-voxel Shape: Flexible Dual Grid 代码与论文对应
人工智能·python·算法·3d·aigc
在下胡三汉5 天前
为什么“资产土地”标准化主资产的 glTF、glb格式模型,为什么非常流行
3d
2401_863801465 天前
3DTiles(.b3dm,i3dm,cmpt) 数据转换fbx转obj转max转su,cesium格式模型转换
3d
3Dmax效果图渲染研习社5 天前
2026年3ds Max云渲染平台哪个好?
3d
思茂信息6 天前
基于CST 3D Combined功能的以太网口RE仿真
开发语言·javascript·单片机·嵌入式硬件·matlab·3d
CG_MAGIC6 天前
Maya 角色绑定:控制器搭建与 IK/FK 切换
3d·贴图·maya·渲云渲染
PHOSKEY6 天前
光子精密3D工业相机陶瓷基片平面度检测!赋能电子制造质控升级
平面·3d·3d工业相机
twe77582586 天前
用3D动画揭示技术路线的多样性
科技·3d·制造·动画