Halcon区域生长的几种算法regiongrowing/regiongrowing_mean/watersheds

news2024/12/23 23:59:57

Halcon区域生长的几种算法

文章目录

  • Halcon区域生长的几种算法
    • 1. regiongrowing 算子
    • 2. regiongrowing_mean算子
    • 3. 分水岭算法

如果想要获得具有相似灰度的相连区域,可以使用区域生长法寻找相邻的符合条件的像素。区域生长法的基本思想是,在图像上选定一个“种子”像素或“种子”区域,然后从“种子”的邻域像素开始拽索,将灰度或者颜色相近的像素附加在“种子”上,最终将代表同一物体的像素全部归属于同一“种子”区域,达到将目标物体分割出来的目的。区域生长法的算法执行速度非常快,适用于对检测速度要求高的情况。

1. regiongrowing 算子

Halcon 中的regiongrowing算子实现了区域生长的功能,它能将灰度相近的相邻像素合并为同一区域。regiongrowing 算子的原型如下:

regiongrowing(Image : Regions : Row, Column, Tolerance, Minsize :)

其中各参数的含义如下。
(1)参数1:Image为输入的单通道图像。
(2)参数2:Regions 为输出的一组区域。
(3)参数3和4:Row、Column分别为矩形区域的宽和高,需要是奇数,以便计算中心点坐标。默认为1,1,也可以选择其他奇数。
(4)参数5:Tolerance 为灰度差值的分割标准。如果另一个点的灰度与种子区域的灰度差值小于Tolerance,则认为它们可以合并为同一区域。这个值默认为6.0。
(5)参数6:MinSize,表示输出区域的最小像素数,默认为100。
其工作步骤如下。
(1)设定一个尺寸为RowColumn的卷积核,以及一个作为分界依据的像素灰度差值Tolerance。
(2)使用上述指定尺寸的卷积核在原图上进行扫描,并计算卷积核内矩形图像的中心点灰度与邻域矩形图像的中心点灰度差。如果差值小于Tolerance,则将这两个矩形区域合并为同一个。
卷积核默认为1
1,一般长宽都为奇数。如果大于11,需要先对图像进行平滑处理,平滑的卷积核大小至少为RowColum,这是为了使矩形中心更突出。如果图像上的噪点比较多并且卷积核比较小,也可以省略平滑这一步骤,以减少误判。
(3)对合并后的区域进行判断,如果该区域包含的像素数大于设定的MineSize,则输出结果区域。举例如下:

*导入图像
read_image (Image,'data/village')
*对原图进行均值处理,选用5*5的滤波器
mean _image (Image, Mean, 5,5)
*使用regiongrowing算子寻找颜色相似的邻域
regiongrowing(Mean,Regions,1,1,3.0,100)
*对提取区域进行形态学处理,使区域更加平滑和完整
closing_circle (Regions, RegionClosing, 3.5)

使用regiongrowing算子进行区域分割的效果如图所示。
在这里插入图片描述
图(a)为输入的原始图像,图(b)为使用regiongrowing算子进行区域生长后分割出的区域。由图中可以看出,颜色相近的邻域被合并成了同一区域,并以同一种颜色显示。分割的效果与滤波器的方法、尺寸有关,也与regiongrowing算子的参数有关,可根据实际需要进行调节。

2. regiongrowing_mean算子

regiongrowing_mean算子的作用与regiongrowing算子类似,也是使用区域生长法进行分割不同的是,regiongrowingmean 算子的输入需要是灰度均值图像。regiongrowing_mean算子的原型如下:

regiongrowing_mean (Image : Regions : startRow, startColumn,Tolerance,MinSize:)

其中各参数的含义如下。
(1)参数1:Image为输入的单通道图像。
(2)参数2:Regions 为输出的一组区域。
(3) 参数3和4:startRow、startColumn分别为起始生长点的坐标。
(4)参数5:Tolerance 为灰度差值的分割标准。如果另一个点的灰度与种子区域的灰度差值小于Tolerance,则认为它们可以合并为同一区域。这个值默认为5.0。
(5)参数6:MinSize 为输出区域的最小像素数,默认为100。
该算子指明了开始进行区域生长算法的点(x,y)的坐标,并以指定的点为中心,不断搜索其邻域,寻找符合设定条件的区域。这里的条件有两种,一是区域边缘的灰度值与当前均值图中对应的灰度值的差小于Tolerance参数的值;二是区域包含的像素数应大于MinSize参数的值。举例如下:

*读取图像
read_image (Image, ' data/village')
*对原图进行均值处理,选用circle类型的中值滤波器
median_image (Image, ImageMedian, 'circle', 2, 'mirrored')
*使用regiongrowing算子寻找颜色相似的邻域
regiongrowing (ImageMedian, Regions, 1, 1, 3, 500)
*对图像进行粗略的区域分割,提取满足条件的各个独立区域
shape_trans (Regions, Centers, 'inner _center')
connection (Centers, Singlecenters)
*计算出初步提取的区域的中心点坐标
area_center (Singlecenters, Area, Row, Column)
*以均值灰度图像为输入,进行区域生长计算,计算的起始坐标为上一步的各区域中心
regiongrowing_mean (ImageMedian, RegionsMean, Row, Column, 25, 100)

这样满足参数条件的相似邻域就合并成了一个区域,提取的效果如图所示。
图(a)为输入的原始图像,图(b)为使用regiongrowing_mean算子进行区域生长后分割出的区域。可以看出,与上图相比,本图分割出的区域单个面积更大,更多的小面积区域被大的邻近区域合并,边界也更加清晰。可以根据实际需要调节所用的参数,以便更理想地分割出目标物体。
在这里插入图片描述

3. 分水岭算法

分水岭算法是一种典型的基于边缘的图像分割算法,通过寻找区域之间的分界线,对图像进行分割。“分水岭”这个名字与一种地貌特点有关,它的思想是,把图像的灰度看作一张地形图,其中像素的灰度表示该地点的高度。灰度值低的区域是低地,灰度值越高,地势越高。
低地聚集的地方如同一块盆地,如果模拟向整片区域注水,那么每块盆地将成为一个单独的积水区,即图像上的分割区域,盆地与盆地之间的边界就是区域的边界。随着注水的量越来越多,盆地的积水面积会不断扩大,边界区域则会越来越小,最后形成的分割边界就是分水岭。
分水岭算法能较好地适用于复杂背景下的目标分割,特别是具有蜂窝状结构的画面的内容分
割。Halcon 中使用watersheds算子提取图像的分水岭。如果图像上包含过多的精细区域或者噪点,输出的区域数量将非常庞大,并影响算法的速度。该算子的原型如下:

watersheds (Image : Basins, Watersheds ::)

其中各参数的含义如下。
(1)参数1:Image 为输入的图像,一般为单通道图像。这里要注意,因为盆地一般指的是灰度值低的区域,所以如果前景目标比较亮而背景比较暗,可以在导入图像后使用invert_image 算子将图像颜色进行反转。
(2)参数2:Basins为输出的盆地区域。
(3)参数3:Watersheds 为输出的分水岭区域。一般一幅输入图像对应一个分水岭区域,而输出的Basins 区域则是多个区域的集合。
除了watersheds算子外,也可以使用watersheds_threshold算子进行分水岭分割。二者的区别在于,后者比前者多了一步操作,即在得到初步的分水岭分割结果之后,将灰度小于阈值的分水岭合并。具体来说,假设分水岭的最小灰度为Wmin,分水岭两侧的“洼地”区域的最小灰度分别为B1,B2,如果max{(Wmin-B,),(Wmin-B2,)}的值小于阈值,则将这两个“洼地”区域合并,分水岭消失。通过这样的阈值处理,符合灰度阈值条件的灰度“洼地”区域即被提取出来。该算子的原型如下:

watersheds_threshold(Image : Basins:Threshold:)

其中各参数的含义如下。
(1)参数1:Image为输入的图像,
一般为单通道图像。如果前景目标比较亮而背景比较暗
可以在导入图像后使用invert_image算子将图像颜色进行反转。
(2)参数2:Basins 为输出的盆地区域。
(3)参数3:Threshold为设置的灰度阈值。建议该值不要超过原图的最大灰度,否则将无法提
取出分水岭,图像整体将作为一个区域被提取出来。
这里以一个实际场景图片为例,介绍图像分水岭算法的算子与应用。案例的图像如图所示,其中:图(a)为输入的原始图像,图(b)为使用Watershcds算子进行分割的结果,图©为提取出的缺陷区域,并以不同的颜色对分割出的区域进行了区分。
在这里插入图片描述
使用分水岭算法进行分割的代码如下:

*输入待检测的木材图像
read_image (Image, 'data/woodboard')
*将原始图转化为灰度图,便于后续的平滑处理
rgbi_to_gray (Image, GrayImage)
*对单通道图像进行高斯平滑处理,以去除噪声
gauss filter (GrayImage, ImageGauss, 11)
*对高斯平滑后的图像进行分水岭处理与阙值分割,提取出盆地区域
watersheds (ImageGauss, Basinsl, Watersheds)
watersheds threshold(ImageGauss, Basins, 50)

经过上述步骤,即可得到图像中的灰度“洼地”区域,结合图像的内容,这部分区域即为木材
缺陷的局部区域。

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

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

相关文章

Zookeeper之手写一个分布式锁

前言 我之前写了一篇快速上手ZK的文章:https://blog.csdn.net/qq_38974073/article/details/135293106 本篇最要是进一步加深学习ZK,算是一次简单的实践,巩固学习成果。 设计一个分布式锁 对锁的基本要求 可重入:允许同一个应…

QT/C++ 远程数据采集上位机+服务器

一、项目介绍: 远程数据采集与传输 课题要求:编写个基于TCP的网络数据获取与传输的应用程序; 该程序具备以下功能: 1)本地端程序够通过串口与下位机(单片机)进行通信,实现数据采集任务 2)本地端程序能将所获取下位机数据进行保存(如csv文本格式等); 3…

JavaWeb——前端之JSVue

接上篇笔记 4. JavaScript 概念 跨平台、面向对象的脚本语言,使网页可交互与Java语法类似,但是不需要变异,直接由浏览器解析1995年Brendan Eich发明,1997年成为ECMA标准(ECMA制定了标准化的脚本程序设计语言ECMAScr…

Mysql5.7主从数据库同步失败(日记文件错误)解决记录

记录一次Mysql主从数据库同步失败(日记文件错误)解决记录 查看同步状态: 具体错误: 检查mysql数据库日记 2021-06-10T03:45:43.522398Z 1 [ERROR] Error reading packet from server for channel : event read from binlog did not pass crc check; the…

NFC与ZigBee技术在智慧农业物联网监测系统中的应用

近年来,我国农业物联网技术飞速发展,基于物联网技术的智能农业监测系统有望得到较大规模的推广应用。但传统的物联网农业监测系统其网络结构层次单一,多采用基于有线或无线结构的节点-上位机数据采集模式,节点数据访问模式缺乏灵活…

音频、视频插座

音频、视频插座 常用电子元器件类型 DC电源插座 文章目录 音频、视频插座前言一、音频、视频插座二、DC电源插座1. 镀铜锡DC插座2. 镀镍DC插座总结前言 音频和视频插座在设计上具有特定的接口类型和标准,以确保兼容性和信号传输的质量。在选择插座时,需要根据设备的接口类…

云计算:OpenStack 配置云主机实例的存储挂载并实现外网互通

目录 一、实验 1. 环境 2.配置存储挂载 3.云主机实例连接外部网络(SNAT) 4.外部网络连接云主机实例(DNAT) 二、问题 1.云主机 ping 不通外部网络 2.nova list 查看云主机列表报错 3.nova list 与 virsh list --all有何区…

【音视频 ffmpeg 学习】 RTMP推流 mp4文件

1.RTMP(实时消息传输协议)是Adobe 公司开发的一个基于TCP的应用层协议。 2.RTMP协议中基本的数据单元称为消息(Message)。 3.当RTMP协议在互联网中传输数据的时候,消息会被拆分成更小的单元,称为消息块(Chunk&#xff…

docker-compose Install TeamCity

前言 TeamCity 是一个通用的 CI/CD 软件平台,可实现灵活的工作流程、协作和开发实践。允许在您的 DevOps 流程中成功实现持续集成、持续交付和持续部署。 系统支持 docker download TeamCity TeamCity 文档参考项目离线包百度网盘获取

Spring Boot学习随笔- 集成MyBatis-Plus,第一个MP程序(环境搭建、@TableName、@TableId、@TableField示例)

学习视频:【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备! 引言 MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化开发,提高效率。它扩展了MyBatis的功能,提供了许多实用的特性,…

Qt/C++音视频开发62-电子放大/按下选择区域放大显示/任意选取区域放大

一、前言 电子放大这个功能思考了很久,也是一直拖到近期才静下心来完整这个小功能,这个功能的前提,主要得益于之前把滤镜打通了,玩出花样来了,只要传入对应的滤镜字符串,就可以实现各种各样的效果&#xf…

学习笔记:R语言基础

文章目录 一、R语言简介二、选择R的原因三、R基本数据对象(一)向量(二)矩阵(三)数组(四)因子(五)列表(六)数据框(七&#…

LLM之RAG实战(十一)| 使用Mistral-7B和Langchain搭建基于PDF文件的聊天机器人

在本文中,使用LangChain、HuggingFaceEmbeddings和HuggingFace的Mistral-7B LLM创建一个简单的Python程序,可以从任何pdf文件中回答问题。 一、LangChain简介 LangChain是一个在语言模型之上开发上下文感知应用程序的框架。LangChain使用带prompt和few-…

数据结构入门到入土——ArrayList与顺序表

目录 一,线性表 二,顺序表 1.接口实现 三,ArrayList简介 四,ArrayList使用 1.ArrayList的构造 2.ArrayList常见操作 3.ArrayList的遍历 4.ArrayList的扩容机制 五,ArrayLisit的具体使用 杨辉三角 一&#x…

SONiC和ONL所依赖的Debian版本说明

Debian 的最新几个版本 下一代 Debian 正式发行版的代号为 trixie — 测试(testing)版 Debian 12 (bookworm) — 当前的稳定(stable)版 Debian 11 (bullseye) — 当前的旧的稳定(oldstable)版 Debian 10&a…

CentOS7 系统安装

系统下载 官方下载 清华源下载 安装流程 1. 选择安装系统 2. 选择安装语言 3. 设置网络链接 4. 设置静态IP ![img](https://img-blog.csdnimg.cn/img_convert/53bfedd54b838f95bd8bcb2efa232e23.png)设置时区 5. 磁盘设置,无特殊需求默认就好 6. 安装模式选择 7…

jwt 介绍

目录 1,jwt 的出现问题 2,jwt 介绍3,jwt 令牌的组成3.1,header3.2,payload3.3,signature 4,验证5,总结 身份验证相关内容: 浏览器 cookie 的原理(详&#xff…

计算机视觉技术-锚框

目标检测算法通常会在输入图像中采样大量的区域,然后判断这些区域中是否包含我们感兴趣的目标,并调整区域边界从而更准确地预测目标的真实边界框(ground-truth bounding box)。 不同的模型使用的区域采样方法可能不同。 这里我们介…

蓝牙物联网移动硬件数据传输系统解决方案

随着传感器技术、网络技术和数据传输技术的不断发展,人们对智能设备的需求日渐增强,利用传感器技术可以对周围环境进行准确和全面的感知,获取到实时信息,从而在网络中进行传输和共享,再通过服务器对各种数据进行保存、分析和挖掘等…

Transformer(seq2seq、self-attention)学习笔记

在self-attention 基础上记录一篇Transformer学习笔记 Transformer的网络结构EncoderDecoder 模型训练与评估 Transformer的网络结构 Transformer是一种seq2seq 模型。输入一个序列,经过encoder、decoder输出结果也是一个序列,输出序列的长度由模型决定…