点对:同样一个特征点在不同场景中的组合
单位矩阵:对角线为1其他都为0的矩阵
世界坐标系:是真实世界客观存在的坐标系,一般的3D场景都用世界坐标系表示
该函数主要是通过3D重建对重建后的3D对象模版进行3D表面识别,主要流程:1.设置相机参数,通过文件读取参数,当前系统中有4个相机,获取相机的位姿、相机参数。2.创建3D立体模型,设置3D立体模型参数。3.准备3D模版匹配参数,获取3D对象,创建3D表面模型。4.读取4个相机获取到的图片。5.对读取到的图像阵列进行立体表面重建(reconstruct_surface_stereo该函数主要算子)。6.对重建后的立体模型进行表面模版匹配,将匹配到的多个位姿进行转换,该位姿转换主要是针对CamParam0的相机参数进行,将转换后的位姿显示在Imgases[1]的图像上。
1.read_camera_setup_model( : : FileName : CameraSetupModelID):从文件中还原相机设置模型
2.get_camera_setup_param( : : CameraSetupModelID, CameraIdx, GenParamName : GenParamValue):获取相机模型的通用参数
参数:
CameraSetupModelID:相机模型句柄
CameraIdx:设置中相机的索引( 'general' 或 camera index)
GenParamName :通用类型参数(设置CameraIdx为'general' 时,'num_cameras':模型中描述相机的数量,相机的数量是通过相机设置模型的创建而固定的,在此之后不能更改,设置CameraIdx为 camera index时,'pose':相机相对于设置的坐标系统的姿态,'params':具有内部摄像机参数的元组,元组的长度取决于相机类型)
GenParamValue:通用类型值
3.create_stereo_model( : : CameraSetupModelID, Method, GenParamName, GenParamValue : StereoModelID):创建一个halcon立体模型
参数:
CameraSetupModelID:相机参数模型
Method:重建方法(在reconstruct_points_stereo中,'surface_pairwise'或'surface_fusion':在一个校准的多视点立体视觉设置中从预先选择的图像对中获得视差图像,并将收集到的三维细腻西融合在一个单一的表面重建中,'points_3d':通过从多个校准过的图像中提取的点对应,通过香蕉的实现重建三维点)
GenParamName:通用类型参数('persistence':(GenParamValue=1)启用,(GenParamValue=0)禁用立体模型的持久性模式,在持久模式下,模式存储重建的中间结果)
GenParamValue:通用类型值
StereoModelID:立体模型句柄
该模型提供了从CameraSetupModelID中指定的校准多视角立体摄像机设置中重建3D点或表面的功能
4.set_stereo_model_param( : : StereoModelID, GenParamName, GenParamValue : ):设置立体模型参数
参数GenParamName:
只针对'surface_pairwise'重建方法的参数:
'sub_sampling_step':由成对视差估计得到的X、Y和Z图像数据的子采样步骤,然后该数据依次用于表面重建4
针对'surface_pairwise'和'surface_fusion'重建方法的参数:
'binocular_method':设置所需的匹配方式
'rectif_interpolation':校正映射的差值模式('bilinear':双线性)
'rectif_sub_sampling':校正映射的子采样因子,需执行 set_stereo_model_image_pairs算子使修改生效
'binocular_num_levels':使用图像金字塔的数量
'binocular_mask_width':相关窗口的宽度
'binocular_mask_height':相关窗口的高度
'binocular_score_thresh':
'binocular_texture_thresh':纹理图像区域的方差阈值
'binocular_filter':下游过滤器
'binocular_sub_disparity':亚像素插值的差异
'bounding_box':一个元组,指定两个相对的焦点P1=[x1,y1,z1],P2=[x2,y2,z2],用于重建的边界框
5.tile_images(Images : TiledImage : NumColumns, TileOrder : ):将多个图像对象平铺到一个大对象中
参数:
Images :多个输入图像
TiledImage :平铺的输出图像
NumColumns:用于输出平铺图像的列数
TileOrder:输入图像在输出图像中的顺序
6.reconstruct_surface_stereo(Images : : StereoModelID : ObjectModel3D):从校准的多视角立体图像重建表面
参数:
Images :与立体模型相关的摄像机设置获取的图像阵列
StereoModelID :立体模型句柄
ObjectModel3D:处理结果表面句柄
7.disp_3d_coord_system( : : WindowHandle, CamParam, Pose, CoordAxesLength : ):显示是三维坐标系的坐标轴
CoordAxesLength :世界坐标中坐标轴的长度
8.pose_to_hom_mat3d( : : Pose : HomMat3D):将3D位姿转换为齐次变换矩阵 例如,将相机的外部参数,转换为等效的齐次变换矩阵
9.pose_invert( : : Pose : PoseInvert):将每个姿态转换成3D姿态元组,将给定的姿态元组的每一个位姿都转换为相应的齐次变换矩阵H,在对这个矩阵求逆。得到的矩阵被转换成一个位姿
10.pose_compose( : : PoseLeft, PoseRight : PoseCompose):结合三维姿势根据给予两个元组,首先将PoseLeft与PoseRight中的位姿转化为相应的齐次变换矩阵H1与H2,H1和H2相乘,得到的矩阵转化成位姿返回。
11.disp_3d_coord_system( : : WindowHandle, CamParam, Pose, CoordAxesLength : ):显示三维坐标系的坐标轴
参数:
WindowHandle:窗口句柄
CamParam:相机参数
Pose:显示的位姿
CoordAxesLength :世界坐标中坐标轴的长度
12.affine_trans_object_model_3d( : : ObjectModel3D, HomMat3D : ObjectModel3DAffineTrans):将任意仿射3D变换矩阵应用到3D模型中
13.project_object_model_3d( : ModelContours : ObjectModel3D, CamParam, Pose, GenParamName, GenParamValue : ):将3D模型投影到图像坐标系中
参数:
ModelContours:预测模型轮廓
ObjectModel3D:3D对象模型句柄
CamParam:摄像机参数
Pose:世界坐标系在摄像机坐标系中的三维姿态
GenParamName:通用类型参数('data':此参数指定应该投影3D对象模型的哪些参数,如果值为 'faces',则3D对象模型的 'faces'将被投影,由轮廓线表示。如果值为 'lines',将三维物体模型的三维线进行投影。如果值为 'points',投影3D对象模型的点 'auto':halcon自动选择模型中可用的最具描述性的几何数据进行可视化。'hidden_surface_removal':此参数可用于关闭或打开隐藏表面的移除,如果值为'true',则只有那些投影的边缘被返回,3D对象模型的面被隐藏)
GenParamValue :通用类型值
本文详细介绍了Halcon的p_do_locate_pipe_joint_stereo函数,该函数通过3D重建进行3D表面识别。文章涵盖了相机参数设置、立体模型创建、3D模版匹配及位姿转换等关键步骤,涉及到read_camera_setup_model、create_stereo_model等多个算子的使用。
之p_do_locate_pipe_joints_stereo函数模块&spm=1001.2101.3001.5002&articleId=105634152&d=1&t=3&u=819a8116f7484de0b49a6c9f356d2391)
3516

被折叠的 条评论
为什么被折叠?



