Halcon Blob分析

news2024/9/8 23:10:11

斑点分析的思路:在图像中,相关对象的像素可以通过其灰度值来识别。例如下图的组织颗粒。这些颗粒是凉的,而液体是暗的,通过选择明亮像素(阈值),可以很容易地检测到颗粒。在需要应用中,这种简单的暗像素和亮像素的条件不再使用,但是通过额外的预处理或像素选择分组替代方法来实现相同的结果。
在这里插入图片描述
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.coloradmin.cn/o/1957647.html

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

相关文章

成像光学:LCD的工作原理与结构图解

一、主流显示面板技术:LCD,OLED,MicroLED 二、主流显示屏的发展趋势 三、LCD堆叠结构(以比较流行的TFT-LCD为例) 沿光路方向介绍:背光,下偏光片(polarizer),…

python实现图像分割算法2

python实现随机步行算法 随机步行算法数学模型Python 实现详细解释优缺点应用领域随机步行算法是一种常用于图像分割和图像分析的算法。它通过模拟随机游走来确定图像中每个像素的标签或类别。随机步行算法特别适合用于解决有种子标记的图像分割问题,其中用户提供一些初始标记…

【Python】基础语法(上)

本篇文章讲解以下知识: (1)初始编码 (2)输出 (3)初识数据类型 一:初识编码 在计算机中所有的数据本质上都是以0和1的组合来存储。 比如:在一个文件中有以下内容&am…

力扣SQL50 上级经理已离职的公司员工 一题双解

Problem: 1978. 上级经理已离职的公司员工 Code -- 方法 1 -- select e1.employee_id -- from employees e1 -- left join employees e2 -- on e1.manager_id e2.employee_id -- where e1.salary < 30000 -- and e1.manager_id is not null -- and e2.employee_id is…

SpringBoot 整合 Redis 实现验证码登录功能

一、整合Redis 在pom.xml中添加Redis相关依赖&#xff1b; <!--Spring Data Redis依赖配置--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>…

103.qt qml-最全Table新增下拉复制功能

在上篇文章102.qt qml-最全Table交互之多列固定、行列拖拽、自定义委托、标题交互使用教程_qt 表格控件 拖动列-CSDN博客 我们实现了大部分功能,所以本章实现下拉复制功能。 demo截图如下所示: 支持跨界复制,如果下拉的位置大于Table则会动画向下移动,具体可以参考视频链接…

颠覆未来计算!CRAM技术摒弃冯·诺依曼模型,20年研究终迎突破

未来科技&#xff1a;AI计算需求激增&#xff0c;数据中心耗电量堪比派对狂饮&#xff01;明尼苏达大学研究团队或携革命性设备&#xff0c;以惊人能效解决AI能耗难题&#xff01; 研究人员设计了一种新型的"计算随机存取存储器"&#xff08;CRAM&#xff09;原型芯…

查看路由表 netstat -r

“Kernel IP routing table” 是Linux系统中用于展示和配置IP路由的表。它告诉操作系统如何将数据包从一个网络接口发送到另一个网络或主机。下面是对您给出的路由表条目的解释&#xff1a; Destination&#xff1a;目的地地址&#xff0c;可以是具体的IP地址&#xff0c;也可…

Codeforces 962 div3 A-F

A 题目分析 签到 C代码 #include<iostream> using namespace std; int main(){int t;cin>>t;while(t--){int n;cin>>n;cout<<n/4n%4/2<<endl;} } B 题目分析 将n*n的方格分成若干个k*k的方格&#xff0c;每个k*k的方格中所有的数都相同 遍历…

小主机SSD固态硬盘选购攻略,希捷酷鱼 530 SSD固态硬盘表现优秀【附系统无损迁移教程】

小主机SSD固态硬盘选购攻略&#xff0c;希捷酷鱼 530 SSD固态硬盘表现优秀【附系统无损迁移教程】 哈喽小伙伴们好&#xff0c;我是Stark-C~ 这几年随着以零刻为首的小主机市场的兴起&#xff0c;小主机相关的配置周边需求也是越来越大&#xff0c;就比如说SSD固态硬盘就是其…

爬虫程序在采集亚马逊站点数据时如何绕过验证码限制?

引言 在电商数据分析中&#xff0c;爬虫技术的应用日益广泛。通过爬虫技术&#xff0c;我们可以高效地获取大量的电商平台数据&#xff0c;这些数据对于市场分析、竞争情报、价格监控等有着极其重要的意义。亚马逊作为全球最大的电商平台之一&#xff0c;是数据采集的重要目标…

Nacos-微服务注册中⼼(Nacos简介 Nacos配置管理)

目录 一、 微服务的注册中⼼ 1. 注册中⼼的主要作⽤ 2. 常⻅的注册中⼼ 二、Nacos简介 nacos实战⼊⻔ 1. 搭建nacos环境 2.将订单微服务注册到nacos 2.1 在pom.xml中添加nacos的依赖 2.2 在主类上添加EnableDiscoveryClient注解 2.3 在application.yml中添加nacos服…

如何在Linux上构建Raspberry Pi虚拟环境

目录 前置环境需求 Older Version 新版本启动 下面我们来讲讲如何使用QEMU来仿照树莓派环境。这里首先先分成两大类。第一类是跑比较老的&#xff0c;安全性较低的老树莓派&#xff0c;主要指代的是22年4月份发布之前的版本&#xff0c;这个版本当中&#xff0c;树莓派镜像自…

Layui表格合并、表格折叠树

1、核心代码&#xff1a; let tableMerge layui.tableMerge; // 引入合并的插件&#xff0c;插件源文件在最后let tableData [{pid: 0,cid: 111,sortNum: 1, // 序号pName: 数据父元素1,name: 数据1,val: 20,open: true, // 子树是否展开hasChild: true, // 有子数据opt: 数据…

昇思25天学习打卡营第1天 | 快速入门教程

昇思大模型平台&#xff0c;就像是AI学习者和开发者的超级基地&#xff0c;这里不仅提供丰富的项目、模型和大模型体验&#xff0c;还有一大堆经典数据集任你挑。 AI学习有时候就像找不到高质量数据集的捉迷藏游戏&#xff0c;而且本地跑大数据集训练模型简直是个折磨&#xf…

react css module 不生效问题记录

背景&#xff1a;自己使用webpackreactcssless配置的项目框架&#xff0c;在使用过程中发现css module引入不生效。 import React from react import styles from ./index.module.less console.log(styles)//输出 undefinedwebpack配置了css-loader,less-loader,webpack默认cs…

Linux系统之dns服务配置

要求&#xff1a;DNS服务器域解析 www. 11zzj.com为192.168.11.1; ftp.11zzj.com 为192.168.11.2; mail.11zzj.com 为172.16.11.20; 1.打开Linux6&#xff08;服务器&#xff09;和Linux5&#xff08;客户端&#xff09; 配置IP地址和DNS 地址&#xff0c;并ping通。…

PSINS工具箱函数介绍——kfinit

kfinit是kf的参数初始化函数&#xff0c;用于初始化滤波参数 本文所述的代码需要基于PSINS工具箱&#xff0c;工具箱的讲解&#xff1a; PSINS初学指导基于PSINS的相关程序设计&#xff08;付费专题&#xff09; 使用方法 kfinit这个函数的字面意思是&#xff1a;kf的初始化…

游戏制作中没想明白的事情

当一个备忘录&#xff0c;有的是还没有时间去深入研究&#xff0c;或者没有从头了解 什么是建模绑定&#xff1f;为什么人物建模&#xff0c;初始化都是双手打开的&#xff1f;平着放武器&#xff0c;但运行的时候武器会自动竖起来&#xff0c;这是怎么做到的&#xff1f; 思…

嵌入式学习Day13---C语言提升

目录 一、二级指针 1.1.什么是二级指针 2.2.使用情况 2.3.二级指针与数组指针 二、指针函数 2.1.含义 2.2.格式 2.3.注意 2.4.练习 三、函数指针 3.1.含义 3.2.格式 3.3.存储 3.4.练习 ​编辑 四、void*指针 4.1.void缺省类型 4.2.void* 4.3.格式 4.4.注…