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

一 如何填充区域之间的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:=4auto_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.mzph.cn/pingmian/37208.shtml

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

相关文章

Flask路由和视图

Flask路由和视图 一、 路由系统 1. 路由系统基础 路由装饰器: Flask使用装饰器app.route来将URL规则绑定到视图函数上。 装饰器可以指定路径规则(rule)、请求方法(methods)、以及别名(endpoint&#xff…

php反序列化漏洞简介

目录 php序列化和反序列化简介 序列化 反序列化 类中定义的属性 序列化实例 反序列化实例 反序列化漏洞 序列化返回的字符串格式 魔术方法和反序列化利用 绕过wakeup 靶场实战 修复方法 php序列化和反序列化简介 序列化 将对象状态转换为可保持或可传输的格式的…

Linux—系统安全及应用

目录 一、账号安全控制 1、系统账号清理 1.1、将用户账号设置为无法登录 1.2、锁定长期不使用的账号 1.3、删除无用的账号 1.4、锁定账号文件passwd、shadow 2、密码安全控制 2.1、设置密码有效期 2.1.1、适用于新建用户 2.1.2、适用于已有用户 2.2、强制用户下次登录…

①常用API----Math

public static int abs(int a) // 返回参数的绝对值 public static double ceil(double a) // 返回大于或等于参数的最小整数 public static double floor(double a) // 返回小于或等于参数的最大整数 public static int round(f…

ETAS工具导入DEXT生成Dcm及Dem模块(一)

文章目录 前言Cfggen之前的修改ECU关联DcmDslConnectionDiagnostic ProtocolDiagnostic Ecu Instance PropsCommonContributionSetEvent修改communication channel总结前言 诊断模块开发一般是先设计诊断数据库,OEM会释放对应的诊断数据库,如.odx文件或.cdd文件。如果OEM没有…

Linux-chown的使用简介

一、chown命令作用 更改文件或目录的所有者和所属群组 二、chown命令用法 Chown用法:chown [参数] 所有者:所属者 文件名 (参数非必要,可为空) 参数 参数说明 user 新的文件拥有者的使用者 ID group 新的文件拥有者的使用者组(group) -c 显示更改…

如何修复Power BI【View usage metrics report】指标报表数据源更新问题?

故事背景 有朋友留言询问:通过我之前写的 想知道Power BI用户访问报告的次数?快来学习! 这篇文章,了解了如何查看Power BI用户访问报告的详情。 但是最近由于创建【View usage metrics report】指标报表的小伙伴离职了&#x…

特种作业操作证(焊接与热切割作业)2024年理论考试题库。

1.关于隐弧排烟罩下列说法正确的是()。 A.这类排烟罩适用于焊接大而长的焊件时排除电焊烟尘和有毒气体 B.这类排烟罩对焊接区实行密闭,能最大限度地减少臭氧等有毒气体的弥散 C.利用压缩空气从主管中高速喷出时,在副管形成负压…

【干货】一文讲清楚社群裂变的主要模式和SOP流程

一、社群裂变的主要模式 社群裂变是一种依赖于现有成员的推广以吸引新成员的增长策略。以下是几种主要的社群裂变模式: 老带新裂变 定义:通过老用户带动新用户,同时给予某一方或双方奖励的一种裂变形式。 示例:任务宝活动&…

sensor multi-hal

multi-hal :多个 hal 层. 高通 sensor 一般是挂在 ADSP 那边,但是,有些时候 想把 sensor 驱动放入到 kernel 那边,这个时候 就要用到 multi-hal 功能呢, 高通平台这个功能默认是打开的。 在BoardConfig.mk中打开mutil-hal USE_S…

Linux使用g++编译常见问题

std::this_thread 编译不通过 在使用 std::thread 时,需要链接 pthread 库,因为 std::thread 使用了 POSIX 线程库来实现多线程功能。您可以通过在编译时加上 -pthread 选项来解决这个问题。这个选项会告诉编译器链接 pthread 库,确保 std::…

公交车载视频监控系统概述

引言 随着城市交通的不断发展,公交车作为城市公共交通的重要组成部分,其安全性和管理效率越来越受到关注。为了提升公交车运营的安全性和管理效率,基于索迪迈视频监控管理平台,结合3G/4G网络技术,我们构建了一套公交车…

三星DRAM、NAND,“又双叒叕”带头涨价了

据韩国媒体《每日经济新闻》报道,三星电子计划在第三季度上调服务器DRAM和企业级NAND闪存的价格,涨幅预计在15%-20%,主要受人工智能(AI)需求激增的推动。这一举措有望提振公司下半年业绩。 据《经济日报》报道援引业内消息,由于厂…

007 栈(lua)

文章目录 Lua本身支持动态数组,通过表(table)实现,它类似于Java中的ArrayList。Lua的表是灵活的数组和字典的混合体。对于栈的实现,我们可以简单地使用一个表来模拟。 这里是一个简单的Lua栈实现,它包含了p…

jupyter安装及使用

引言 之前安装了anaconda,然后conda的环境管理里面就有jupyter,但是我一直没用过。 但是我用过colab,从使用体验上来说,非常相似,这次给服务器装了一个jupyter,然后我本地连接远程的来用,还挺…

【教程】几种不同的RBF神经网络

本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com 目录 一、经典RBF神经网络1.1.经典径向基神经网络是什么1.2.经典径向基神经网络-代码与示例 二、广义回归神经网络GRNN2.1.广义回归神经网络是什么2.2.广义回归神经网络是什么-代码与示例 三、概率…

一台TrinityCore服务器客户端连接网速慢(未解决)

在FreeBSD开bhyve安装Ubuntu,然后安装了TrinityCore服务器,在只是经过一层NAT,两边都是局域网的情况下,连接速度竟然很慢,慢到600ms。 服务器安装见:尝试在FreeBSD 的jail、bhyve里安装TrinityCore-CSDN博…

利用 MyBatis 动态 SQL 构建灵活的查询

利用 MyBatis 动态 SQL 构建灵活的查询 引言 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。其中,MyBatis 的动态 SQL 功能是其强大之处之一,它允许你在 XML 映射文件中根据条件动态地构建 SQL 语句&#xff0c…

知识图谱综述

什么是知识图谱 4月 24, 2024 119 这是一个基于这个优秀而全面的知识图谱教程的教程。 来源:Aidan et al., Knowledge Graphs, https://arxiv.org/pdf/2003.02320.pdf 一、说明 在我们周围的现实世界中,物体和它们之…

仿真CAN报文发送的CRC校验算法(附CAPL代码)

文章目录 前言一、为什么CAN报文有CRC?二、怎么确定是否需要做CRC校验?三、CAPL代码实现CRC算法 前言 关于CRC校验的基本理论、算法实现网上已经有很多介绍文章,本文不再赘述。只是记录在项目测试中真正开发CRC算法并进行测试的一些体会。 …