Halcon Blob分析

斑点分析的思路:在图像中,相关对象的像素可以通过其灰度值来识别。例如下图的组织颗粒。这些颗粒是凉的,而液体是暗的,通过选择明亮像素(阈值),可以很容易地检测到颗粒。在需要应用中,这种简单的暗像素和亮像素的条件不再使用,但是通过额外的预处理或像素选择分组替代方法来实现相同的结果。
在这里插入图片描述
Blob分析的优势在于Halcon在这种情况下提供灵活性。此外,该方法通常具有很高的稳定性。从Blob分析中已知的方法也可以与许多其他视觉算法相结合。例如,可作为预处理提取感兴趣区域。

一 基本概念

Blob分析主要分三步:
在这里插入图片描述

1 获取图像

首先,获取图像。

2 分割图像

获取图像后,获取背景像素,这也称为分割。这个过程通常被称为blob。在Halcon中,数据类型称为区域。

3 提取图像

计算面积(即像素数)重心或方向等特征。

4 示例

下面例子中的程序,实现了上述步骤。获取图像,阈值120,然后算子连接所有明亮像素的集合分离为所谓的连通域。这里的效果,现有多个区域,而不是由阈值返回单个区域。

read_image(Image,'particle')
threshold(Image,BrightPixels,120,255)
connection(BrightPixels,Particles)
area_center(Particles,Area, Row, Column)

在这里插入图片描述

二 扩展概念

在许多情况下,Blobs的分割比上面的程序中的例子更具优势。导致这种情况的原因是:噪点或不均匀的光照。此外,后期处理,需要将特征转换为实物中凸显或可视化。

1 使用感兴趣区域

使用感兴趣区域可以加快Blob分析的速度。搜索Blob的区域有限,搜索速度越快,鲁棒性越好。

2 ROI与图像对齐

在实际使用中,感兴趣区域必须相对于对象保持一定的位置,或者图像本身就需要定位。通过旋转或剪裁等。

3 图像校正

类似,图像需要定位。例如:消除镜头畸变或将图像转换为参考点等。

4 图像预处理(滤波)

图像预处理是比较重要的一步。可以用算子mean_image或gauss_filter来消除噪点。当然可以用算子binomial_filter代替gauss_filter。算子median_image用于抑制小噪点或杂线。各种算子用于平滑边缘,填充等用于消除相机镜头的畸变造成的噪点。

5 提取分割参数

动态阈值,可以动态提取每张图片。若具有多个峰值的灰度值直方图,每个对象对应一个峰值。在这里,可以使用算子替代,根据实际图像的背景综合考虑,并根据实际情况调整灰度值的阈值。

6 图像分割

图像分割有很多方法,最简单的方法是阈值分割,其中指定属于背景的一个或多个灰度值范围。常用算子dyn_threshold,该算子的第二个参数作为图像的引用参数,使用局部阈值而不是全局阈值。局部阈值源自参考图像中。也可以通过算子mean_image动态确定。

7 区域处理

Blob区域被分割,通常需要进行处理。例如:通过抑制小区域,在给定方法的区域或靠近其他区域。可以使用形态学算子opening_circle和opeing_rectangle1用于抑制噪点,而形态学算子closing_circle和closing_rectangle1用于填充空白。可以使用select_shape,select_shape_std和select_shape_proto来选择具有特定属性的Blob。

8 特征提取

图像预处理,提取斑点特征。需要根据具体情况完善程序。

9 处理结果转化

像面积或重心这样的特征通常必须转换为世界坐标。

10 可视化处理

显示图像、blob(区域)和特征。

三 程序实例

使用Halcon进行blob分析

dev_close_window()
dev_update_window('off')* step1 获取图像
read_image(Image,'D:/Halcon_Study/10707.jpg')
get_image_size(Image,Width, Height)
dev_open_window_fit_image(Image,0,0,Width,Height,WindowHandle)
set_display_font(WindowHandle,16,'mono','true', 'false')
dev_set_draw('margin')
dev_set_line_width(2)
dev_display(Image)
disp_continue_message(WindowHandle,'black', 'true')
stop()* step2 图像分割
* 使用局部阈值
mean_image(Image,ImageMean,18,18)
dyn_threshold(Image,ImageMean,RegionDynThresh,5, 'light')* 提取连通域
connection(RegionDynThresh,ConnectedRegions)
dev_display(ConnectedRegions)
disp_continue_message(WindowHandle,'black', 'true')
stop()* step3 区域处理
shape_trans(ConnectedRegions,ConvexRegions,'convex')
select_shape(ConvexRegions,LargeRegions,'area','and',100,20000)
select_gray(LargeRegions,Image,Crystals,'entropy','and',1,10.6)
dev_display(Image)
dev_display(Crystals)

在这里插入图片描述

在这里插入图片描述
琐碎时间阅读基础知识,详情关注微信公众号“知识代码AI”。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS持久化存储数据Preference

Preference首选项 首选项:首选项为应用提供Key-Value键值型的数据处理能力,支持应用持久化轻量级数据,并对其修改和查询。数据存储形式为键值对,键的类型为字符串型,值的存储数据类型包括数字型、字符型、布尔型以及这…

【优秀python web设计】基于Python flask的猫眼电影可视化系统,可视化用echart,前端Layui,数据库用MySQL,包括爬虫

1 绪论 1.1 设计背景及目的 猫眼电影作为国内知名的电影信息网站,拥有海量的电影信息、票房数据和用户评价数据。这些数据对于电影市场的研究和分析具有重要意义。然而,由于数据的复杂性和数据来源的多样性,如何有效地采集、存储和展示这些数…

复现波恩大学的“LiDiff:基于扩散模型实现3D LiDAR场景补全!”(点云补全)项目

本文的主要工作就是复现下述论文中的算法。 该论文全称:Scaling Diffusion Models to Real-World 3D LiDAR Scene Completion 一、准备工作 首先通读readme.md文件的内容,了解所需要的相关依赖和数据等内容。 一定要多读几遍,不要扫一眼就…

[Linux安全运维] LAMP 环境搭建保姆级教学(Apache + MySQL + PHP) ~~

LAMP LAMP 是一种网站技术,可以实现动态的网站页面部署。 1. LAMP概述 1 .1构成 Linux: 简介: Linux 是一种开源的操作系统,以其稳定性和安全性而著称。在 LAMP 堆栈中,它作为服务器操作系统运行。作用: 为应用程序提供一个稳定、安全的运…

【linux】在多核CPU下,好像看到不同进程在不同CPU调度

在2353这行打印的情况来看,操作系统好像给不同的进程分配不同的CPU,从上图来看,同一个进程好像基本使用的相同的CPU: 其实摸索syscall文件系统操作,本意是想找到内核文件系统中文件的创建,写入,…

3DMAX神经网络插件Neuron使用方法详解

3DMAX神经网络插件Neuron使用方法 3DMAX神经网络插件Neuron,从一系列样条曲线创建具有分支结构的几何体。适用于如神经网络、血管、树枝等形状的3D建模。 【适用版本】 3dMax2016及更高(不仅限于此范围) 【安装方法】 Neuron插件无需安装&a…

windows 暂停更新

使用windows 系统的伙伴都深受其扰,动不动就要强制更新,并且无法长时间关闭更新。这里推荐一个工具来禁止更新。越来越多的工程师可能会逐渐放弃windows ,真的太冗杂了,linux 的桌面和命令行越来越好用。 下载地址 https://github.com/WereD…

Renesa Version Board开发RT-Thread 之I2C驱动应用(SHT20)

目录 概述 1 硬件接口介绍 1.1 Version Board上的I2C硬件接口 1.2 SHT20 1.2.1 SHT20简介 1.2.2 SHT-20模块电路 2 软件实现 2.1 软件版本信息 2.2 RT-Thread Studio创建项目 2.3 FSP配置I2C接口 2.4 使能Sensor驱动 3 RT-Thread驱动架构 3.1 接口函数 3.1.1 …

增量学习中Task incremental、Domain incremental、Class incremental 三种学习模式的概念及代表性数据集?

1 概念 在持续学习领域,Task incremental、Domain incremental、Class incremental 是三种主要的学习模式,它们分别关注不同类型的任务序列和数据分布变化。 1.1 Task Incremental Learning (Task-incremental) 任务增量学习,也称为任务增…

spring 中包自动扫描之 component-scan 解析

在 spring 中&#xff0c;为简化 bean 的配置&#xff0c;在 spring-context 模块下提供了包的自动扫描功能&#xff0c;将配置的包及其子包下的所有符合条件的类都注册到 BeanFactory 中。下面来看下具体是怎么实现的。 配置 <context:component-scan base-package"…

.NET 一款获取主流浏览器存储密码的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

27.jdk源码阅读之ConcurrentLinkedDeque

1. 写在前面 ConcurrentLinkedDeque 是 Java 中一个高效、线程安全的双端队列&#xff08;Deque&#xff09;&#xff0c;使用无锁算法&#xff08;CAS 操作&#xff09;来保证线程安全性。由于其复杂的实现和广泛的应用场景&#xff0c;它常常成为面试中的重点考察对象。不知道…

【C++题解】1069. 字符图形5-星号梯形

问题&#xff1a;1069. 字符图形5-星号梯形 类型&#xff1a;嵌套循环、图形输出 题目描述&#xff1a; 打印字符图形。 输入&#xff1a; 一个整数&#xff08; 0<n<10 &#xff09;。 输出&#xff1a; 一个字符图形。 样例&#xff1a; 输入&#xff1a; 3输…

C#体检系统源码,医院健康体检系统PEIS,C#+VS2016+SQLSERVER

体检中心/医院体检科PEIS系统源码&#xff0c;C#健康体检信息系统源码&#xff0c;PEIS源码 开发环境&#xff1a;C/S架构C#VS2016SQLSERVER 2008 检前&#xff1a; 多种预约方式网站预约、电话预约、微信平台预约及检前沟通&#xff0c;提前制作套餐&#xff0c;客人到达体检…

机器学习(二十三):决策树和决策树学习过程

一、决策树 下面是数据集&#xff0c;输入特征是耳朵形状、脸形状、是否有胡子&#xff0c;输出结果是是否为猫 下图是决策树&#xff0c;根据耳朵形状、脸形状、是否有胡子这几个特征&#xff0c;建立决策树&#xff0c;从根节点一步步预测结果。 上图中&#xff0c;每一个椭…

wkt格式文件详解(包含应用示例)

还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0c;webgl&#xff0c;ech…

揭秘CISA:不只是证书,更是信息安全领域的国际通行证

CISA&#xff08;Certified Information Systems Auditor&#xff09;&#xff0c;即国际注册信息系统审计师&#xff0c;是信息系统审计、控制与安全等专业领域中备受认可的认证。它不仅是一张证书&#xff0c;更是信息安全领域的国际通行证。以下是对CISA的全面揭秘&#xff…

Apollo:目录分析, test ok

apollo: Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 - Gitee.comhttps://github.com/ApolloAuto/apolloapollo 目录名称目录作用cyber消息中间件,替换ros作为消息层…

Vscode报错:line too long (84 > 79 characters)

原因&#xff1a;不允许一行超过79个字母&#xff0c;但是该行代码超出该范围。 参考博客&#xff1a;解决Vs CodeFlake8 报错line too long (108 &#xff1e; 79 characters)Flake8(E501)_flake8 line too long-CSDN博客

Javascript前端面试基础(八)

window.onload和$(document).ready区别 window.onload()方法是必须等到页面内包括图片的所有元素加载完毕后才能执行$(document).ready()是DOM结构绘制完毕后就执行&#xff0c;不必等到加载完毕 window.onload 触发时机&#xff1a;window.onload 事件会在整个页面&#xf…