Halcon基础算子
1、difference算子
*difference的运算逻辑
*先计算两个区域的交集
*1.如果有交集,结果为第一个区域减去交集
*2.如果没有交集,结果为第一个区域
2、union1/2算子
1.union1
union1()——把所有的输入区域合并为一个区域
函数原型:union1(Region : RegionUnion : : )
功能:函数将Region元组内的全部区域合并成一个独立的区域,保存于RegionUnion
参数:
Region (input_object) ——要计算其并集的区域,也就是一个个的输入区域
RegionUnion (output_object) ——所有输入区域的并集
要素数: RegionUnion <= Region
2.union2
union2()——将两个区域合并成一个整体,仅限两个
函数原型:union2(Region1(输入), Region2(输入) : RegionUnion(输出) : : )
功能:将Region2 和Region1元组内的区域合并成一个独立的区域保存于RegionUnion 。把第二个参数Region2里的所有区域合并,然后将合并后的区域分别与Region1中的每一个区域进行合并,然后保存到RegionUnion 中。最后,RegionUnion 元素个数与Region1元素个数相同。
参数:
Region1 (input_object) ——要与Region2中的所有区域的并集计算的区域
Region2 (input_object) ——要添加到Region1的区域
RegionUnion (output_object) ——最终得到的区域
要素数::RegionUnion == Region1
concat_obj是将两个区域组合到一起
3、fill_up算子
算子:fill_up(Region : RegionFillUp : : )
功能:填充区域中的孔或和缝等将输入区域的孔,缝隙进行填充,形成新的完成区域。
输入参数:Region输入含孔(缝隙)的区域
输出参数:RegionFillUp: 输出一个布满缝隙及孔的区域
算子:fill_up_shape(Region : RegionFillUp : Feature, Min, Max : )
功能:fill_up_shape会填充输入区域Region中具有给定形状特征的那些孔。 参数特征确定要使用的形状特征
4、Halcon基于灰度值的模板匹配
基于灰度值的模板匹配适用于图像内灰度变化比较稳定,噪声比较少,且灰度差异比较明显的检测目标。这是一种不太推的匹配方法,因为该方法复杂度高,一次只能检测一个目标,耗时,且对光照和尺寸变化十分敏感。如果要使用该方法进行匹配,一般有如下步骤。
(1)使用create_temple算子或create_temple_rot算子创建一个模板。相比前者,后者多了一个允许的旋转角度,可使目标图像在旋转后也能被拽索到。在创建模板时,可以设置GrayValue参数为original。create_temple算子原型如下:
create _template(Template : : FirstError, NumLevel, Optimize, GrayValues : TemplateID)
(1)Template 是输入参数,表示准备好的模板图像。FirstError 是一个无用的参数,默认为255。NumLevel 表示匹配金字塔的层级数,默认为4。Optimize 表示优化的方法类型,可以选择sort,表示进行优化,这样匹配时间会稍微长一点,结果也会更稳定一些;也可以选择none,表示不进行任何优化。参数GrayValues 决定了使用原始图像的灰度还是使用边缘梯度进行匹配。可选的有gradient、 normalized、original、sobel,其含义可以从字面上理解。如果光照情况比较稳定,图像灰度变化不大,就可以选择original,即使用原始灰度差值作为匹配的判断条件;如果光照变化比较大,建议放弃使用基于灰度值的匹配,可以考虑使用基于相关性的匹配。
(2)创建模板之后,将返回一个模板的句柄TemplateID。接着可以使用各种匹配算子进行灰度的匹配,如best_match算子和fast_match算子,以及它们的多种衍生版本,即带变量的算子,如best_match_mg 算子、best_match_pre_mg算子、best_match_rot 算子、fast_match_mg 算子等。best_match算子返回的是匹配结果最好的目标的坐标位置,而fast_match算子返回的是包含所有点的一个区域。
后级为mg变量的算子,如best_match_mg 算子和fast_match_mg算子,表示其是在图像金字塔上进行匹配的;best_matchpre_mg算子则表示使用了预训练的金字塔,在算子的参数列表中可以设置金字塔的层级等参数。带rot的算子,如best_match_rot算子,表示检测图像可以旋转一定的角度,该角度的起始范围可以在best_match_rot算子的参数中设置。
(3)使用clear_template 算子释放模板资源。