halcon三维点云数据处理(九)create_shape_model_3d_ignore_part_polarity

目录

一、create_shape_model_3d_ignore_part_polarity例程代码

这个示例程序展示了如何使用基于形状3D匹配来计算瓷砖垫片的3DPose。因为背景是强纹理的,设置'ignore_part_polarity'可以加快查找速度。

下面是create_shape_model_3d_ignore_part_polarity例程代码,我只保留了重要的处理部分。

csharp 复制代码
gen_cam_par_area_scan_division (0.0269462, -354.842, 1.27964e-005, 1.28e-005, 254.24, 201.977, 512, 384, CamParam)

acquire_shape_models (WindowHandle, CamParam, ShapeModel3DID1, ShapeModel3DID2)

* 
MatchingParameters := ['num_matches', 'pose_refinement']
MatchingParameterValues := [2, 'least_squares_high']
MinScore := 0.65
Greediness := 0.9
NumLevels := 0
* 
* Matching loop
NumImages := 9
for I := 1 to NumImages by 1
    read_image (Image, 'tile_spacers/tile_spacers_' + I$'02')

    find_shape_model_3d (Image, ShapeModel3DID1, MinScore, Greediness, NumLevels, MatchingParameters, MatchingParameterValues, Pose, CovPose, Score1)

    for J := 0 to |Score1| - 1 by 1
        PoseTmp := Pose[J * 7:J * 7 + 6]
        project_shape_model_3d (ModelContours, ShapeModel3DID1, CamParam, PoseTmp, 'true', rad(30))
        dev_display (ModelContours)
    endfor

    find_shape_model_3d (Image, ShapeModel3DID2, MinScore, Greediness, NumLevels, MatchingParameters, MatchingParameterValues, Pose, CovPose, Score2)
   
    for J := 0 to |Score2| - 1 by 1
        PoseTmp := Pose[J * 7:J * 7 + 6]
        project_shape_model_3d (ModelContours, ShapeModel3DID1, CamParam, PoseTmp, 'true', rad(30))
        dev_display (ModelContours)
    endfor
  
endfor

二、代码理解

create_shape_model_3d函数的参数'metric' :

'metric' = 'ignore_part_polarity':只允许在模型的不同部分之间更改对比极性,而在相同模型部分内的模型点的极性不得更改。同一模型组件内的模型点的极性是相同的,如果图像包含有强烈纹理的背景或杂乱的对象,则应该使用ignore_part_polarity指标。只可以单通道图像。

'metric' = 'ignore_local_polarity':即使每个单独的模型点的对比极性发生变化,也可以找到模型。该指标适用于单通道图像和多通道图像。既可以单通道图像,也可以多通道图像。

请注意,通常情况下,find_shape_model_3d返回的匹配分数"ignore_part_polarity"比"ignore_local_polarity"要低。

find_shape_model_3d函数得到的Pose:它描述了三维物体模型在摄像机坐标下的姿态。ccs为摄像机坐标系,mcs为模型坐标系(即3D世界坐标系)。

project_shape_model_3d( : ModelContours : ShapeModel3DID, CamParam, Pose, HiddenSurfaceRemoval, MinFaceAngle : ) 将三维形状模型的边缘投影到图像坐标中。这里的输入参数Pose,是find_shape_model_3d函数得到的。给出三维物体模型在三维世界坐标系(mcs)中的坐标。首先,利用Pose给定的外部摄像机参数将它们转换到摄像机坐标系(ccs);然后,根据相机内部参数CamParam将这些坐标投影到图像坐标系中;

相关推荐
加油吧zkf1 小时前
Conda虚拟环境管理:从入门到精通的常用命令
图像处理·深度学习·计算机视觉·conda
云空3 小时前
《PyQt6-3D应用开发技术文档》
3d·pyqt
PyAIExplorer4 小时前
图像处理中的边缘填充:原理与实践
图像处理·人工智能
鹧鸪云光伏9 小时前
光伏无人机3D建模:毫秒级精度设计
3d·无人机
杀生丸学AI11 小时前
【三维生成】FlashDreamer:基于扩散模型的单目图像到3D场景
人工智能·3d·大模型·aigc·蒸馏与迁移学习·扩散模型与生成模型
千宇宙航21 小时前
闲庭信步使用图像验证平台加速FPGA的开发:第六课——测试图案的FPGA实现
图像处理·计算机视觉·fpga开发
gis分享者1 天前
学习threejs,使用自定义GLSL 着色器,生成漂流的3D能量球
3d·threejs·着色器·glsl·shadermaterial·能量球
m0_743106461 天前
【论文笔记】BlockGaussian:巧妙解决大规模场景重建中的伪影问题
论文阅读·计算机视觉·3d·aigc·几何学
PyAIExplorer1 天前
图像处理中的凸包检测:原理与实现
图像处理·人工智能
AndrewHZ1 天前
【图像处理基石】如何检测到画面中的ppt并对其进行增强?
图像处理·人工智能·pytorch·opencv·目标检测·计算机视觉·图像增强