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就为大家介绍几个非常不错的工具,来帮助程序员们提高自己的工作效率,一起来 ...
随机推荐
- 前后端分离,如何在前端项目中动态插入后端API基地址?(in docker)
开门见山,本文分享前后端分离,容器化前端项目时动态插入后端API基地址,这是一个很赞的实践,解决了前端项目容器化过程中受制后端调用的尴尬. 尴尬从何而来 常见的web前后端分离:前后端分开部署,前端项 ...
- go语言的主要特征
go语言主要特征 1.自动立即回收. 2.更丰富的内置类型. 3.函数多返回值. 4.错误处理. 5.匿名函数和闭包. 6.类型和接口. 7.并发编程. 8.反射. 9.语言交互性. golang文件 ...
- Chisel3 - Tutorial - Adder4
https://mp.weixin.qq.com/s/X5EStKor2DU0-vS_wIO-fg 四位加法器.通过FullAdder级联实现. 参考链接: https://github.co ...
- Java实现蓝桥杯 算法提高 线段和点
算法提高 线段和点 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个点和m个区间,点和区间的端点全部是整数,对于点a和区间[b,c],若a>=b且a<=c,称点a满 ...
- Java实现 蓝桥杯 蓝桥杯VIP 基础练习 数的读法
问题描述 当输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian si bai wu shi liu wan qi ...
- Java实现 蓝桥杯VIP 算法训练 矩阵加法
时间限制:1.0s 内存限制:512.0MB 问题描述 给定两个N×M的矩阵,计算其和.其中: N和M大于等于1且小于等于100,矩阵元素的绝对值不超过1000. 输入格式 输入数据的第一行包含两个整 ...
- Java实现 蓝桥杯VIP 算法训练 摆动序列
问题描述 如果一个序列满足下面的性质,我们就将它称为摆动序列: 1. 序列中的所有数都是不大于k的正整数: 2. 序列中至少有两个数. 3. 序列中的数两两不相等: 4. 如果第i – 1个数比第i ...
- Java实现 LeetCode 263 丑数
263. 丑数 编写一个程序判断给定的数是否为丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例 1: 输入: 6 输出: true 解释: 6 = 2 × 3 示例 2: 输入: 8 输 ...
- Java实现 蓝桥杯VIP 算法提高 5-3日历
算法提高 5-3日历 时间限制:1.0s 内存限制:256.0MB 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为 ...
- Java实现 LeetCode 143 重排链表
143. 重排链表 给定一个单链表 L:L0→L1→-→Ln-1→Ln , 将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→- 你不能只是单纯的改变节点内部的值,而是需要实际的进行节 ...