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

news2024/10/6 5:59:16

来源:《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.coloradmin.cn/o/1510477.html

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

相关文章

通过案例学习提高沟通绩效的方法

在工作过程中,是否经常听到员工抱怨费力不讨好,而上级总是对员工工作不满意,认为员工理解力太差、工作不认真,员工很冤枉,上级很恼火,总之是双方谁也不认为谁错。面对这样的问题,我们该如何解决…

13---HDMI电路设计

视频链接 HDMI电路设计01_哔哩哔哩_bilibili HDMI电路设计 1、HDMI简介 HDMI全称“High Definition Multimedia Interface高清多媒体接口”。2002年4月,来自电子电器行业的7家公司—日立、松下、飞利浦、Silicon Image、索尼、汤姆逊、东芝共同组建了HDMI高清多…

数据分析:如何深挖原因,推动业务

我们都知道,做事情如果只解决表面原因,并不能真正解决所有问题。但是,很多时候,数据分析的大部分工作,却让你花尽心思去找表面原因。比如: 用户数下跌了:A渠道新用户下跌 转化率提升了&#x…

在表格中循环插入表单

<template><div class"key">{{ruleForm.casesRange}}<el-form label-position"top" :model"ruleForm" refruleForm><el-form-item label"这个表格怎么写"><el-table :data"tableData" border>…

一次生产环境上的dockerd启动失败原因分析

今夜原计划对 生产环境 上的 SDN 组件进行一次紧急扩容操作的&#xff0c;但业务基础环境中的 Docker-Engine 启动不起来了、原定计划也就无法继续进行了。 尽管查清了基础业务环境中的故障原因&#xff0c;但金主DD说今天先不干了&#xff0c;那就整理整理思路写篇流水账吧 。…

什么!Python爬虫还能帮你找老婆?

大家好&#xff0c;今天是周日&#xff0c;来点愉快的。昨天在读书的时候&#xff0c;看到一个案例说美国有一位大哥&#xff0c;为了找到一个合适的女朋友&#xff0c;写了一段代码拿到了婚恋网站的一些妹子数据&#xff0c;然后使用一些模型对数据进行分类&#xff0c;接着根…

如何制作一个包含图文视频信息的二维码如何生成?办公多功能利器!

一个包含图片、文字、视频、PDF文件等多种内容的二维码——二维彩虹H5编辑二维码正在各行各业发挥着重要作用。 和普通的二维码不同&#xff0c;H5编辑二维码可以展示更多种类&#xff08;图文视频等&#xff09;、和数量的内容&#xff0c;被广泛应用在多种办公场景。你可以将…

mysql对索引的选择简述

概述 在业务中经常会优化一些mysql的慢查询&#xff0c;通常都是使用explain去查看分析&#xff0c;检查扫描行数和索引的命中情况&#xff1b; 但是在具体索引的选择上&#xff0c;explain结果中并没有直接展示出来&#xff1b; 此时可以开启mysql的追踪优化器Trace功能&…

(golang)切片何时会创建新切片或影响原切片

什么时候切片操作会影响原切片 // 1.切片后没有触发slice的扩容机制时 什么时候对切片操作会创建新切片不影响原切片 // 2.对切片头元素进行截取的时候 // 3.当使用append时&#xff0c;len > cap则会触发扩容机制 前置&#xff1a; //slice结构体 type SliceHeader struct…

JavaWeb05-JSP

目录 一、JSP 1.概述 2.主要作用 3.快速入门 4.JSP原理 5.JSP脚本 &#xff08;1&#xff09;主要分类 6.JSP使用 7.JSP缺点 8.EL表达式 &#xff08;1&#xff09;概述 &#xff08;2&#xff09;主要功能 &#xff08;3&#xff09;使用 &#xff08;4&#xff…

Java中JDK定时任务

Java中JDK定时任务 一、JDK自带Timer1.Timer核心方法&#xff08;1&#xff09;schedule与scheduleAtFixedRate区别schedule侧重保持间隔时间的稳定scheduleAtFixedRate保持执行频率的稳定 2.java.util.TimerTask&#xff08;1&#xff09;TimerTask核心方法 3.Timer的缺陷4.Ti…

内部审计2.0时代:数字化工具和方法全面升级

文章目录 一、内部审计的发展阶段二、内部审计的逻辑架构三、内部审计数字化转型面临的问题&#xff08;1&#xff09;缺少内部审计数字化转型规划和方案&#xff08;2&#xff09;非结构化数据的采集和后续利用不足&#xff08;3&#xff09;依赖编程或使用新工具的数据分析能…

MySQL分析sql语句的性能瓶颈的几种方式介绍

在 MySQL 中&#xff0c;性能瓶颈可能会导致数据库系统运行缓慢&#xff0c;影响用户体验。为了确保数据库的性能&#xff0c;识别和解决性能瓶颈是非常重要的。以下是一些常用的方法来分析 SQL 语句的性能瓶颈&#xff1a; 1. EXPLAIN 语句 EXPLAIN 是一个强大的工具&#xff…

发布DDD脚手架到Maven仓库,IntelliJ IDEA 配置一下即可使用

这篇文章将帮助粉丝伙伴们更高效地利用小傅哥构建的DDD&#xff08;领域驱动设计&#xff09;脚手架&#xff0c;搭建工程项目&#xff0c;增强使用的便捷性。让&#x1f46c;&#x1f3fb;兄弟们直接在 IntelliJ IDEA 配置个在线的链接&#xff0c;就能直接用上这款脚手架&…

day1-C++

1>提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成。 代码&#xff1a; #include <iostream> #include <string.h> using namespace std;int main() {string str ;int low 0, …

在funtion中用分号间隔还是逗号间隔

问: 回答: 这段代码是一个Vue组件方法的实现&#xff0c;名为resetForm。该方法的主要作用是关闭一个对话框&#xff08;通过设置this.dialogFormVisible false&#xff09;&#xff0c;重置表单字段&#xff08;使用this.$refs[formName].resetFields();&#xff09;&#x…

ROS机器人程序设计课程进度安排-2023-2024-2

进度安排由人工智能审核制定。 课程 教学进度表预期效果与课程内容详细描述 一、预期效果 此教学进度表旨在确保《ROS机器人程序设计》课程在2023&#xff5e;2024学年度第二学期内&#xff0c;按照预定的教学计划和进度&#xff0c;有序、高效地进行。通过本课程的教学&…

容器(0)-DOCKERFILE-安装-常用命令-部署-迁移备份-仓库

1.安装 启动 systemclt start docker //启动 systemctl status docker //状态 docker info systemclt stop docker systemctl status docker systemctl enable docker //开机启动 2.常用命令 镜像查看 docker images 镜像查看 docker status 镜像拉取 docker pull centos:…

【Spring】idea连接mysql数据库

1 MySQL安装 下载地址&#xff1a;https://dev.mysql.com/downloads/installer/ 安装server only选项&#xff0c;之后的可以选择默认安装选项 2 MySQL登录并创建数据 -- 创建数据库 create databases spring_db; use spring_db; -- 创建表 create table users (id INT AUTO…

学习大数据,所需要Java基础(9)

文章目录 网络编程实现简答客户端和服务器端的交互编写客户端编写服务端 文件上传文件上传客户端以及服务器端实现文件上传服务器端实现&#xff08;多线程&#xff09;文件上传服务器端&#xff08;连接池版本&#xff09;关闭资源工具类 BS架构服务器案例案例分析BS结构服务器…