一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

1. 斑点工具作用

探测并且分析图像中的二维形状,斑点通过辨别处于用户定义的灰度范围
内的不同的像素组,来查找对象。简单理解就是将一幅灰度图像,根据用户选定的灰度等级进行分割。
一般用在没有特定的图形轮廓,但是可以通过明暗提取特征的应用,比如:

2. 工具的部署流程:

3. 斑点工具的使用:

 添加CogBlobTool工具到Job中

 打开CogBlobTool工具编辑

极性:黑色背景中检索白色特征,或者白色背景中检索黑色特征
阈值:用于分割灰度的限定值
模式:
①固定阈值:固定的阈值分割

 缺点是无法自适应光线的变化引起的图像明暗变化,如下图:

 ②相对阈值:自动计算分割阈值

 下面两张图在不改变参数的情况下依然可以准确提取白色区域

  1. 高低尾部:可以有效剔除柱状图两端的噪音像素。

连通性处理:

 区域设置:

 测量尺寸限制:这里通过一个示例图像做一个查找孔的练习

① 首先选择极性为:黑底白点,因为孔是白色的
② 然后选择合适的阈值模式,这里采用相对阈值50%,低尾部25%
③ 运行工具,分析要提取的斑点特征:如图这里的图像已经被分割成若干个区域,接下来需要加条件筛选

④ 连通标记、面积初步过滤:
这里我们通过面积和连通标记做初步筛选:
将ConnectivityLabel设置为包含1:表示只筛选斑点,过滤背景
将面积设置为包含200-1000:通过面积初步筛选一部分相似斑点区域

⑤ 通过非环性特性筛选包含圆形轮廓:

 上图可以看到圆形斑点的非环形值很低,这里筛选包含0-1的区域

 ⑥ 完成

3. 工具结果输出:

 代码获取结果

复制代码
 1   public override bool GroupRun(ref string message, ref CogToolResultConstants result)
 2   {
 3    for (Int32 toolIdx = 0; toolIdx < toolGroup.Tools.Count; toolIdx++)
 4     {
 5       toolGroup.RunTool(toolGroup.Tools[toolIdx], ref message, ref result);
 6       if(toolGroup.Tools[toolIdx]is CogBlobTool)
 7       {
 8        CogBlobTool blob = (CogBlobTool) toolGroup.Tools[toolIdx];
 9         if(blob.Results.GetBlobs().Count > 0)
10         {
11           double x = blob.Results.GetBlobs()[toolIdx].CenterOfMassX;
12           double y = blob.Results.GetBlobs()[toolIdx].CenterOfMassY;
13           double area = blob.Results.GetBlobs()[toolIdx].Area;
14         }
15      }
16   }
复制代码

 

posted on   一杯清酒邀明月  阅读(2152)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2022-08-25 Qt 'QApplication'file not found 解决办法
2021-08-25 OpenCV .直方图均衡 CLAHE算法学习
2021-08-25 OpenCV 直方图均衡化原理
2021-08-25 OpenCV 直方图绘制以及直方图均衡化
2021-08-25 OpenCV 图像锐化处理、提高图像对比度
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示