设为首页收藏本站
授权版本:2024_07
开启左侧

find_shape_model、find_scaled_shape_model等模板匹配算子返回的结果是基于标准坐标

[复制链接]
麦田呐喊 发表于 2023-10-31 19:48:32 | 显示全部楼层 |阅读模式
模板匹配算子返回的row、column是基于标准坐标系的还是非标准坐标系呀?
这是做的一个测试:

edges_sub_pix (ImageReduced, Edges, 'canny', 1, 20, 40)
area_center_xld (Edges, Area, Row1, Column1, PointOrder)

create_shape_model_xld (Edges, 'auto', rad(-90), rad(90), 'auto', 'auto', 'ignore_local_polarity', 5, ModelID)
find_shape_model (ImageReduced, ModelID, rad(-90), rad(90), 0.5, 2, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)

发现Row1, Column1Row, Column分别是(108.5,107.5)和(108.499,107.499),已知area_center_xld返回的是标准坐标系下的,是不是可以说明find_shape_model 返回的row和col也是标准坐标系下的?




奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
halcon2016 发表于 2023-11-1 10:42:31 | 显示全部楼层
1、area_center_xld 求出的中心并不是模板的中心,你这是巧合,是特殊情况,模板中心的定义请查看create_shape_model_xld 算子说明
2、find_shape_model 返回edge centered coordinates,也就是非标准坐标系,参见C:/Program Files/MVTec/HALCON-23.05-Progress/doc_en_US/html/reference/operators/toc_transformations_2dtransformations.html
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 麦田呐喊 发表于 2023-11-1 11:35:19 | 显示全部楼层
halcon2016 发表于 2023-11-1 10:42
1、area_center_xld 求出的中心并不是模板的中心,你这是巧合,是特殊情况,模板中心的定义请查看create_sh ...

好的,谢谢。我看到很多案例中在使用vector_angle_to_rigid时都是用0,0作为起始点,(0,0)实际上是模板中心的坐标吧?因为get_shape_model_origin获得的坐标就是(0,0) ,因为模板匹配的结果row,col是非标准坐标,vector_angle_to_rigid用来计算的两组坐标应该是同一坐标系下的,那get_shape_model_origin获得的坐标也是非标准坐标系下的吗
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
halcon2016 发表于 2023-11-1 13:39:48 | 显示全部楼层
默认是将模板中心定义为(0,0),至于模板中心是如何规定和计算的,创建模板的算子都是有说明的,基于图像的模板和基于xld的模板是有所不同的。 而get_shape_model_origin获得的是相对于默认模板中心的偏移,默认情况模板中心没有偏移,所以获得的是(0,0),但如果用了set_shape_model_origin 那就不是(0,0)了。get_shape_model_origin是标准坐标系下的,是相对值
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 麦田呐喊 发表于 2023-11-1 14:57:28 | 显示全部楼层
halcon2016 发表于 2023-11-1 13:39
默认是将模板中心定义为(0,0),至于模板中心是如何规定和计算的,创建模板的算子都是有说明的,基于图像 ...

谢谢解答!我看了创建模板的算子,里面关于中心的信息就一句话带过了:The center of gravity of the domain (region) of the model image Template is used as the origin (reference point) of the model.
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| 麦田呐喊 发表于 2023-11-1 15:02:47 | 显示全部楼层
halcon2016 发表于 2023-11-1 13:39
默认是将模板中心定义为(0,0),至于模板中心是如何规定和计算的,创建模板的算子都是有说明的,基于图像 ...

"模板中心定义为(0,0)"请问(0,0)是在非标准坐标系下的,还是非标准坐标系下的?
get_shape_model_contours (ModelContours, ModelID, 1)
find_shape_model (ImageCleared, ModelID, rad(0), rad(120), 0.5, 2, 0.5, 'least_squares', 0, 0.9, Row, Column, Angle, Score)
for Index := 0 to 1 by 1
    vector_angle_to_rigid (0, 0, 0, Row[Index], Column[Index], Angle[Index], HomMat2D)
    affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2D)
endfor

有时候轮廓能和被测物体重合,有时候又不能。不知道什么时候要用hom_mat2d_translation和hom_mat2d_translation_local
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
halcon2016 发表于 2023-11-1 16:56:39 | 显示全部楼层
1、非标准
2、不吻合有可能是定位不准或者物体本身有差异
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表