首页 > 其他分享 >Halcon中区域的Roundness和Circularity特征的区别

Halcon中区域的Roundness和Circularity特征的区别

时间:2024-07-10 19:20:51浏览次数:8  
标签:Circularity false WindowHandle Halcon 区域 Roundness image

 

 

在Halcon中,区域的特征Roundness(圆度)Circularity(圆度)虽然都用于描述区域与圆形之间的相似程度,但它们在计算方法和应用上存在一些区别。还是从帮助文档着手:

 

1、Roundness(圆度)

 

机翻:

 

  • 计算方法:Roundness通常通过计算区域轮廓上各点到区域中心的平均距离(Distance)与这些距离的标准差(Sigma)之间的关系来得到。这种计算方法更多地考虑了轮廓点到中心的分布情况(即侧重于轮廓的均匀性),从而评估区域形状的圆形程度;Roundness值越接近1,表示区域的形状越接近圆形。

 

帮助文档中还列举出了计算公式,但是比较复杂,难以用Halcon脚本来复现:

 

虽然搞不太清楚,但是没有关系,我研究以后发现特征筛选中使用“Circularity”来筛选,可能更符合常见项目的筛选目的。

 

2、Circularity(圆度)

 

  • 计算方法:Circularity通常是通过区域的面积(F)近似最小外接圆的面积比值来计算。Circularity值越接近1,表示区域的形状越接近圆形。

 

帮助文档中描述了它的计算方法:

 

上图公式中,max是区域中心点到轮廓所有像素的最大距离,所以(max^2 * π)差不多近似等于区域最小外接圆的面积

 

写了这么多,其实还是不太容易看出Roundness和Circularity在应用中的区别,我写一个脚本程序让大家直观地看出这2个特征的差异:

 

 1 dev_set_draw ('margin')
 2 dev_set_line_width (1)
 3 dev_get_window (WindowHandle)
 4 set_display_font (WindowHandle, 15, 'Courier', 'true', 'false')
 5 
 6 read_image (Image, '各种图形.png')
 7 threshold (Image, Region, 0, 55)
 8 opening_circle (Region, RegionOpening, 1) //去掉可能的毛刺
 9 connection (RegionOpening, ConnectedRegions)
10 *将多个轮廓按“column”从左到右排列
11 sort_region (ConnectedRegions, SortedRegions, 'first_point', 'true', 'column')
12 
13 *获得Roundness、Circularity属性值
14 roundness (SortedRegions, Distance, Sigma, Roundness, Sides)
15 circularity (SortedRegions, Circularity)
16 
17 dev_display (Image)
18 disp_message (WindowHandle, 'Roundness:', 'image', 30, 5, 'red', 'false')
19 disp_message (WindowHandle, 'Circularity:', 'image', 90, 5, 'red', 'false')
20 disp_message (WindowHandle, '计算近似值:', 'image', 120, 5, 'black', 'false')
21 
22 
23 for i := 0 to |Roundness|-1 by 1
24     *两值差异>30%的,用蓝色字显示
25     bili := abs(Roundness[i] - Circularity[i]) / max2(Roundness[i] , Circularity[i])
26     if (bili > 0.3)
27         color := 'blue'
28     else
29         color := 'black'
30     endif
31     disp_message (WindowHandle, Roundness[i] $'.2f',   'image', 30,  168 + 104 * i, color, 'false')
32     disp_message (WindowHandle, Circularity[i] $'.2f', 'image', 90, 168 + 104 * i, color, 'false')
33     
34     select_obj (SortedRegions, CurrentRoi, i + 1)
35     gen_contour_region_xld (CurrentRoi, Contours, 'border')
36     area_center (CurrentRoi, Area, Row, Column)
37     distance_pc (Contours, Row, Column, DistanceMin, DistanceMax)
38     
39     * 公式:C1 = F / (max * max * π)
40     C1 := Area /(DistanceMax * DistanceMax * 3.14159)  
41     C := min2(1, C1)
42     
43     disp_message (WindowHandle, '(' + C $'.2f' + ')', 'image', 125, 159 + 104 * i, color, 'false')
44 endfor

 

 

上图可以看出,用公式“C1 = F / (max * max * π)”计算出的Circularity值(C1),与算子“circularity (SortedRegions, Circularity)”得出的值基本相同。也就验证了该公式的解读是正确的。

 

同时可以得出结论:

 

① 缺陷检测项目使用blob分析时,如果想用圆度来筛选圆形的斑点,使用特征Circularity显然更加合理;

 

② 至于Roundness特征,当区域是“正方形、窄边圆环、N角星”时,Roundness都很接近1,但是它们显然不像“圆形斑点”;

 

③ “窄边圆环”的Circularity值很小、Roundness值很大,这一规律有助于识别出“窄边圆环”。

 

标签:Circularity,false,WindowHandle,Halcon,区域,Roundness,image
From: https://www.cnblogs.com/xh6300/p/18294841

相关文章

  • Halcon学习笔记——Day1
    题外话:最近因为项目需要halcon,所以开始学习一下halcon,顺便记录一下学习的笔记,如果感兴趣就给个关注,后续我会持续更新关于halcon的学习笔记;一、视觉包含的学科:1、数学2、软件3、图像4、光学5、控制6、电气二、视觉需求1、识别定位2、测量(2D、3D)3、缺陷(外观检测)......
  • Halcon学习笔记(3):WPF 框架搭建,MaterialDesign+Prism
    目录前言环境Nuget安装新建WPF类库项目初始化PrismApp启动页初始化重写MainView前言其实我更喜欢CommunityToolkit.mvvm+HandyControl。但是因为找工作,你不能去抗拒新事物。这里就当体验一下完整的流程好了。环境windows11.netcore8.0Nuget安装新建WPF类库项目新......
  • Halcon 学习笔记(2):Halcon+WPF导入
    目录前言.netcore8.0.netcore8.0新功能,打开文件夹和打开文件HSmartWindowControlWPFSystem.Drawing.Common重置拉伸关闭拖拽和缩放文件导出前言这里补充一下Halcon导入到WPF的要求.netcore8.0Halcon是支持.netcore8.0导入的.netcore8.0新功能,打开文件夹和打开文件......
  • Halcon 学习笔记(1):常用套路和算子
    目录前言套路常用算子图形色相消息Region处理特征值逻辑前言这里总结常用算子和套路套路预处理:设置图片大小,RGB通道设置找到Region,特征值分割:形状:球,正方形,椭圆,长方形面积:亮度:滤波,过滤不需要的图像输出结果常用算子图形read_image:得到imagedev_open_windowde......
  • 学习笔记(0):重拾Halcon
    目录前言教学视频前言了解我的人可能知道,我其实很想回去全职做外贸,但是大环境不好,淘宝做了3个月,1688做了1个月。我只能说销量很惨淡。现在打算还是老老实实上班去了。教学视频我之前找一个B站UP主,买了一下他的教学视频。600块钱,总共有40集,大概10个小时。大概需要一个星期学完,......
  • 基于WPF+Halcon开发的机器视觉框架,参考easyvision开发
    基于WPF+Halcon开发的机器视觉框架,参考easyvision开发50多个模块,WPF+Halcon开发,是非常不错的学习框架,需要什么功能可以自己添加开发,插件式开发非常方便,代码开源可二次开发。整套源码,可学习参考,也可略做修改,用在自己的项目上。基于WPF+Halcon开发的机器视觉框架运行界面......
  • 基于C#的winform和halcon开发的通用视觉框架,类似visionpro
    基于C#的winform和halcon开发的通用视觉框架界面风格和visionpro的很像,线条连线的流程风格,代码编译无报错,程序可运行,工具不是很完善,适合大家学习使用。需要源码请私信或者加QQ......
  • 基于C#的winform和halcon开发的通用视觉框架
    基于C#的winform和halcon开发的通用视觉框架代码编译无报错,程序可运行,有些地方有BUG,适合大家学习使用。需要源码请私信或者加QQ......
  • 基于C#的WPF+halcon开发,视觉和运动控制软件框架源码
    基于C#的WPF+halcon开发,视觉和运动控制软件框架源码带ui设计器和轴卡运控,上手可用,WPFMVVM开发模式,1:1参考easyvision开发,集成几十个软件算子,插件框架可以自定义变量,写c#脚本,自定义流程,包含了halcon脚本和封装的算子,可自定义ui,通过插件形式开发很方便拓展自己的功能。可学......
  • [机器视觉]halcon应用实例 用户自定义多ROI模板匹配
    本示在前面几个halconROI示例的基础上继续扩展,更靠进实标情况。为了使ROI匹配更灵活,就要求可以让用户或工程根据实际使用情况自己去画ROI,想画几个是几个。数量不能在代码里写死。这次升级的主要是增加了一个while循环根据用户的鼠标按键来进行判断是否继续画,还是退出画ROI。效......