find_calib_object
名称
find_calib_object —查找HALCON校准板,并在校准数据模型中设置提取的点和轮廓。
签名
find_calib_object(图片:CalibDataID,CameraIdx,CalibObjIdx,CalibObjPoseIdx,GenParamName,GenParamValue:)
描述
find_calib_object在图像中从校准数据模型 CalibDataID中搜索与索引为CalibObjIdx的校准对象的描述相对应的HALCON校准板。如果找到校准板,则 find_calib_object提取其标记的中心和轮廓,并估计板相对于观察相机 CameraIdx的姿态。所有收集的观测数据都存储在校准对象姿势CalibObjPoseIdx的校准数据模型中 。为了确保成功检测到校准板,如果使用带有矩形排列标记的校准板,则整个校准板必须在图像中可见,而如果具有至少六个标记的六角形校准板就足够了取景器图案完全可见。
准备输入数据
在调用操作员find_calib_object之前,必须定义校准数据模型,执行以下步骤:
使用运算符 create_calib_data创建校准数据模型,指定设置中摄像机的数量和使用的校准对象的数量。
使用运算符set_calib_data_cam_param为所有摄像机 指定摄像机类型和初始内部摄像机参数。请注意,在单个设置中只能校准相同类型的摄像机。
使用运算符set_calib_data_calib_object指定所有校准对象的描述。请注意,为了成功调用find_calib_object,需要一个有效的校准板描述文件。该描述文件必须事先通过操作员set_calib_data_calib_object进行设置 。因此,只能通过操作员set_calib_data_observ_points来使用用户定义的校准对象。
收集观测数据
find_calib_object用于收集校准数据模型中的观测值(有关校准数据观测值的描述,请参见set_calib_data_observ_points)。除此之外,它还存储不能通过set_calib_data_observ_points添加到模型中的其他观测数据,该数据 取决于所使用的校准板。对于带有矩形排列标记的校准板(请参见gen_caltab),将校准板的边缘添加到观察中,而具有六边形图案的校准板(请参见 create_caltab)将存储其查找器图案之一。另外,并且与所使用的校准板无关,每个标记的轮廓都会添加到校准模型中。
设置其他参数
使用带有六角形标记的校准板(蜂窝标定板),可以通过GenParamName和 GenParamValue设置以下附加参数:
'sigma':
提取标记轮廓的平滑系数。为了增加'sigma'的值,滤波器的宽度以及平滑量也随之增加(有关滤波器宽度对Canny滤波器的影响,另请参阅edges_sub_pix)。
建议的值: 0.5,0.7, 0.9,1.0 (默认值), 1.2,1.5
对于带有矩形排列标记的校准板, find_calib_object本质上封装了三个操作员调用的序列:find_caltab,find_marks_and_pose和 set_calib_data_observ_points。对于这种校准板,可以使用GenParamName和 GenParamValue设置以下参数:
'alpha':
提取标记轮廓的平滑系数。用于增加值“阿尔法”,过滤器宽度,从而平滑减小量(也参见edges_sub_pix用于在Lanser2滤波器的滤波器宽度的影响)。
建议的值: 0.5,0.7, 0.9 (默认值), 1.0,1.2,1.5
'gap_tolerance':
标记之间的间隙的公差系数。如果标记之间的距离比预期的更近,则可以将'gap_tolerance'设置为 < 1.0,以避免干扰校准板外部的图案以使其与校准板相关联。如果印版强烈倾斜并放置在暴露标记状图案的背景前面,通常会发生这种情况。如果单个标记之间的距离变化很大,例如,如果校准板在图像中出现强烈的透视失真,则可以将'gap_tolerance' > 1.0设置为对标记进行分组(另请参见find_caltab)。
建议值: 0.75,0.9, 1.0 (默认值), 1.1,1.2,1.5
'max_diam_marks':
标记的最大预期直径(内部需要 find_marks_and_pose)。默认情况下,此值是由之前对find_caltab的内部调用估算的。但是,如果没有明显原因导致估计错误,或者内部调用 find_caltab失败或被简单跳过(请参见 下面的“ skip_find_caltab”),则可能必须调整该值。
建议值: 50.0,100.0, 150.0,200.0, 300.0
'skip_find_caltab':
跳过内部调用到find_caltab。如果激活,则只有Image的域会减少内部调用find_marks_and_pose的搜索范围。因此,可以通过设置'skip_find_caltab' = 'false'并将图像域缩小到用户区域来合并用户定义的校准板 区域。
值列表: 'false' (默认), 'true'
如果使用HALCON校准板作为校正对象,则建议使用find_calib_object代替 set_calib_data_observ_points其中可能的,因为轮廓信息,它存储在所述校准数据模式,使得能够用更精确的校准程序calibrate_cameras。
在成功调用到find_calib_object,所提取的点数可以通过查询get_calib_data_observ_points和提取的轮廓可接get_calib_data_observ_contours。

