斑点分析的算法非常简单:在图像中,相关对象的像素(也称为前景)通过其灰度值来识别。例如,图中示例显示了液体中的组织颗粒。这些粒子是明亮的,液体(背景)是暗的。通过选择明亮的像素(阈值),可以很容易检测到颗粒。在许多应用中,暗像素和亮像素的简单条件不再成立,但结果相同可以通过额外的预处理或像素选择/分组的替代方法来实现。

在这种情况下,斑点分析的优点是HALCON提供了大量算子使其具有极大的灵活性。此外,这些方法通常具有很高的性能。斑点分析也可以与许多其他视觉任务相结合,例如作为预处理步骤,灵活地生成交互区域。

基本概念

斑点分析主要包括三个部分:

  1. 获取图像

  2. 分割图像

    采集图像后,接下来的任务是选择前景像素。这也称为分割。结果

    在HALCON中通常将此过程为Blob(二进制大对象),数据类型为区域(a region)。

  3. 提取目标特征

    在最后一步中,将计算出诸如面积(像素数),重心或方向之类的特征

该基本概念的一个示例是以下程序,该程序属于上述示例。在此,从文件中获取图像。使用阈值(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解析的更多相关文章

  1. Halcon斑点分析官方示例讲解

    官方示例中有许多很好的例子可以帮助大家理解和学习Halcon,下面举几个经典的斑点分析例子讲解一下 Crystals 图中显示了在高层大气中采集到的晶体样本的图像.任务是分析对象以确定特定形状的频率. ...

  2. Halcon斑点分析涉及算子及其高阶运用

    涉及算子 获取图像 使用ROI 对齐ROI或图像 校正图像 基础内容这里不再重述 预处理图像(过滤) 基础: mean_image(平均平滑过滤),gauss_filter(高斯滤波),binomia ...

  3. 分析和解析PHP代码的7大工具

    PHP已成为时下最热门的编程语言之一,然而却有许多PHP程序员苦恼找不到合适的工具来帮助自己分析和解析PHP代码.今天小编就为大家介绍几个非常不错的工具,来帮助程序员们提高自己的工作效率,一起来看看吧 ...

  4. FFmpeg的HEVC解码器源码简单分析:解析器(Parser)部分

    ===================================================== HEVC源码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpeg ...

  5. FFmpeg的HEVC解码器源代码简单分析:解析器(Parser)部分

    ===================================================== HEVC源代码分析文章列表: [解码 -libavcodec HEVC 解码器] FFmpe ...

  6. FFmpeg的H.264解码器源代码简单分析:解析器(Parser)部分

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  7. MyBatis 源码分析 - 配置文件解析过程

    * 本文速览 由于本篇文章篇幅比较大,所以这里拿出一节对本文进行快速概括.本篇文章对 MyBatis 配置文件中常用配置的解析过程进行了较为详细的介绍和分析,包括但不限于settings,typeAl ...

  8. 横向对比分析Python解析XML的四种方式

    横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...

  9. [PHP工具推荐]0001.分析和解析代码的7大工具

    引言:PHP已成为时下最热门的编程语言之一,然而却有许多PHP程序员苦恼找不到合适的工具来帮助自己分析和解析PHP代码.今天SD就为大家介绍几个非常不错的工具,来帮助程序员们提高自己的工作效率,一起来 ...

随机推荐

  1. js异步原理

    javascript引擎 javascript引擎执行时单线程的,如果有一个任务被阻塞,整个浏览器就会处于假死状态 那么遇到这种情况,又在单线程的情况下,不能像java之类的语言创建多几个线程来处理, ...

  2. LeetCode 74,直击BAT经典面试题

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode专题43篇文章,我们今天来看一下LeetCode当中的74题,搜索二维矩阵,search 2D Matrix. 这题的 ...

  3. ASP.NET中IHttpHandler与IHttpModule的区别(带样例说明)

    IHttpModule相对来说,是一个网页的添加 IHttpHandler相对来说,却是网页的替换 先建一个HandlerDemo的类 using System; using System.Colle ...

  4. Java实现 LeetCode 719 找出第 k 小的距离对(二分搜索法+二分猜数字)

    719. 找出第 k 小的距离对 给定一个整数数组,返回所有数对之间的第 k 个最小距离.一对 (A, B) 的距离被定义为 A 和 B 之间的绝对差值. 示例 1: 输入: nums = [1,3, ...

  5. java实现第三届蓝桥杯机器人行走

    机器人行走 [编程题](满分18分) 某少年宫引进了一批机器人小车.可以接受预先输入的指令,按指令行动.小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字). ...

  6. Java实现第九届蓝桥杯阶乘位数

    阶乘位数 题目描述 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是: ts id 表示在ts时刻编号id的帖子收到一个"赞&qu ...

  7. java实现第五届蓝桥杯扑克序列

    扑克序列 AA223344,一共4对扑克牌.请你把它们排成一行. 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌. 4A3A2432, 2342A3A4 请填写出 ...

  8. 【asp.net core 系列】4. 更高更强的路由

    0. 前言 在之前我们介绍了请求通过路由寻找到控制器,以及控制器与视图的数据流转.那么,我们回过头来,再看看路由的一些其他用法. 1. 路由属性(Route Attribute) 按照英文的直接翻译, ...

  9. python XlsxWriter模块创建aexcel表格

    https://blog.csdn.net/qq_41030861/article/details/82148777 安装使用pip install XlsxWriter来安装,Xlsxwriter用 ...

  10. MIPI CSI-2

    目录 1 MIPI简介 2 MIPI CSI-2简介 2.1 MIPI CSI-2 的层次结构 2.2 CSI-2协议层 2.3 打包/解包层 2.4 LLP(Low Level Protocol)层 ...