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将这些坐标投影到图像坐标系中;

相关推荐
进哥AI研习社13 小时前
从像素到3D开放世界:Kimi K3在游戏开发中的引擎级能力实测
3d
小宇的天下13 小时前
3D IC 与 TSV:设计挑战与需求
3d
W_3260020 小时前
Python-OpenCV:库、环境搭建、图片与摄像头解析
开发语言·图像处理·python·opencv·机器学习
W_3260020 小时前
Python-OpenCV:画布、图形、文字、调色滑动条
图像处理·python·opencv·机器学习·计算机视觉
杀生丸学AI2 天前
【稀疏重建】StructSplat:基于非校准稀疏视图的可泛化3DGS
深度学习·3d·音视频·transformer·三维重建·空间智能
蓝速科技2 天前
蓝速科技 3D 全息舱 AI 数字人一体机全尺寸选型实测指南
人工智能·科技·3d
AndrewHZ2 天前
图像处理入门006:图像质量评价三剑客:PSNR / SSIM / MSE 原理与代码实战
图像处理·计算机视觉·cv·psnr·rse·ssim
AndrewHZ3 天前
图像处理入门(第005期):颜色空间入门——RGB/HSV/CMYK/Lab
图像处理·python·opencv·hsv·rgb·色彩空间
雨田哥3 天前
3D 数字人的成长养成记
3d·数字人·3d数字人·陪伴·数伴·成长养成·3d数伴
天空之城--3 天前
Claude Code 高效开发 Web 2D/3D 完全指南:心法、自定义 Skill 体系与社区技能包实战
前端·3d