Halcon斑点分析BlobAnalysis解析
斑点分析的算法非常简单:在图像中,相关对象的像素(也称为前景)通过其灰度值来识别。例如,图中示例显示了液体中的组织颗粒。这些粒子是明亮的,液体(背景)是暗的。通过选择明亮的像素(阈值),可以很容易检测到颗粒。在许多应用中,暗像素和亮像素的简单条件不再成立,但结果相同可以通过额外的预处理或像素选择/分组的替代方法来实现。
在这种情况下,斑点分析的优点是HALCON提供了大量算子使其具有极大的灵活性。此外,这些方法通常具有很高的性能。斑点分析也可以与许多其他视觉任务相结合,例如作为预处理步骤,灵活地生成交互区域。

基本概念
斑点分析主要包括三个部分:

获取图像
分割图像
采集图像后,接下来的任务是选择前景像素。这也称为分割。结果
在HALCON中通常将此过程为Blob(二进制大对象),数据类型为区域(a region)。提取目标特征
在最后一步中,将计算出诸如面积(像素数),重心或方向之类的特征
该基本概念的一个示例是以下程序,该程序属于上述示例。在此,从文件中获取图像。使用阈值(threshold)选择大于120的所有像素。然后,引入了一个不太明显的步骤:算子连接(connection)将所有亮像素的集合分离为所谓的连接组件。此步骤的效果是我们将划分出多个区域,而不是阈值(threshold)返回的单个区域。该程序的最后一步是一些功能的计算。在此,算子area_center确定了大小(像素数)和重心。请注意area_center返回了三个值(每个参数有一个值)。
read_image (Image, 'particle')
threshold (Image, BrightPixels, 120, 255)
connection (BrightPixels, Particles)
area_center (Particles, Area, Row, Column)
扩展概念
在许多情况下,斑点分析将比上述示例更高级。原因是混乱或不均匀的照明。此外,经常需要进行后处理,例如将元素特征转换为真实世界单位或结果可视化。
使用RIO(Region Of Interest)
可以通过使用感兴趣区域来加快斑点分析。搜索的斑点区域被限制越多。搜索将更快更强大。
对齐RIO或图像
在某些应用中,关注区域必须相对于另一个对象对齐。或者图像本身可以对齐,例如通过旋转或裁剪。

校正图像
与对齐类似,可能需要校正图像,例如消除镜头畸变或转换图像的参考点。
预处理图像(过滤)
下一个重要部分是图像的预处理。在这里,像mean_image或gauss_filter这样的运算符可用于消除噪音。一个快速但不太完美的替代方案是binomial_filter。运算符middle_image对于抑制小斑点或细线很有用。算子anisotropic_diffusion(各向异性扩散)对保留边缘的平滑很有用,最后使用fill_interlace消除由隔行交错相机(摄像机视频流图像)引起的缺陷
提取分割参数
代替使用固定的阈值,可以为每个图像动态提取它们。例如具有多个峰值的灰度值直方图,每个对象类别一个。在这里,您可以使用算子gray_histo_abs和histo_to_thresh。作为高级替代方案,可以将算子intensity与参考图像结合使用,仅适用于背景:在设置过程中,将确定背景区域的平均灰度值。如果平均灰度值已更改,则可以相应调整阈值。
分割图像
对于分割,可以使用各种方法。最简单的方法是threshold(阈值),指定一个属于前景对象的值范围。另一个非常常见的方法是dyn_threshold。在此,第二张图像将作为参考图像。通过这种方法,使用局部阈值而不是全局阈值。这些局部阈值存储在参考图像中。可以通过拍摄空背景图片将其设为静态作为参考图像,也可以使用平滑滤镜(例如mean_image)
处理区域
一旦斑点区域被分割。通常需要对其进行修改,例如,通过抑制小区域,给定方向或接近其他区域的区域。在这种情况下,形态算子open_circle和opening_rectangle通常可用于抑制噪声,closeing_circle和closing-rectanglel填补空白。可以使用select_shape,select_shape_std和select-proto-proto选择具有特定功能的斑点。
特征提取
最终处理时,将提取斑点的特征,所需功能的类型取决于应用程序。类型列表可以在参考手册的“Regions/Features"和"Image/Features"中找到。
将结果转换为世界坐标
诸如面积或重心之类的要素通常必须转换为世界坐标。这可以通过HALCON相机
校准实现。
可视化结果
最后,你可能要显示图像的斑点(区域)和特征。
灵感来源于Halcon官方文档
Halcon斑点分析BlobAnalysis解析的更多相关文章
- Halcon斑点分析官方示例讲解
官方示例中有许多很好的例子可以帮助大家理解和学习Halcon,下面举几个经典的斑点分析例子讲解一下 Crystals 图中显示了在高层大气中采集到的晶体样本的图像.任务是分析对象以确定特定形状的频率. ...
- Halcon斑点分析涉及算子及其高阶运用
涉及算子 获取图像 使用ROI 对齐ROI或图像 校正图像 基础内容这里不再重述 预处理图像(过滤) 基础: mean_image(平均平滑过滤),gauss_filter(高斯滤波),binomia ...
- 分析和解析PHP代码的7大工具
PHP已成为时下最热门的编程语言之一,然而却有许多PHP程序员苦恼找不到合适的工具来帮助自己分析和解析PHP代码.今天小编就为大家介绍几个非常不错的工具,来帮助程序员们提高自己的工作效率,一起来看看吧 ...
- FFmpeg的HEVC解码器源码简单分析:解析器(Parser)部分
===================================================== HEVC源码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg ...
- FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分
===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...
- FFmpeg的H.264解码器源代码简单分析:解析器(Parser)部分
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- MyBatis 源码分析 - 配置文件解析过程
* 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...
- 横向对比分析Python解析XML的四种方式
横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...
- [PHP工具推荐]0001.分析和解析代码的7大工具
引言:PHP已成为时下最热门的编程语言之一,然而却有许多PHP程序员苦恼找不到合适的工具来帮助自己分析和解析PHP代码.今天SD就为大家介绍几个非常不错的工具,来帮助程序员们提高自己的工作效率,一起来 ...
随机推荐
- Kubernetes笔记(四):详解Namespace与资源限制ResourceQuota,LimitRange
前面我们对K8s的基本组件与概念有了个大致的印象,并且基于K8s实现了一个初步的CI/CD流程,但对里面涉及的各个对象(如Namespace, Pod, Deployment, Service, In ...
- Java实现 LeetCode 345 反转字符串中的元音字母
345. 反转字符串中的元音字母 编写一个函数,以字符串作为输入,反转该字符串中的元音字母. 示例 1: 输入: "hello" 输出: "holle" 示例 ...
- Java实现蓝桥杯VIP 算法训练 P0502
试题 算法训练 P0502 资源限制 时间限制:1.0s 内存限制:256.0MB 编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20.然后 ...
- Java实现 LeetCode 122 买卖股票的最佳时机 II
122. 买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意: ...
- Java实现 LeetCode70 爬楼梯
70. 爬楼梯 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: ...
- java实现求二十一位水仙花数(21位水仙花数)
一个N位的十进制正整数,如果它的每个位上的数字的N次方的和等于这个数本身,则称其为花朵数. 例如: 当N=3时,153就满足条件,因为 1^3 + 5^3 + 3^3 = 153,这样的数字也被称为水 ...
- java实现第五届蓝桥杯出栈次序
出栈次序 X星球特别讲究秩序,所有道路都是单行线.一个甲壳虫车队,共16辆车,按照编号先后发车,夹在其它车流中,缓缓前行. 路边有个死胡同,只能容一辆车通过,是临时的检查站,如图[p1.png]所示. ...
- STL中的set和multiset
注意: 1.count() 常用来判断set中某元素是否存在,因为一个键值在set只可能出现0或1次. 2.erase()用法 erase(iterator) ,删除定位器iterator指向的值 ...
- iOS-NSString常见方法
</pre><pre name="code" class="html">#import <Foundation/Foundatio ...
- Grafana 插件地图Worldmap不显示
介绍 最近上了ELK 日志分析,想着手看下用户的分布情况,在kibana 中展示用户分布情况是没有问题的,但是索引添加到Granfana 中的话就无法展示. 问题描述 添加ES索引以后,map地图一片 ...