Halcon腐蚀erosion_circle/erosion_rectanglel

news2025/4/21 14:51:42

Halcon腐蚀

文章目录

  • Halcon腐蚀

腐蚀操作是对所选区域进行“收缩”的一种操作,可以用于消除边缘和杂点。腐蚀区域的大小与结构元素的大小和形状相关。其原理是使用,个自定义的结构元素,如矩形、圆形等,在二值图像上进行类似于“滤波”的滑动操作,然后将二值图像对应的像素点与结构元素的像素进行对比,得到的交集即为腐蚀后的图像像素。图(a)为二值化后的图像,图(b)为使用一个圆形的结构元素对图像进行腐蚀,得到的结果为“收缩”了一圈的图像,见图(c)。
在这里插入图片描述
经过腐蚀操作,图像区域的边缘可能会变得平滑,区域的像素将会减少,相连的部分可能会断
开。即使如此,各部分仍然属于同一个区域。
Halcon 中有许多与腐蚀操作相关的算子,比较常用的有erosion_circle 算子和erosion_rectanglel算子,它们分别使用圆形与矩形结构元素对输入区域进行腐蚀操作。这里以erosion circle算子为例进行说明。erosion_circle算子的原型如下:

erosion circle(Region : RegionErosion : Radius :)

其中各参数的含义如下。
(1)参数1:Region 为输入图像中的区域,该区域往往是由上一环节的某种分割操作得到的输
出结果,如闽值处理提取的区域等。
(2)参数2:RegionErosion 为输出的腐蚀后的区域。
(3)参数3:Radius 为圆形结构元素的半径。其具体值取与想要被去除的杂点的大小有关。因为小于这个圆形结构元素的点都会被移除,而该圆形的直径一般是一个奇数,如3、5、7、9等,所以该半径取值一般会取 1.5、2.5、3.5、4.5……默认值是3.5。
注意,圆形的直径取奇数是因为圆形是对称图形,这样做是为了使圆形的中心点坐标为整数。
下面以一个简单的例子来说明腐蚀操作。图(a)即原始图像,为一幅背景较为复杂的图像。目标是提取较大的面积芯片区域。因此,可以先将图像转化为单通道灰度图像,并使用阈值进行简单的灰度分割。阈值分割图像如图(b)所示。在满足条件的区域使用erosion_circle算子移除杂点,erosion_circle 算子的输入区域为图(b)的红色部分,腐蚀的结果如图(c)所示。
在这里插入图片描述

图中腐蚀操作的代码如下:
read_image (Image,' data/board')
rgbl_to_gray (Image, GrayImage)
threshold (GrayImage, Region, 100, 255)
erosion _circle (Region, RegionErosion, 7.5)
erosion_circle (RegionErosion, RegionErosion2,6.5)
dev_clear_window ()
dev_display (RegionErosion2)

因为经阈值处理后,图像中会包含背景中的许多杂点和非关键区域,所以这里通过腐蚀操作移除杂点,并且在腐蚀的结果上进行重复腐蚀,以达到理想的结果。腐蚀操作很容易让图像中出现“空洞”,因此可以使用膨胀或者闭运算进行后续处理。
上文提到的erosion_circle算子是使用圆形结构元素进行腐蚀操作,还可以选择其他形状的结构元素,如erosion_rectangle1算子是使用矩形结构元素进行腐蚀,用法与erosion_circle算子类似、也可以使用自定义的结构元素或者其他方式。Halcon中与腐蚀有关的其他算子如下。
(1)erosion1:用一个自定义的结构元素对输入区域进行腐蚀操作。这个自定义的结构元素需要预先创建,可能是圆形、矩形、多边形,甚至是点,等等。
(2)erosion2:使用一个参考点对输入区域进行腐蚀操作。这个算子中的结构元素有一个参考点,这个点与erosion1中的点不同,它可以是指定的任意一点。
(3)erosion_golay:使用的结构元素来自格雷字母表,通过定义结构元素对输入区域进行腐蚀操作。
(4)erosion_seq:与erosiongolay 类似,使用格雷字母表中的元素对输入区域进行连续的腐蚀操作。

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

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

相关文章

最简单的基于 SDL2 的音频播放器

最简单的基于 SDL2 的音频播放器 最简单的基于 SDL2 的音频播放器正文工程文件下载 参考雷霄骅博士的文章,链接:最简单的基于FFMPEGSDL的音频播放器:拆分-解码器和播放器 最简单的基于 SDL2 的音频播放器 正文 SDL2 音频播放器实现了播放 …

【零基础入门VUE】在 Vue 中构建复杂表单

✍面向读者:所有人 ✍所属专栏:零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 目录 v-modelVue 中的 指令 Vue 中的组件 没有构建步骤 随着构建步骤 注册 VUE 组件 Vue 道具 VUE 中的道具声明 在 VUE 中传递 PROP…

unknown variable ‘authentication_policy=mysql_native_password‘

unknown variable authentication_policymysql_native_password 背景解决尝试一尝试二(解决) 总结 背景 mac上安装多个版本数据库。我是通过dmg安装的,先装的5.7,再装的5.8,然后5.8的能正常用,5.7的启动不起来。报错信息为如下 …

docker安装mysql看这一篇就够了

docker安装mysql 一、 安装docker二、docker安装mysql三、设置MySQL远程访问 一、 安装docker 1、安装依赖环境,yum-utils yum -y install yum-utils device-mapper-persistent-data lvm2 备注:使用yum工具下载 yum是软件包管理工具 通过 执行 man yum…

nodejs+vue网上书城图书销售商城系统io69w

功能介绍 该系统将采用B/S结构模式,使用Vue和ElementUI框架搭建前端页面,后端使用Nodejs来搭建服务器,并使用MySQL,通过axios完成前后端的交互 系统的主要功能包括首页、个人中心、用户管理、图书类型管理、图书分类管理、图书信…

【Redis技术专区】「原理分析」探讨Redis 6.0为何需要启用多线程?

探讨Redis 6.0为何需要启用多线程 背景介绍开启多线程多线程的CPU核心配置IO多线程模式单线程处理方式多线程处理方式 为什么要开启多线程?充分利用多核CPU提高网络I/O效率响应现代应用需求 多线程实现启用多线程 最后总结 背景介绍 在Redis 6.0版本中,…

【ONE·MySQL || 数据类型 表的约束】

总言 主要内容:介绍MySQL中的常见数据类型(数值类型、文本二进制类型、时间日期、字符串类型),以及对表的约束(非空约束、默认约束、列描述、零填充约束、自增长约束、主键约束、唯一键约束、外键约束)。  …

【Vue】使用Axios请求下载后端返回的文件流,并能够提示后端报错信息

【需求】使用Axios请求下载后端返回的文件流,下载失败时提示信息不写死,按照后端返回的信息进行提示。 一、需求分析 看到这个需求的时候,有人可能会很疑惑,这不是直接就能获取到吗,直接message.error()弹框就完事了&…

【webpack】高级篇

webpack高级应用 安装流程提高开发效率与完善团队开发规范devtool属性 devServer属性下compress属性port属性headers请求头proxy开启代理https配置http2配置historyApiFallback配置开发服务器主机 host模块热替换与热加载 eslint代码规范取消黑色背景弹窗提示 git-hooks与husky…

Vue中methods,watch与computed之间的差异

Methods methods 选项定义了组件中可以调用的方法。这些方法可以在模板中通过事件绑定或者在其他方法中调用。methods 中的函数可以接受参数,并且可以执行任意的 JavaScript 代码。因此,methods 主要用于处理组件中的用户交互、事件响应和自定义的操作。…

【FileZilla的安装与使用以及主动与被动模式详解

目录 一. FileZilla是什么? 二. FileZilla的安装与使用 2.1 FileZilla服务端安装与配置 2.1.2 新建组 2.1.3 新建用户 2.1.4 新建目录 2.1.5 权限分配 (1)用户fu权限分配 2.2 FileZilla客户端安装与使用 2.2.1 权限分配测试 权限演…

【ARMv8M Cortex-M33 系列 2.1 -- Cortex-M33 使用 .hex /.srec 文件介绍】

请阅读【嵌入式开发学习必备专栏 之Cortex-M33 专栏】 文章目录 HEX 文件介绍英特尔十六进制文件格式记录类型hex 示例Cortex-M 系列hex 文件的使用 hex 文件和srec 文件生成Motorola S-Record (srec) 格式 HEX 文件介绍 .hex 文件通常用于微控制器编程,包括 ARM C…

JUC Lock 锁入门

文章目录 死锁(Deadlock)通过 Visualvm 等工具排查死锁 活锁park & unpark与 wait & notify 的区别park & unpark 实现:点外卖 Lock 对象ReentrantLock 可重入锁可重入lockInterruptibly 方法上锁(可打断)…

C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合

上一篇: C#,入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果https://blog.csdn.net/beijinghorn/article/details/123478581 C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net…

Field II 仿真软件——安装

1. 去官网下载文件压缩包 Field II Ultrasound Simulation Program (field-ii.dk) 在Download页面下载符合自己系统的压缩包。 2. 解压压缩文件,然后将这个文件夹添加到matlab的路径中,如下图所示: 3. 在matlab命令行输入:field…

05 HAL库驱动蜂鸣器唱出一首小歌

目录 一、蜂鸣器的基本知识 1、有源蜂鸣器 2、无源蜂鸣器 二、PWM的相关知识 1. PWM概念 2. PWM常见参数 3.PWM基本结构 三、蜂鸣器发出音调的原理 四、频率计算 五、实验开始 一、蜂鸣器的基本知识 蜂鸣器是一种能够发出持续而连续的声音的电子设备,它被…

【十一】【C++\动态规划】1218. 最长定差子序列、873. 最长的斐波那契子序列的长度、1027. 最长等差数列,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…

.NET进阶篇06-async异步、thread多线程2

知识须要不断积累、总结和沉淀,思考和写做是成长的催化剂web 内容目录 1、线程Thread 一、生命周期 二、后台线程 三、静态方法 1.线程本地存储 2.内存栅栏 四、返回值 2、线程池ThreadPool 一、工做队列 二、工做线程和IO线程 三、和Thread区别 四、定时器 1、线…

3D视觉-激光三角测量法的分类

按照入射激光光束和被测物体表面法线的角度关系,一般分为直射式和斜射式两种方式。 1)直射式测量 如图所示,激光器发出的光线,经会聚透镜聚焦后垂直入射到被测物体表面上,物体移动或者其表面变化,导致入射…

纯CSS的华为充电动画,它来了

📢 鸿蒙专栏:想学鸿蒙的,冲 📢 C语言专栏:想学C语言的,冲 📢 VUE专栏:想学VUE的,冲这里 📢 Krpano专栏:想学Krpano的,冲 &#x1f514…