膨胀、腐蚀、开、闭运算——数字图像处理中的形态学

2023-05-16

膨胀、腐蚀、开、闭运算是数学形态学最基本的变换。

形态学通常用于二值图像。

一。膨胀与腐蚀能够实现以下作用:

   1.消除噪声

   2.分割出独立的图像元素,在图像中连接相邻的元素

   3.寻找图像中的明显的极大值区域或者极小值区域

   4.求出图像的梯度

需要注意之处: 腐蚀和膨胀都是对图像的白色部分(高亮部分)而言

膨胀---是图像中的高亮部分进行膨胀,类似于领域扩张,效果图拥有比原图更大的高亮区域;

腐蚀---是原图的高亮部分被腐蚀,类似于领域被蚕食,效果图拥有比原图更小的高亮区域。

从数学的角度来说,膨胀和腐蚀操作就是将图像与核进行卷积,核可以是任意形状和大小的。核大,则周围对其影响大,变化大,核小,则周围对其影响小,变化小。

*膨胀(dilate)

   把二值图像各1像素连接成分的边界扩大一层(填充边缘或0像素内部的孔);

膨胀就是求局部最大值的操作。核B与图像卷积,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中高亮区域逐渐增长

以下是膨胀操作的示意图:

 

*腐蚀(erode)

   把二值图像各1像素连接成分的边界点去掉从而缩小一层(可提取骨干信息,去掉毛刺,去掉孤立的0像素);

腐蚀就是求局部最小值的操作。核B与图像卷积,即计算核B覆盖的区域的像素点的最小值,并把这个最小值赋值给参考点指定的像素。这样就会使图像中高亮区域逐渐减少

以下是腐蚀操作的示意图:

 

更加高级的形态学变换

运用膨胀和腐蚀这两个基本操作,可实现较高级的形态学变换,如 开运算,闭运算,形态学梯度,顶帽,黑帽。

*开运算(opening Operation)

  开运算其实就是先腐蚀再膨胀(个人理解:此操作偏向腐蚀的作用,例如有毛刺的图像,腐蚀后毛刺没有,膨胀也不会产生毛刺)

   数学表达式:dist = open(src,element) = dilate(erode(src,element))  

  开运算可以用来可以去掉目标外的孤立点消除小物体,在纤细处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积。

*闭运算(closing Operation)

  闭运算其实就是先膨胀再腐蚀(个人理解:此操作偏向膨胀的作用,例如有毛刺的图像,膨胀后毛刺加粗,膨腐蚀也不会消除毛刺)

 数学表达式: dist = close(src,element) = erode(dilate(src,element))  

  闭运算能够可以去掉目标内的孔,排除小型黑洞(黑色区域)。

*形态学梯度(morphological Gradient)

 形态学梯度就是膨胀图与腐蚀图之差,

数学表达式: dist = morph-grad(src,element) = dilate(src,element) - erode(src,element)

 对二值图像进行这一操作,可以将团块的边缘突出出来(膨胀(扩充边缘图)—腐蚀(缩减边缘图)=轮廓的环状边缘),我们可以用形态梯度来保留物体的边缘轮廓

*顶帽(top Hat)

 顶帽就是原图与开运算图之差

数学表达式: dist = tophat(src,element) = src - open(src,element)

 因为开运算带来的结果是:放大了裂痕或者局部低亮度的区域。因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,且这一操作与选择的核的大小有关。

 顶帽运算往往用来分离比邻近点亮一些的斑块,在一幅图像具有大幅的背景,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取

*黑帽(black Hat)

 黑帽就是原图与闭运算图之差

数学表达式: dist = blackhat(src,element) = close(src,element)  - src

 黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作与核的大小有关。

 黑帽运算用来分离比临近点暗一点的斑块,效果图有着非常完美的轮廓

数学形态学在图像处理中的主要应用包括:边缘检测、图像分割、形态骨架提取、噪声滤除。

选取结构元素的方法:多结构元素、遗传算法。

二、 二值图像的腐蚀操作

1. 结构的原点设置在结构的内部情况举例

  •  
    图中左侧(a)为原图像,右侧(b)为结构元素。

    • 第一步 拿结构元素第一次完全匹配原图(右侧为输出图像)
    •          

    • 第二步 然后我们根据原点在原图像中的位置,在输出图像上完全对应的位置上涂黑,即输出图像更变为 

    • 第三步 在原图中寻找下一个完全和结构元素匹配部分,即 

    • 第四步 根据此刻结构元素的原点在原图像上的位置,在输出图像相同的位置上涂黑,即 

       

    • 第五步 寻找完毕,操作完毕。

2. 结构的原点设置在结构的外部情况举例

  •  
    左侧为原图,右侧为结构元素,注意,这里的结构元素的原点不在结构元素内部。

  • 第一步 拿结构元素第一次完全匹配原图(右侧为输出图像) 

  • 第二步 根据结构元素的原点在原图中的位置,我们再输出图像相应的位置涂黑,即 

  • 第三步 在原图中寻找下一个完全和结构元素匹配部分,即 

  • 第四步 根据此刻结构元素的原点在原图像上的位置,在输出图像相同的位置上涂黑,即 

  • 第五步 寻找完毕,操作完毕。

膨胀的原理应该是用结构的原点遍历所有原图中的背景点,看结构与原图中的前景点有没有重叠的部分,若有重叠的部分,则标记原图中的该背景点,使之成为新的前景点

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

膨胀、腐蚀、开、闭运算——数字图像处理中的形态学 的相关文章

  • Mysql整体介绍(适用于5.X版本)(上)(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 Mysql整体介绍 xff08 适用于5 X版本 xff09 标贝科技 Mysql 8
  • TE、TM、TEM模式的区别

    在一众电磁仿真软件的使用中 xff0c 牵涉到平面波的设置或Floquet端口的设置 在设置平面波时 xff0c 论坛里有不少人提到TE波 TM波 xff1b 在设置Floquet端口时 xff0c 又有不少人提到TE极化 TM极化 其实
  • linux下TCP socket编程入门案例(二)——非阻塞的TCP server&client

    文章目录 1 相关概念介绍1 1 阻塞与非阻塞1 2 两者区别1 3 select模型 2 编码实现2 1 代码改进2 2 实现服务端客户端 3 运行结果 在 上一篇 阻塞的TCP server amp client 中 xff0c 介绍了
  • cartographer 主从机rviz订阅地图出错

    cartographer 主从机rviz订阅地图出错 配置及想法 机器人以及虚拟机都是ubuntu16 43 kinetic xff0c 本意想在虚拟机端查看机器人cartographer的建图情况 直接在虚拟机端运行命令 rviz d t
  • TCP的连接和建立(三次握手和四次挥手)

    1 TCP连接的建立 连接的建立 xff0c 通常称为三次握手 建立连接前服务器处在收听状态 第一步 xff1a 客户机的TCP向服务器的TCP发送连接请求报文段 同步位 61 1 这时客户进程进入同步已发送状态 第二步 xff1a 服务器
  • 网络编程(8)自定义网络通讯协议

    C C 43 43 网络通讯真正要用起来 xff0c 不但要写一个好的网络服务器 xff0c 还要定好一套通讯协议才能真正实用 通讯协议业界目前除了用开源的如XMPP以外 xff0c 基本上都是自定义一套通讯协议 xff0c 自已负责封包
  • libtorch导致OPENCV错误:对‘cv::imread(std::string const&, int)’未定义的引用

    1 问题描述 xff1a 报错 xff1a cmakelist txt 提示 xff1a 如果你报了相同的错误 xff0c 但是没有安装libtorch的话 xff0c 可能是cmakelist中没有target link librarie
  • 串口调试助手-QT

    串口调试助手 该程序使用Qt框架 xff0c C 43 43 语言编译而成 项目文件介绍 xff1a main cpp 该文件为该程序的入口程序 mainwindow h 该文件为该程序的主要声明部分 mainwindow cpp 该文件为
  • 基于STM32的电机--电机概述

    文章目录 电机直流有刷电机步进电机伺服电机直流无刷电机舵机 电机 电机 xff1a 俗称 马达 xff0c 依据电磁感应定律实现 电能转换或传递 的一种电磁装置 包括 xff1a 电动机和发电机 电动机在电路中是用M表示 xff0c 它的主
  • 免费公测 标贝声音理解,检测声音性别和年龄

    古有听声辨位 xff0c 今有听声 识 人 说到声音 xff0c 其本质是不同频率声音的集合 xff0c 以波的形式振动 xff08 震动 xff09 传播 由于每个人的发声器官 xff08 口腔 鼻腔 声带 xff09 各不相同 xff0
  • 前后端分离Token验证流程

    1 根据header获取token request getHeader Authorization 2 判断token 是否存在 3 token 不存在 过滤器放行 存在 根据token 获取用户名 根据用户名查询用户记录 UserDeta
  • 车载毫米波雷达MIMO阵列的天线发射问题

    说明 关于MIMO Multiple Input Multiple Output xff0c 多发多收 就不做过多介绍了 xff0c MIMO技术用于车载毫米波雷达主要的目的是增加虚拟通道 xff0c 以期使用较少的收发天线数量来达到较大的
  • 毫米波雷达的硬件架构与射频前端

    说明 本篇博文梳理 车载 毫米波雷达的系统构成 xff0c 特别地 xff0c 对其射频前端各部件做细节性的原理说明 本篇博文会基于对这方面知识理解的加深以及读者的反馈长期更新内容和所附资料 xff0c 有不当之处或有其它有益的参考资料可以
  • 串口+DMA 数据收发编程实践

    更多交流欢迎关注作者抖音号 xff1a 81849645041 目标 了解DMA 的工作原理 xff0c 通过配置 STM32F407 芯片的DMA xff0c 实现串口 43 DMA数据收发 原理 基于USART的数据通讯中采用中断方式可
  • W25Q128读写实验

    更多交流欢迎关注作者抖音号 xff1a 81849645041 目的 熟悉W25Q128串行FLASH的特性和操作指令 掌握通过SPI通讯读写W25Q128数据 原理 本章是结合SPI通讯对串行FLASH的读写 xff0c 通过SPI发送指
  • TFTLCD屏幕实验

    更多交流欢迎关注作者抖音号 xff1a 81849645041 目的 了解TFTLCD屏幕和FSMC的驱动原理 xff0c 通过STM32F4的FSMC接口来控制TFTLCD的显示 原理 1 液晶显示器 显示器属于计算机的I O设备 xff
  • STM32F4主板硬件设计与接口

    更多交流欢迎关注作者抖音号 xff1a 81849645041 本专栏的所有程序都在飞航科技 STM32 F407 开发板上测试通过 xff0c 本文介绍一下STM32 F407 开发板硬件设计与接口 xff0c 便于读者学习交流 STM3
  • 基于STM32F0实现人体红外传感器

    目的 了解人体红外传感器 HC SR501 的驱动原理和STM32F030的中断机制 xff0c 通过配置 STM32F030 芯片 GPIO 相关寄存器和外部触发中断实现人体红外传感器检测人体 原理 中断是指当CPU执行程序时 xff0c
  • STM32F0底板硬件架构设计与原理

    STM32F0底板接口明细 xff1a STM32F0底板作为整块节点的核心 xff08 如下图所示 xff09 xff0c 因此其接口相对应来说较多 xff0c 具体的接口有 xff1a 1 xff1a 5V电源输入口 xff0c STM

随机推荐

  • 基于STM32F030驱动SHT10温湿度传感器

    目的 了解温湿度传感器SHT10的驱动原理 xff0c 通过配置 STM32F030 的GPIO来采集温湿度传感器的温度 湿度和露点的 值 原理 SHT1x 包括 SHT10 SHT11 和 SHT15 属于Sensirion温湿度传感器家
  • Mysql整体介绍(适用于5.X版本)(下)(标贝科技)

    标贝科技 https ai data baker com source 61 qwer12 填写邀请码fwwqgs xff0c 每日免费调用量还可以翻倍 Mysql整体介绍 xff08 适用于5 X版本 xff09 下 xff09 xff0
  • 基于STM32F030实现RFID射频识别

    目的 了解MFRC522读写卡芯片和S50非接触IC卡的驱动原理 xff0c 通过配置 STM32F030 的GPIO和外设SPI xff0c 完成MFRC522传感器与卡的数据读写以及扣款充值实验 原理 MFRC522是高度集成的非接触式
  • MCS-51单片机学习之路(1)

    简介 单片机即单片机微型单片机 xff0c 是将单片机主机 CPU 内存和I O接口 集成在一小块硅片上的微型机 单片机又称微控制器 MCU 单片机具有三高优势 集成度高 可靠性高 性价比高 单片机的历史 第一阶段 xff0c 初级单片 机
  • 【Linux C语言查看SD卡大小】

    1 说明 在linux 环境下 xff0c 使用C预言获取SD卡容量信息 2 环境说明 硬件环境 xff1a ARM或者其他任意开发板 软件环境 xff1a Linux 任意版本 3 原理 statfs 函数 xff0c 可以获取磁盘的容量
  • shell 脚本实现的 deamon 守护进程

    1 说明 在linux 环境下 xff0c 使用 shell 脚本编写一个守护进程 xff0c 在后台一直运行 xff0c 监听需要守护的进程名称 xff0c 如app xff08 1 xff09 当检测到app进程停止 xff0c 则将其
  • mips uclibc 交叉编译ffmpeg,支持 G711A 编解码

    1 说明 使用 ffmpeg 源码 xff0c 进行交叉编译 xff0c 支持 H264 和 G711A 编码支持 2 环境说明 硬件环境 xff1a mips 架构芯片 软件环境 xff1a Linux 任意版本 3 原理 xff08 1
  • Linux下USB CDC ACM 驱动简析

    一 硬件平台 xff1a TI AM335X 芯片 二 软件平台 xff1a Ubuntu 10 04 三 USB CDC ACM 驱动简介 USB的CDC类是USB通信设备类 xff08 Communication Device Clas
  • Openwrt增加对 sd card 支持

    一 硬件平台 1 1 控制器 xff1a MT7620 xff08 A9内核 xff09 二 软件平台 2 1 开发环境 xff1a Ubuntu12 04 2 2 软件版本 xff1a openwrt 官方15 05版本SDK开发包 xf
  • linux sed命令删除特殊字符(含斜线、冒号等转义字符)

    简介 sed 是一种在线编辑器 xff0c 它一次处理一行内容 处理时 xff0c 把当前处理的行存储在临时缓冲区中 xff0c 称为 模式空间 xff08 pattern space xff09 接着用sed命令处理缓冲区中的内容 xff
  • makefile 中指定程序运行时加载的库文件路径

    1 问题描述 程序运行时 xff0c 提示找不到库 原因 xff1a 默认运行加载的库路径为 usr lib 2 解决方法 2 1 方法一 xff0c 设置PATH环境变量 如何在加入这些路径呢 xff1f 以PATH变量为例 一种方法是
  • Openwrt 新增平台编译

    1 说明 本文主要介绍 xff0c 如何在openwrt系统中 xff0c 新增一个平台进行编译 如原本的openwrt 包含了adm5120 arc770 ath25 imx6等平台 xff0c 现在需要新增一个sc9820平台的编译 本
  • Docker概述(一)(标贝科技)

    Docker概述 xff08 一 xff09 顺便介绍下 xff1a 我们是一家致力于智能语音交互的AI公司 xff0c 我们提供了语音识别 语音合成 声纹识别 声音复刻 声音转换等技术产品供小伙伴们测试调用 xff0c 感兴趣的 xff0
  • 树莓派网络配置

    1 说明 1 树莓派有线网络配置 1 树莓派系统WIFI 静态IP设置 2 树莓派系统DNS地址 etc resolv conf 开机后被还原为空或者192 168 1 1处理方法 2 环境 软件环境 xff1a 树莓派3 0 系统 硬件环
  • Linux 读写memory操作,devmem直接访问物理内存地址

    1 说明 由于开发需要 xff0c 需要通过memory传输数据 xff0c 所以使用devmem 方式读写数据 xff0c 操作linux 内存数据 devmem的方式是提供给驱动开发人员 xff0c 在应用层能够侦测内存地址中的数据变化
  • Open3D+vs配置以及使用教程

    Open3d 0 8 0 43 Cmake 43 vs2015 1 下载 简要看一下官网 xff1a Open3D Home Page Github主页 xff1a Open3D Github 注意下载版本 xff0c 一定要与vs相匹配
  • 彻底明白ip地址,区分localhost、127.0.0.1和0.0.0.0

    通俗的了解IP地址是什么 对于IP地址 xff0c 大家并不陌生 xff0c 特别是在网络访问中我们会经常使用到 xff08 平时对域名如百度的www baidu com的访问 xff0c 本质就是对域名所绑定的IP地址的访问 xff09
  • C3927 “->“: 非函数声明符后不允许尾随返回类型等错误

    C3927 34 gt 34 非函数声明符后不允许尾随返回类型等错误 xff0c 如下所示 xff1a 解决方法 xff1a 在VS2015版本 Visual Studio 2015 Update 2 xff0c 增加一个编译选项 utf
  • c++ nan或inf

    nan xff1a not a number 非数字 注意事项 xff1a 对负数开方sqrt 1 0 对负数求对数 log 1 0 0 0 0 0 0 0 inf inf inf inf inf这些操作都会得到nan 0 0会产生操作异常
  • 膨胀、腐蚀、开、闭运算——数字图像处理中的形态学

    膨胀 腐蚀 开 闭运算是数学形态学最基本的变换 形态学通常用于二值图像 一 膨胀与腐蚀能够实现以下作用 xff1a 1 消除噪声 2 分割出独立的图像元素 xff0c 在图像中连接相邻的元素 3 寻找图像中的明显的极大值区域或者极小值区域