• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

听Malcon原作者讲Halcon的形状匹配和灰度匹配


Recommended Posts

https://www.cnblogs.com/Malcon/

我用Halcon快10年了。从那时的Halcon8到现在的Halcon20,我经历了大大小小很多工业视觉应用场景,主要有两种:

第一类:运动控制设备,如激光焊接雕刻、丝网印刷机、贴片机、数控机床等自动化设备。视觉就是模板匹配。先标记斑点,然后在生产中快速匹配形状或灰色模板,定位产品位置,最后进行焊接或粘接工艺。这类设备量产最多,市场上同行竞争激烈。基本是标准机,对模板匹配的速度和精度要求很高。一台机器往往有几个摄像头,十几个轴,所以成本控制非常严格。

第二类:AOI检测设备,如孔检机、PCB、手机玻璃外观检测,目前很多是非标机。光源镜头相机根据客户要求定制,视觉功力更深,基本上是先定位再检验。许多定位方法是形状或灰度匹配。

说了这么多,回到本文的主题,形状和灰度有什么区别或优缺点?Halcon的算子参数怎么设置?分别可以应用在什么场合?市场上其他商用工业软件库的品牌收费和特点是什么?

看中国Malcon与德国Halcon相比的优缺点。

https://blog.csdn.net/lindrs/article/details/114113280

模板匹配功能:

形状匹配,find_shape_model,顾名思义就是用产品的形状来匹配,或者产品的边缘来匹配。Halcon的形状匹配即使在存在严重遮挡、混乱或非线性光照变化的情况下,也能达到非常高的识别率;

灰色匹配,find_ncc_model,就是识别盒子里是什么,不仅是产品的边缘,还有产品本身的内部信息。即使有线性均匀的光照变化,也能识别出来。如果有非线性光照变化,就无法识别。分数很低,有一个相似度公式,比较复杂。这里就不解释了。如果你有兴趣,你可以在网上搜索很多信息。

以及优缺点和应用场合分析:

形状匹配:Halcon的识别算法有公式。在其帮助文档中,总的原则是在制作产品模板时,提取每个边缘点的XY方向信息和梯度值。然后,在制作中,首先计算搜索图中每个点的XY方向信息和梯度值。在每个点的位置上,循环总结并与模板的每个边缘点进行比较,分值在0-1之间。显然,如果有更多的边缘点,就需要更多的时间。因为比较的是模板的边缘点,所以即使产品本身被遮挡,只要提取的边缘大于你设置的分数阈值,仍然可以识别出产品。主要应用场合是有多个产品标识需求时,放在流水线上或传送带上,用机械手抓取。

NCC灰度匹配的公式在很多年前就已经提出来了,而且非常成熟。市面上包括Halcon在内的很多商业软件都含有相应的模块,而且相比形状匹配,一套的价格可以便宜几千块,而且识别速度很快,精度可以达到亚像素。上面提到的第一种设备基本采用灰度匹配,因为它的LED光源光照均匀,即使操作者调暗或调亮光源或者改变摄像头的曝光时间,也能准确识别。做产品的时候,往往只有一个产品,不需要识别遮挡和混淆。有时候如果有遮挡,就说明产品粘在一起了,必须报警,所以根本不可能对上形状。

两者的参数设置:

create _ shape _ model(Template : num levels,AngleStart,AngleExtent,AngleStep,Optimization,Metric,Contrast,MinContrast : ModelID)

create_ncc_model(模板: NumLevels,AngleStart,AngleExtent,AngleStep,Metric : ModelID)

基本上,相同的参数在应用程序设置中具有相同的含义。除了最后一个模板ID被输出,所有其他参数都被输入并被设置。

1.模板,可以从gen_rectangle1()生成一个矩形然后用reduce_domain()得到ROI此图像区域的;

2.NumLevels,金字塔的层数,通常设置为“自动”,由Halcon从模板图像中自动计算。层数太少,耗时,太多,有可能找不到对象;

3.AngleStart,产品搜索的起始角度,以弧度为单位,一般根据产品放置的方向来确定,以向上的12点方向为基准。Halcon的默认参数为-0.39,转换后的角度单位为-0.3960=-24度,即以12点向上方向为基准,逆时针向左24度为识别起始角度;

4.AngleExtent:从起始角度延伸的识别角度的单位也是弧度。Halcon的默认参数是0.79,换算成角度的单位是0.7960=48度。结合刚刚-24度,也就是说设定的识别角度范围是-24-正24,以向上的12点方向为基准。

5.AngleStep:每次识别角度的步长值,单位为弧度,一般设置为‘auto’,由Halcon从模板图像自动计算。步骤太少,耗时,步骤太多,有可能找不到对象;如果要自己设置为0.02,会换算成0.02*60=1.2度的角度单位,即第一次识别为-24度,第二次识别为-22.8度,第三次识别为-21.6度。

6.优化,常规

设为‘auto’,由Halcon自动由模板图像计算出,对于模板尺寸比较大的话,会自动减少模板的候选边缘点,减少内存和加快速度;
7、Metric:设为’use_polarity’,就是产品和背景要跟你做模板时候一样的对比度;设为Ignor_polarity,就是不一样的对比度也能识别出来;
8、Contrast:一般设为‘auto’,决定边缘候选点和最小尺寸的单个的模板部分。
9、MinContrast:一般设为‘auto’,物体是否具有较低的对比度,如果要求物体在任何状态下都能被识别,则应减小MinContrast值;
10、ModelID:模板的ID号,一般从0开始,创建后由FindModel来调用;

find_shape_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap,SubPixel, NumLevels, Greediness : Row, Column, Angle, Score)
find_ncc_model(Image : : ModelID, AngleStart, AngleExtent, MinScore, NumMatches, MaxOverlap,SubPixel, NumLevels : Row, Column, Angle, Score)
以上的参数除了最后的4个是输出的YX角度分数信息外,其他的参数都是要输入的,
1、Image:搜索图,可能包含多个产品;
2、ModelID:之前创建的模板的ID号;
3、AngleStart, AngleExtent,跟以上的创建模板的一样的解释;
4、MinScore:要识别的最小的分数值,0-1的范围,0越不像,1越像;
5、NumMatches:要识别的对象的个数,Halcon会将识别出来的多个对象的分数值进行从高到低的排序,只有大于设定的最小分数值的对象才能识别出来;
6、MaxOverlap:最大的重叠的范围,由模板的最小紧贴的有角度的包含的矩形来计算重合范围;
7、SubPixel:默认设为:‘least_squares’,如果不需要太高精度,设为none,坐标就没有小数点,设为interpolation,有小数点,就是多项式拟合出来的结果,不会占用太多时间,设为’least_square’,’lease_square_high’,精度最高但这样会增加额外的时间;
8、NumLevels是在搜索时使用的金字塔层数,如果NumLevels=0,使用创建模板时金字塔的层数。另外NumLevels还可以包含第二个参数,这个参数定义了找到匹配模板的最低金字塔层数。NumLevels=[4,2]表示匹配在第四层金字塔开始,在第二层金字塔找到匹配(最低的设为1)。
9、Greediness :默认0.9,搜索时的“贪婪程度”,Halcon作者说如果设置Greediness=0.9,在几乎所有的情况下,总能找到模型的匹配。设置的越小,越早退出判断的循环,越有可能找不到对象。
10、Row, Column,出来的YX坐标,可以包含多个对象
11、Angle, 出来的角度坐标,单位为弧度,由三点钟方向为基准,顺时针为正,逆时针为负;
12、Score:0-1的识别出来的分数值,0越不像,1越像;
最后退出程序或者更换品种,记得ClearShapeModel或者ClearNccModel一下;

市场上商用的其他工业软件库品牌收费和特点怎样呢?
Halcon:形状和灰度分别大概5K左右,只是运行版本;
MIL:形状5K,灰度2K;
Cognex:大概多少,得问下…
Malcon:性价比最高。

Link to comment
Share on other sites