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

在这种情况下,斑点分析的优点是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. ms-setting是什么

    ms-settings 遇到了两个问题,记录一下 1)windows桌面右键菜单-->显示设置或者个性化-->报错:ms-settings:personalization-backgrou ...

  2. Spring boot Sample 007之spring-boot-log4j2

    一.环境 1.1.Idea 2020.1 1.2.JDK 1.8 二.目的 spring boot 整合多环境log4j2 三.步骤 3.1.点击File -> New Project -> ...

  3. Alpha冲刺 —— 5.2

    这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.展 ...

  4. InnoSetup汉化版打包工具下载-附带脚本模板

    InnoSetup汉化版打包工具下载地址: https://www.90pan.com/b1907264 脚本模板 ; 脚本用 Inno Setup 脚本向导 生成.; 查阅文档获取创建 INNO S ...

  5. Java实现 LeetCode 628 三个数的最大乘积(暴力大法)

    628. 三个数的最大乘积 给定一个整型数组,在数组中找出由三个数组成的最大乘积,并输出这个乘积. 示例 1: 输入: [1,2,3] 输出: 6 示例 2: 输入: [1,2,3,4] 输出: 24 ...

  6. Java实现 蓝桥杯 算法训练 最大最小公倍数

    算法训练 最大最小公倍数 时间限制:1.0s 内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少. 输入格式 输入一个正整数N. 输出格式 ...

  7. Java实现 LeetCode 592 分数加减运算(纯体力活)

    592. 分数加减运算 给定一个表示分数加减运算表达式的字符串,你需要返回一个字符串形式的计算结果. 这个结果应该是不可约分的分数,即最简分数. 如果最终结果是一个整数,例如 2,你需要将它转换成分数 ...

  8. Java实现 蓝桥杯 算法提高 三角形

    算法提高 12-1三角形 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 为二维空间中的点设计一个结构体,在此基础上为三角形设计一个结构体.分别设计独立的函数计算三角形的周长.面积. ...

  9. Java实现 蓝桥杯VIP 算法训练 Car的旅行路线

    大家可以看一下这个,蓝桥杯官网的这道题是有问题的 Car的旅行路线 算法训练 Car的旅行路线 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 查看参考代码 问题描述 又到暑假 ...

  10. Java实现 LeetCode 120 三角形最小路径和

    120. 三角形最小路径和 给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] ...