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

相关推荐
zl_vslam4 小时前
SLAM中的非线性优-3D图优化之相对位姿Between Factor位姿图优化(十三)
人工智能·算法·计算机视觉·3d
军军君016 小时前
Three.js基础功能学习五:雾与渲染目标
开发语言·前端·javascript·学习·3d·前端框架·three
资讯雷达6 小时前
工业扫描选型指南:蓝光 3D 扫描仪哪个品牌更靠谱?
3d
航Hang*7 小时前
Photoshop 图形与图像处理技术——第6章:通道与蒙版的应用
图像处理·笔记·ui·photoshop
一起搞IT吧10 小时前
三方相机问题分析十一:【手电筒回调异常】手电筒打开3档时,达到档位控制温度,手电筒二级界面中档位为0
android·图像处理·数码相机
YAY_tyy1 天前
Turfjs+Three.js:地理数据的三维建模应用
前端·javascript·3d·arcgis·turfjs
夏日白云1 天前
《PDF解析工程实录》第 12 章|别让模型贴着墙走:为什么加一圈空白,效果反而更好?
图像处理·机器学习·pdf·llm·大语言模型·rag·文档解析
da_vinci_x1 天前
【游戏场景】手绘贴图“接缝”地狱?PS 智能平铺流,3步量产无缝地砖
游戏·3d·prompt·aigc·贴图·技术美术·游戏美术
鲨莎分不晴1 天前
视觉的艺术与科学:一眼看懂真彩色、假彩色与伪彩色
图像处理
gshh__1 天前
SuperMap Hi-Fi 3D SDK for Unreal 读取矢量面进行多区域地形开挖
3d