Halcon 重叠区域 显示汉字 图像分割

news2024/12/23 7:01:00

一 如何填充区域之间的GAP或分割重叠区域

在这里插入图片描述

read_image(Image,'fabrik')

*区域生长法将图像分割成相同强度的区域,并将其划分成大小为行*列的矩形。 为了确定两个相邻的矩形是否属于相同的区域,
*仅使用其中心点的灰度值。 如果灰度值差小于等于公差,则将矩形合并到一个区域。

regiongrowing(Image,Regions,1,1,3,1000)

gen_empty_region(NoPixel)

expand_region(Regions,NoPixel,RegionExpanded1,'maximal','image')

dev_display(Image)

dev_set_draw('margin')

dev_set_colored(6)

dev_display(RegionExpanded1)

stop()


二 如何在窗口上显示汉字

dev_close_window()

read_image(image,'particle')

get_image_size(image,Width,Height)

dev_open_window(0,0,Width,Height,'black',WindowID)

dev_set_draw('margin')

dev_set_color('green')

threshold(image,Region,128,255)

connection(Region,ConnectedRegions)

select_shape_std(ConnectedRegions,SelectedRegions,'max_area',70)

area_center(SelectedRegions,Area,Row,Column)

dev_display(image)

dev_display(SelectedRegions)

set_tposition (WindowID, Height/2,0)

write_string (WindowID, '面积最大区域的行坐标:'+Row+' 面积最大区域的列坐标: '+Column)

三 图像分割之地形学操作1.分水岭介绍

1 分水玲介绍

传统的分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是地质学上的拓扑地貌,图像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其周边区域称为集水盆地,而集水盆地的边界则形成分水岭。
在这里插入图片描述

2 相关概念

局部极小值点:该点对应一个盆地的最低点,当我们在盆地里滴一滴水的时候,由于重力作用,水最终会汇聚到该点。注意:可能存在一个最小值面,该平面内的都是最小值点。

3 分水玲原理

假设我们在盆地的最小值点,打一个洞,然后往盆地里面注水,并阻止两个盆地的水汇集,我们会在两个盆地的水汇集的时刻,在交接的边缘线上(也即分水岭线),建一个坝,来阻止两个盆地的水汇集成一片水域。这样图像就被分成2个像素集,一个是注水盆地像素集,一个是分水岭线像素集。

dev_close_window()

read_image(image,'particle')

get_image_size(image,Width,Height)

dev_open_window(0,0,Width/2,Height/2,'black',WindowID)

dev_set_draw('margin')

dev_set_colored(12)

dev_clear_window()

*高斯滤波
gauss_filter(image,ImageGauss,9)

*图像反选
invert_image(ImageGauss,ImageInvert)

*从图像里提取分水玲和盆地
*第一个输入参数:输入图像
*第二个输出参数:分割后的盆地区域
*第三个输出参数:分割后的分水岭区域
watersheds(ImageInvert,Basins,Watersheds)

dev_display(image)

dev_display(Basins)


在这里插入图片描述

四 图像分割之阈值操作一

1 auto_threshold自动阈值

dev_close_window()

read_image(image,'egypt1')

get_image_size(image,Width,Height)

dev_open_window(0,0,Width, Height, 'black', WindowHandle)

dev_clear_window()

*根据图像的灰度直方图来确定阈值,这里的Sigma是高斯滤波器,用于直方图的平滑
Sigma:=4

auto_threshold(image,Regions,Sigma)

在这里插入图片描述
在这里插入图片描述

2 binary_threshold二值化阈值

dev_close_window ()

read_image (image, 'egypt1')

get_image_size (image, Width, Height)

dev_open_window (0, 0, Width, Height, 'black', WindowID)

dev_clear_window ()




*使用二值化阈值分割图像
*如果LightDark =“light”,则选择灰度值大于或等于最佳阈值的所有像素。
*如果LightDark =“dark”,则选择灰度值小于的最佳阈值de 所有像素。
*通过选择Method ='max_separability',可以调用灰度直方图的自动阈值。
*该算法首先计算图像的直方图,然后使用统计矩来找到将像素划分为前景和背景的最佳阈值,
*并使这两个类之间的可分离性最大化。 此方法仅适用于字节和uint2图像。
binary_threshold (image, RegionMaxSeparabilityLight, 'max_separability', 'dark', UsedThreshold)

在这里插入图片描述

3 char_threshold字符提取

dev_close_window()

read_image(image,'alpha1')

get_image_size(image,Width,Height)

dev_open_window(0,0,Width,Height,'black', WindowHandle)

dev_clear_window()


*阈值分割提取字符,主要应用是在明亮的纸上分割黑色字符单通道图像
*第一个输入参数:图像
*第二个输入参数:要计算直方图的区域
*第三个输出参数:分割的字符区域
*第四个输入参数:直方图高斯平滑的Sigma
*第五个输入参数:灰度值差异的百分比
*第理工输出参数:输出计算出的阈值
char_threshold(image,image,Characters,6,95,Threshold)

在这里插入图片描述
在这里插入图片描述

4 dual_threshold分割

*读取一张图像
read_image(Traffic1,'traffic1')

*读取一张图片
read_image(Traffic2,'traffic2')

*将图像由byte类型转化为int2类型
convert_image_type(Traffic1,ImageConverted1,'int2')

*将图像由byte类型转换为int2类型
convert_image_type(Traffic2,ImageConverted2,'int2')

*将两个图像相减
sub_image(ImageConverted1,ImageConverted2,ImageSub,1,0)

*将有符号图像分割为正负两个区域
*第一个输入参数:图像
*第二个输出参数:分割后的正负区域
*第三个输入参数:最小区域大小
*第四个输入参数:最小灰度值大小
*第五个输入参数:阈值
dual_threshold(ImageSub,RegionDiff,500,20,10)

在这里插入图片描述

五 图像分割之阈值操作二

1 dyn_threshold局部阈值

dev_close_window()

read_image(image,'egypt1')

get_image_size(image,Width,Height)

dev_open_window(0,0,Width,Height,'black',WindowID)

dev_clear_window()

mean_image(image,ImageMean,9,9)

*用局部阈值来分割图像
*第一个输入参数:原始图像
*第二个输入参数:滤波后的图像
*第三个输出参数:分割后的区域
*第四个输入参数:补偿值,范围在540之间比较有用
*第五个输入参数:提取区域的类型,是亮的区域,或暗的区域,或相似区域
dyn_threshold(image,ImageMean,RegionDynThresh,15,'not_equal')

在这里插入图片描述
在这里插入图片描述

2 threshold固定阈值

dev_close_window()

read_image(image,'egypt1')

get_image_size(image,Width,Height)

dev_open_window(0,0,Width/2,Height/2,'black',WindowID)

dev_clear_window()

*用全局阈值分割图像,试用图像亮度均匀的场合
*第一个输入参数:输入图像
*第二个输出参数:分割后的区域
*第三个输入参数:阈值下限
*第四个输入参数:阈值上限
threshold(image,Region,0,150)

在这里插入图片描述
在这里插入图片描述

3 var_threshold局部阈值

dev_close_window()

read_image(image,'label_01')

get_image_size(image,Width,Height)

dev_open_window(0,0,Width/2,Height/2,'black', WindowHandle)

dev_clear_window()

*通过局部平均值和标准偏差进行阈值图像。试用场合不均匀的照明或噪声的图像
*第一个输入参数:输入图像
*第二个输出参数:分割后的区域
*第三个输入参数:均值和标准差的掩码宽度
*第四个输入参数:均值和标准差的掩码高度
*第五个输入参数:标准差因子
*第六个输入参数:最小灰度值和均值之差
*第七个输入参数:提取区域的类型,是亮的区域,或暗的区域,或相似区域,或不相似区域
var_threshold(image,Region,15,15,1.0,40,'dark')

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

# Kafka_深入探秘者(3):kafka 消费者

Kafka_深入探秘者(3):kafka 消费者 一、kafka 消费者、消费组 1、Kafka 消费者是消费组的一部分,当多个消费者形成一个消费组来消费主题时,每个消费者会收到不同分区的消息。假设有一个 T1 主题,该主题有…

【MySQL系列】abc索引分析

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习…

【操作与配置】WSL配置LINUX

WSL2(Windows Subsystem for Linux 2)是Microsoft开发的一项技术,允许用户在Windows操作系统上运行Linux发行版。WSL2是WSL(Windows Subsystem for Linux)的第二版,带来了许多改进和新特性。 官网&#xff…

Spring Security基本源码解析(超精细版)

一、基本源码解析 1.1 UsernamePasswordAuthenticationFilter 用户名称和密码的过滤器 浏览器发送用户名称和密码 ----》 经过过滤器「UsernamePasswordAuthenticationFitler」 1.2 UsernamePasswordAuthenticationFilter核心方法 重写父类「AbstractAuthenticationProcessing…

MySQL之可扩展性(八)

可扩展性 负载均衡 负载均衡的基本思路很简单:在一个服务器集群中尽可能地平均负载量。通常的做法是在服务器前端设置一个负载均衡器(一般是专门的硬件设备)。然后负载均衡器将请求的连接路由到最空闲的可用服务器。如图显示了一个典型的大型网站负载均衡设置,其中…

昇思25天学习打卡营第4天|常见的数据变换 Transforms类型

导入数据集相关库和模块 首先导入了一些必要的库和模块,包括 numpy(np 是其常用的别名)、PIL 库中的 Image 模块,以及自定义的 download 模块,还有 mindspore.dataset 中的 transforms、vision、text 模块。然后使用 m…

在预训练语言模型主流架构

文章目录 编码器-解码器架构因果解码器架构前缀解码器架构在预训练语言模型时代,自然语言处理领域广泛采用了预训练 + 微调的范式,并诞生了以 BERT 为代表的编码器(Encoder-only)架构、以 GPT 为代表的解码器(Decoder-only)架构和以 T5 为代表的编码器-解码器(Encoder-d…

springcloud-config服务器,同样的配置在linux环境下不生效

原本在windows下能争取的获取远程配置但是部署到linux上死活都没有内容,然后开始了远程调试,这里顺带讲解下获取配置文件如果使用的是Git源,config service是如何响应接口并返回配置信息的。先说问题,我的服务名原本是abc-abc-abc…

React 中 useEffect

React 中 useEffect 是副作用函数,副作用函数通常是处理外围系统交互的逻辑。那么 useEffect 是怎处理的呢?React 组件都是纯函数,需要将副作用的逻辑通过副作用函数抽离出去,也就是副作用函数是不影响函数组件的返回值的。例如&a…

stthjpv:一款针对JWT Payload的安全保护工具

关于stthjpv stthjpv是一款针对JWT Payload的安全保护工具,这款工具集多种技术和思想于一身,可以通过不断改变相关参数值来防止Payload被解码,以帮助广大研究人员更好地保护JWT Payload的安全性。 除此之外,该工具还能够确保JWT …

外贸业务员如何克服打电话恐惧?

更多外贸干货及开发客户的方法,尽在微信【千千外贸干货】 每个人都曾经历过从零开始的阶段。在我们决定要做外贸销售的那一刻起,便意识到沟通的重要性。许多朋友提到,通常通过邮件开发客户,或者在B2B平台上回复客户的询盘。但真的…

技术干货丨如何加速工业数字孪生应用落地?

什么是数字孪生? “孪生”概念最早可追溯至NASA的阿波罗项目,随着数字化技术的进步,“孪生”概念应用从物理孪生向数字孪生发展。即“数字孪生”是对资产、进程或系统的一种数字化表示,并通过信息交互、数据同步等方式实现物理实体…

云计算【第一阶段(23)】Linux系统安全及应用

一、账号安全控制 1.1、账号安全基本措施 1.1.1、系统账号清理 将非登录用户的shell设为/sbin/nologin锁定长期不使用的账号删除无用的账号 1.1.1.1、实验1 用于匹配以/sbin/nologin结尾的字符串,$ 表示行的末尾。 (一般是程序用户改为nologin&…

【Matlab 六自由度机器人】机器人动力学之推导拉格朗日方程(附MATLAB机器人动力学拉格朗日方程推导代码)

【Matlab 六自由度机器人】机器人动力学概述 近期更新前言正文一、拉格朗日方程的推导1. 单自由度系统2. 单连杆机械臂系统3. 双连杆机械臂系统 二、MATLAB实例推导1. 机器人模型的建立2. 动力学代码 总结参考文献 近期更新 【汇总】 【Matlab 六自由度机器人】系列文章汇总 …

原码、反码、补码、移码的计算转换

文章目录 正数负数原码 & 反码反码 -> 补码原码 <-> 补码移码 <- Other 方法总结练习 正数 原码 和 反码 和 补码 都是一样的不会发生变化 因此&#xff0c;计算的时候先看第一位 符号位 &#xff0c;只要能发现是正数&#xff0c;三者都不变 移码 在补码基础…

DataV大屏组件库

DataV官方文档 DataV组件库基于Vue &#xff08;React版 (opens new window)&#xff09; &#xff0c;主要用于构建大屏&#xff08;全屏&#xff09;数据展示页面即数据可视化&#xff0c;具有多种类型组件可供使用&#xff1a; 源码下载

Web渗透-逻辑漏洞

一、概述 逻辑漏洞是指由于程序逻辑不严或逻辑太复杂&#xff0c;导致一些逻辑分支不能够正常处理或处理错误&#xff0c;一般出现任意密码修改&#xff08;没有旧密码验证&#xff09;,越权访问&#xff0c;密码找回&#xff0c;交易支付金额等。对常见的漏洞进行过统计&…

蒙特卡洛法求定积分方

对于连续函数密度函数&#xff0c;求某一个区间的概率时&#xff0c;理论上通过积分获取&#xff0c; 以求曲线围成的面积为例 当我们在[a,b]之间随机取一点x时&#xff0c;它对应的函数值就是f(x)。接下来我们就可以用f(x)*(b-a)来粗略估计曲线下方的面积&#xff0c;也就是我…

探索区块链:颠覆性技术的崛起

目录 一、引言 二、区块链技术概述 三、区块链应用场景 四、区块链面临的挑战 五、区块链的未来展望 六、结语 一、引言 在数字化浪潮的推动下&#xff0c;区块链技术以其独特的去中心化、透明性和不可篡改性等特性&#xff0c;正在逐步改变我们的生活。从金融领域到供应…

最新Node.js安装及配置详细教程

文章目录 下载Node.js安装Node.js配置Node.js1、修改npm包的全局安装路径和缓存路径2、环境变量设置3、镜像源配置4、安装其他包管理工具 下载Node.js 下载&#xff1a;https://nodejs.org/en/download/prebuilt-installer&#xff0c;下载LTS版本的&#xff0c;LTS(Long Time…