多视角立体

算子列表 ↓

本章包含用于多视角三维重建的算子。

多视角三维重建概念

通过多视角三维重建技术,可利用多台相机拍摄的二维图像生成三维对象。该技术既能重建对象的完整三维表面,也能重建单个三维点。

以下简要描述了重建表面和点所需的步骤。请注意,精确的三维重建主要依赖于经过良好校准的相机设置;更多细节请参阅 标定 部分。此外,在HDevelop示例 reconstruct_surface_mixed_camera_types.hdev 中,执行了典型的标定工作流程(从标定数据模型经相机设置模型到立体模型)。

生成立体模型:

首先,创建立体模型,使用算子

若需重建三维点,请选择 MethodMethodMethodMethodmethodmethod 'points_3d'"points_3d""points_3d""points_3d""points_3d""points_3d" 方法。

使用 'points_3d'"points_3d""points_3d""points_3d""points_3d""points_3d" 进行三维点重建。

对于表面重建,可使用 'surface_pairwise'"surface_pairwise""surface_pairwise""surface_pairwise""surface_pairwise""surface_pairwise"'surface_fusion'"surface_fusion""surface_fusion""surface_fusion""surface_fusion""surface_fusion" 两种方法。有关这两种方法的详细信息,请参阅 reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereoReconstructSurfaceStereoreconstruct_surface_stereo 的参考手册条目。

( 1) ( 2) ( 3)
这三幅二维图像用于表面重建,如下图所示。
( 1) ( 2) ( 3)
(1) 使用 'surface_pairwise'"surface_pairwise""surface_pairwise""surface_pairwise""surface_pairwise""surface_pairwise" 进行表面重建。(2) 使用 'surface_fusion'"surface_fusion""surface_fusion""surface_fusion""surface_fusion""surface_fusion" 进行表面重建。(3) 使用 'surface_fusion'"surface_fusion""surface_fusion""surface_fusion""surface_fusion""surface_fusion" 进行表面重建,其中颜色信息从使用的二维图像中提取。请参阅 HDevelop 示例 reconstruct_surface_mixed_camera_types.hdev 以查看三维重建过程。
设置图像对(仅用于表面重建):

对于三维表面的重建,需执行多次双目立体重建操作,随后进行融合处理。双目重建过程中需指定图像对。例如,针对上图所示的三幅图像,可能的图像对组合为 [0,1][1,2]。必须指定图像对,使用算子

并查询图像对通过

有关更多信息,请参阅 reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereoReconstructSurfaceStereoreconstruct_surface_stereo 以及上述算子。

修改立体模型参数:

通过

您可以优化三维重建设置以适应您的设备配置。

在重建表面时,强烈建议使用尽可能紧贴待重建对象的边界框来限制三维重建范围。

边界框通过 set_stereo_model_paramset_stereo_model_paramSetStereoModelParamSetStereoModelParamSetStereoModelParamset_stereo_model_param 设置,用于限制对象重建的区域,从而可大幅缩短运行时间。

create_stereo_modelcreate_stereo_modelCreateStereoModelCreateStereoModelCreateStereoModelcreate_stereo_model 中使用 'surface_fusion'"surface_fusion""surface_fusion""surface_fusion""surface_fusion""surface_fusion" MethodMethodMethodMethodmethodmethod 方法时,建议先优化 'surface_pairwise'"surface_pairwise""surface_pairwise""surface_pairwise""surface_pairwise""surface_pairwise" MethodMethodMethodMethodmethodmethod 方法的参数,因为该方法作为基础方法。有关参数的详细信息,请参阅示例文件 reconstruct_surface_stereo_pairwise_workflow.hdevreconstruct_surface_stereo_fusion_workflow.hdev

您可以查询已设置的参数,通过算子

执行三维重建:

然后,要执行实际的重建,使用算子

获取中间结果(仅用于表面重建):

请注意,要查询这些中间结果,必须在执行重建前使用 set_stereo_model_paramset_stereo_model_paramSetStereoModelParamSetStereoModelParamSetStereoModelParamset_stereo_model_param 为立体模型启用 'persistence'"persistence""persistence""persistence""persistence""persistence" 模式。

通过

可访问并检查使用 reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereoReconstructSurfaceStereoreconstruct_surface_stereo 执行的表面重建的中间结果。这些图像可用于排查重建过程中的问题。

通过

可获取使用 reconstruct_surface_stereoreconstruct_surface_stereoReconstructSurfaceStereoReconstructSurfaceStereoReconstructSurfaceStereoreconstruct_surface_stereo 重建的三维对象模型,该模型作为中间结果通过 'surface_fusion'"surface_fusion""surface_fusion""surface_fusion""surface_fusion""surface_fusion" MethodMethodMethodMethodmethodmethod 方法生成。


算子列表

clear_stereo_modelClearStereoModelclear_stereo_modelClearStereoModelclear_stereo_model清除立体模型
释放立体模型的内存。
create_stereo_modelCreateStereoModelcreate_stereo_modelCreateStereoModelcreate_stereo_model创建立体模型
创建HALCON立体模型。
get_stereo_model_image_pairsGetStereoModelImagePairsget_stereo_model_image_pairsGetStereoModelImagePairsget_stereo_model_image_pairs获取立体模型图像对
返回在立体模型中设置的图像对列表。
get_stereo_model_objectGetStereoModelObjectget_stereo_model_objectGetStereoModelObjectget_stereo_model_object获取立体模型对象
获得立体重建的中间图标结果。
get_stereo_model_object_model_3dGetStereoModelObjectModel3dget_stereo_model_object_model_3dGetStereoModelObjectModel3dget_stereo_model_object_model_3d获取立体模型对象模型三维
获取立体重建的中间三维对象模型。
get_stereo_model_paramGetStereoModelParamget_stereo_model_paramGetStereoModelParamget_stereo_model_param获取立体模型参数
获取立体模型参数。
reconstruct_points_stereoReconstructPointsStereoreconstruct_points_stereoReconstructPointsStereoreconstruct_points_stereo重建点立体
从校准的多视角立体图像重建三维点。
reconstruct_surface_stereoReconstructSurfaceStereoreconstruct_surface_stereoReconstructSurfaceStereoreconstruct_surface_stereo重建表面立体
从校准的多视角立体图像重建表面。
set_stereo_model_image_pairsSetStereoModelImagePairsset_stereo_model_image_pairsSetStereoModelImagePairsset_stereo_model_image_pairs设置立体模型图像对
指定用于表面立体重建的图像对。
set_stereo_model_paramSetStereoModelParamset_stereo_model_paramSetStereoModelParamset_stereo_model_param设置立体模型参数
设置立体模型参数。