当前位置:网站首页>Halcon知识:盘点一下计量对象【1】
Halcon知识:盘点一下计量对象【1】
2022-06-30 19:48:00 【无水先生】
一、提要
计量对象是解决测量问题的对象,通过该对象的微观测量,经拟合获得精确的亚像素级别的测量。其中包括平行直线的距离、圆的半径、椭圆的长短半径等。
二、模型生成和设定
2.1 模型生成
create_metrology_model
创建测量几何形状所需的数据结构。
- create_metrology_model( : : : MetrologyHandle)
生成一个计量对象,没有设定内容。
通常,对于二维计量,必须提供要测量的对象的位置、方向和几何形状的近似值。在显示对象的图像中,这些近似对象的边界用于定位对象的真实边缘,以适应几何形状的参数,使它们与图像数据最佳匹配。测量的结果是优化的参数。计量模型用于存储所有必要的信息,例如计量对象的位置和几何形状的初始参数、控制测量的参数以及测量结果。可以通过二维计量测量的几何形状包括圆形、椭圆形、矩形和直线。
图像中对象的边缘位于所谓的测量区域内。这些是垂直于近似对象的边界排列的矩形区域,因此它们的中心位于边界上。调整测量区域的尺寸和分布的参数与每个计量对象的近似形状参数一起指定。
应用测量时,使用 RANSAC 算法确定所有测量区域内的边缘位置并将其拟合到几何形状。
(关于 RANSAC 算法的原理在文:机器视觉:ransac算法详解中有详细说明 )
计量模型包含 7 个计量对象,显示为蓝色轮廓。使用位于每个计量对象的测量区域(灰色矩形)内的边缘(青色十字),拟合几何形状(绿色轮廓)并测量其参数。如圆形类型的计量对象所示,可以找到多个计量对象的实例。

首先,使用 create_metrology_model 创建计量模型数据结构,用作一个或多个计量对象的容器。之后,应使用 set_metrology_model_image_size 指定将执行测量的图像的图像大小,以进行有效测量。
2.2 尺寸设定
set_metrology_model_image_size
- set_metrology_model_image_size( : : MetrologyHandle, Width, Height : )
set_metrology_model_image_size 用于设置或更改将执行与计量模型相关的边缘检测的图像的大小(有关 2D 计量的基本原理,请参见 create_metrology_model)。计量模型由句柄 MetrologyHandle 定义。
图像宽度必须由参数 Width 指定。图像高度必须由参数Height 指定。如图,就是用于测量的小矩形的长度、宽度。

2.3 align_metrology_model定义测量的对其角
- align_metrology_model( : : MetrologyHandle, Row, Column, Angle : )
align_metrology_model 相对于原点位于左上角的图像坐标系移动和旋转整个计量模型 MetrologyHandle。对齐确保计量模型的位置和方向适应当前图像中要测量的对象。然后 apply_metrology_model 使用对齐来执行测量。首先计量模型按角度旋转,然后计量模型按行和列平移。对齐的值被下一次调用 align_metrology_model 覆盖。
2.4 apply_metrology_model
- apply_metrology_model(Image : : MetrologyHandle : )
apply_metrology_model 在 Image 内定位计量模型 MetrologyHandle 的计量对象的测量区域内的边缘,并将相应的几何形状拟合到生成的边缘位置(参见 create_metrology_model 了解 2D 计量的基本原理)。测量目标 如下:
1)确定边缘位置
在计量对象的测量区域内,确定边缘的位置。边缘位置是在内部使用算子 measure_pos 或 blur_measure_pos 计算的。如果使用 set_metrology_object_fuzzy_param 为计量对象设置了至少一个模糊函数,则使用后者。
2)将几何形状拟合到边缘位置
计量对象的几何形状被调整以最佳地适应产生的边缘位置。特别是,RANSAC 算法用于选择一组初始边缘位置,这是创建特定几何形状的实例所必需的,例如,为圆形类型的计量对象选择三个边缘位置。然后,确定几何形状的相应实例附近的那些边缘位置,如果合适的边缘位置数量足够(参见 set_metrology_object_param 的通用参数“min_score”),则选择几何形状的最终拟合.如果合适的边缘位置的数量不够,则测试另一组初始边缘位置,直到找到合适的边缘位置选择。在为最终拟合选择的边缘位置中,拟合几何形状并将其参数存储在计量模型中。请注意,如果通用参数“num_instances”设置为大于 1 的值,则为每个计量对象返回多个实例。可以在将计量对象添加到计量模型时设置此参数和其他参数,也可以使用运算符 set_metrology_object_param 单独设置。请注意,对于计量对象的每个实例,使用不同的初始边缘位置,即,第二个实例基于尚未用作初始边缘位置来计算第一个实例的边缘位置。当找到“num_instances”实例时,或者如果合适的初始边缘位置的剩余数量太少而无法进一步拟合几何形状,该算法就会停止。
3)访问结果
可以使用 get_metrology_object_result 从计量模型访问测量结果。请注意,如果返回一个对象的多个实例,则返回实例的顺序是任意的,因此无法衡量拟合的质量。进一步注意,如果使用 set_metrology_model_param 为计量模型设置参数“camera_param”和“plane_pose”,则使用世界坐标进行拟合。否则,使用图像坐标。可以使用 get_metrology_object_result_contour 获得测量对象的 XLD 轮廓。
(后续内容)
add_metrology_object_generic
get_metrology_object_model_contour,
set_metrology_model_param,
add_metrology_object_circle_measure,
add_metrology_object_ellipse_measure,
add_metrology_object_line_measure
边栏推荐
- 静态类使用@Resource注解注入
- Audio and video architecture construction in the super video era | science and Intel jointly launched the second season of "architect growth plan"
- 为什么数字化转型战略必须包括持续测试?
- 【450. 删除二叉搜索树中的节点】
- Conditional compilation
- How unity pulls one of multiple components
- Client请求外部接口标准处理方式
- mysql主从同步
- matlab Delaunay 三角剖分内的查询点
- 广州股票开户选择手机办理安全吗?
猜你喜欢

Kubevela 1.4: make application delivery safer, easier to use, and more transparent

8 - 函数

GeoServer安装

盘点华为云GaussDB(for Redis)六大秒级能力

闲鱼难“翻身”

数据智能——DTCC2022!中国数据库技术大会即将开幕

派尔特医疗在港交所招股书二次“失效”,上市计划实质性延迟

Smarter! Airiot accelerates the upgrading of energy conservation and emission reduction in the coal industry

Cv+deep learning network architecture pytoch recurrence series basenets (backbones) (I)

PostgreSQL heap堆表 存储引擎实现原理
随机推荐
Conditional compilation
当我们在看待产业互联网的时候,总是会站在消费互联网的对立面来看待它
KubeVela 1.4:让应用交付更安全、上手更简单、过程更透明
8 - function
太湖 “中国健康农产品·手机直播万里行”走进太湖
新出生的机器狗,打滚1小时后自己掌握走路,吴恩达开山大弟子最新成果
pytorch实现FLOPs和Params的计算
正则系列之字符类
PS2手柄-1「建议收藏」
无线充U型超声波电动牙刷方案开发
开会,OneMeeting,OK!
腾讯会议应用市场正式上线,首批入驻超20款应用
屏幕显示技术进化史
discuz 论坛提速之删除data/log下的xxx.php文件
MySQL数据库查询优化
今早,投资人开始集体出差
C语言:hashTable
matlab 将三角剖分结果保存为STL文件
建立自己的网站(20)
Heartbeat 与DRBD 配置过程