【计算机视觉】图像处理算法(形态学滤波篇)

来源:《OpenCV3编程入门》,怀念毛星云大佬🕯️
说明:本系列重点关注各种图像处理算法的原理、作用和对比

形态学滤波(1 ):腐蚀与膨胀

形态学槪述

数学形态学的概念:
数学形态学(Mathematical morphology)是立在格论和拓扑学基础之上的图像分析学科,足数学形态学阁像处现的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽収、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀、灰值开闭运算、灰值形态学梯度等。简中来讲,形态学操作就是基于形状的一系列图像处理操作。OpenCV为进行图像的形态学变换提供了快捷、方便的函数。最基本的形态学操作有两种,分别是:膨胀(dilate)与腐蚀(erode)。膨胀与腐蚀能实现多种多样的功能,主要如下。

  • 消除噪声;
  • 分割(isolate)出独立的阁像元索,在图像中连接(join)相邻的元素:
  • 寻找图像中的明显的极大值K域或极小值区域;
  • 求出图像的梯度。

在进行腐蚀和膨胀的讲解之前,首先提醒大家注意.腐蚀和膨胀是对**白色部分(高亮部分)**而言的,不是黑色部分。膨胀是图像中的髙亮部分进行膨胀,类似于“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的髙亮部分被腐蚀,类似于“领域被蚕食效果图拥有比原图更小的高亮区域。

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

膨胀

膨胀(dilate)就是求局部最大值的操作。从数学角度来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,称之为A)与核(称之为B)进行卷积。核可以是任何形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点(anchorpoint)。多数情况下,核是一个小的,中间带有参考点和实心正方形或者圆盘。其实,可以把核视为模板或者掩码。而膨胀就是求局部最大位的操作。核B与图形卷积,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐増长,这就是膨账操作的初衷。

示例图:
在这里插入图片描述

腐蚀

膨胀和腐蚀 ( erode) 是相反的一对操作 ,所以腐蚀就是求局部最小值的操作。我们一般都会把腐蚀和膨胀进行对比理解和学习。两者的
函数原型也是基本一样的。

示例图:
在这里插入图片描述

形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽

形态学的高级形态,往往都是建立在腐蚀和膨胀这两个基本操作之上的。

开运算

开运算(Opening Operation),其实就是先腐蚀后膨胀的过程。开运算可以用来消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积

示例图:
在这里插入图片描述

闭运算

先膨账后腐蚀的过程称为闭运算(Closing Operation),闭运算能够排除小型黑洞(黑色区域)

示例图:
在这里插入图片描述

形态学梯度

形态学梯度(Morphological Gradient)是膨胀图与腐蚀图之差。对二值图像进行这操作可以将团块(blob)的边缘突出出来。我们可以用形态学梯度来保留物体的边缘轮廓

个人理解(以黑白2值图为例):膨胀和腐蚀都是对边缘进行操作,腐蚀是黑色向白色区域内腐蚀,膨胀是白色向黑色区域内膨胀,向内和向外的操作会产生一个粗的线条区域,这个区域在腐蚀的时候是黑色,在膨胀的时候是白色,这个时候差值就是白色,其他的区域在腐蚀和膨胀的时候是不变的,差值就是0,也就是黑色,这样白色区域就表现出了边缘信息。

示例图:
在这里插入图片描述

顶帽

顶帽运算(Top Hat)又常常被译为"礼帽“运算,是原图像与开运算的结果图之差,因为开运算带来的结果是放大了裂缝或者局部低亮度的区域。由此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,且这一操作与选择的核的大小相关。顶帽运算往往用来分离比邻近点亮一些的斑块。在一幅图像具有大幅的背景,而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取

示例图:
在这里插入图片描述

黑帽

黑帽(Black Hat)运算是闭运算的结果图与原图像之差,黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,且这一操作
和选择的核的大小相关。所以,黑帽运算用來分离比邻近点暗一些的斑块,效果图有着非常完美的轮廓。示例如阁6.38和图6.39所示。

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

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

相关文章

《深度学习风暴:掀起智能革命的浪潮》

在当今信息时代,深度学习已经成为科技领域的一股强大力量,其应用领域涵盖了从医疗到金融再到智能交互等方方面面。随着技术的不断进步和应用的不断拓展,深度学习的发展势头愈发迅猛,掀起了一股智能革命的浪潮。本文将从基本原理、应用实例、挑战与未来发展方向、与机器学习…

CSS3基础2

CSS3 用户界面 resize 示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

关于 JVM

1、请你谈谈你对JVM的理解&#xff1f; JVM由JVM运行时数据区&#xff08;图示中蓝色框包含部分&#xff09;、执行引擎、本地库接口、本地方法库组成。 JVM运行时数据区&#xff0c;分为方法区、堆、虚拟机栈、本地方法栈和程序计数器。 1.方法区 Java 虚拟机规范中定…

在web中应用mybatis

搭建环境 数据库表的设计 create table bank(id bigint auto_increment primary key ,actno varchar(255) comment "账号",balance decimal(15,2) comment "余额" ); insert into bank values(1,act001,50000); insert into bank values(2,act002,0);添加…

期刊《International Journal of Information Security》

International Journal of Information Security 官网截图 出版选项 自由选择OA或者订阅 Aims and scope 投稿方向 Latest issue Volume 82 In progress (May 2024) This issue is in progress but contains articles that are final and fully citable. 有一篇: Vol…

数据分析-Pandas数据y轴双坐标设置

数据分析-Pandas数据y轴双坐标设置 数据分析和处理中&#xff0c;难免会遇到各种数据&#xff0c;那么数据呈现怎样的规律呢&#xff1f;不管金融数据&#xff0c;风控数据&#xff0c;营销数据等等&#xff0c;莫不如此。如何通过图示展示数据的规律&#xff1f; 数据表&…

YOLOv8旋转目标检测实战:训练自己的数据集

课程链接&#xff1a;https://edu.csdn.net/course/detail/39393 旋转目标检测是计算机视觉领域的一个高级任务&#xff0c;它在传统目标检测的基础上进一步发展。传统目标检测技术主要关注于识别和定位图像中的物体&#xff0c;通常以水平边界框(HBB)来标识目标物体的位置。而…

深入浅出计算机网络 day.1 概论① 信息时代的计算机网络

我想&#xff0c; 我不会暗下来的&#xff0c; 生命是周而复始的橙黄橘绿时 —— 24.3.9 内容概述 计算机网络的各类应用 计算机网络带来的负面问题 我国互联网发展情况 一、计算机网络的各类应用 1.信息浏览和发布 2.通信和交流 3.休闲和娱乐 4.资源共享…

文件包含漏洞初识

一、基础知识介绍 在web后台开发的时候&#xff0c;我们会使用PHP&#xff0c;Java这种代码&#xff0c;而在使用的过程中&#xff0c;我们经常会使用包含函数&#xff08;也就是调用&#xff09;&#xff0c;而很多时候&#xff0c;前端用户在选择浏览时会调用包含的文件这无…

流浪动物救助小程序|基于微信小程序的流浪动物救助系统设计与实现(源码+数据库+文档)

流浪动物救助小程序目录 目录 基于微信小程序的流浪动物救助系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、寻宠信息管理 3、动物求助管理 4、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐…

算法详解——leetcode150(逆波兰表达式)

欢迎来看博主的算法讲解 博主ID&#xff1a;代码小豪 文章目录 逆波兰表达式逆波兰表达式的作用代码将中缀表达式转换成后缀表达式文末代码 逆波兰表达式 先来看看leetcode当中的原题 大多数人初见逆波兰表达式的时候大都一脸懵逼&#xff0c;因为与平时常见的表达式不同&am…

el-table 插入输入框并进行校验

<template><div><el-form :model"list" ref"ruleForm"><el-table :data"list.tableData" style"width: 100%"><el-table-column prop"time" label"日期" width"180"><…

一周学会Django5 Python Web开发-Django5内置模板引擎-模板标签

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计33条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

HCIA-HarmonyOS设备开发认证V2.0-习题2

目录 习题一习题二坚持就有收获 习题一 # 判断题## 1.PWM占空比指的是低电平时间占周期时间的百分比。(错误)正确(True)错误(False)解题&#xff1a; - PWM占空比指的是高电平时间占周期时间的百分比## 2.UART是通用异步收发传输器&#xff0c;是通用串行数据总线&#xff0c;…

ROS2学习(七) Foxy版本ros2替换中间件。

在ros2使用的过程中&#xff0c;一开始选用的foxy版本&#xff0c;后来发现&#xff0c;foxy版本的ros2有很多问题。一个是foxy版本已经停止维护了。另一个问题是这个版本有很多bug, 后续的版本在功能实现上做了很大的改动&#xff0c;甚至说进行了重写。修复的一些问题&#x…

四、软考-系统架构设计师笔记-信息系统基础知识

1、信息系统概述 信息系统的定义 信息系统是由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户和规章制度组成的以处理信息流为目的的人机一体化系统。 信息系统任务是对原始数据进行收集、加工、存储&#xff0c;并处理产生各种所需信息&#xff0c;以不同的方式…

修改Android打包apk的名字和目录

app打包生成apk后通常需要进行备份&#xff0c;但是要区分好哪个apk是什么版本的、什么时候打包的&#xff0c;以方便以后区分使用。 最开始的想法是把版本号、创建时间这些加在apk文件名上即可&#xff0c;但是公司要求apk使用一个固定的名称&#xff0c;那我怎么保存版本号信…

Ubuntu平铺左、右、上、下、1/2、1/4窗口(脚本)

前言 之前因为一直在用Ubuntu 18或者Ubuntu 20然后发现装了GNOME插件后&#xff0c;电脑在使用过程中&#xff0c;会时不时的卡死&#xff08;鼠标没问题&#xff0c;键盘输入会有10-20秒的延迟&#xff09;频率基本是一小时一次&#xff0c;因为这种卡顿会很容易打断思路&…

Jenkins 部署 RuoYi

目录 1、项目介绍 2、部署若依 clone 源代码 导入数据库到 node-16 修改 RuoYi 配置文件 推送 RuoYi 项目至 Gitlab 3、配置 Jenkins 配置本地 Maven Jenkins 配置 Maven 新建 Maven 项目 编写构建后的脚本 Jenkins 构建后执行脚本 4、Jenkins 传递参数 设置项目部…

React 19 Cheat Sheet

React 19让构建网站和应用程序变得更容易&#xff0c;更好。有了很酷的新东西&#xff0c;比如React编译器、Actions API和更好的Hooks&#xff0c;编写代码变得更快&#xff0c;管理应用程序的数据变得更简单 React 19让构建网站和应用程序变得更容易&#xff0c;更好。有了很…