【C++的OpenCV】第七课-OpenCV图像常用操作(四):图像形态学-图像侵蚀和扩散的原理

news2024/7/30 17:41:47

让我们来深化前边学习的内容

  • 前言
  • 一、图像形态学是什么?
  • 二、侵蚀和扩张的原理
    • 2.1 图像的侵蚀
      • 2.1.1 概念
      • 2.1.2 原理解释
    • 2.2 图像的扩张
      • 2.2.1 概念
      • 2.2.2 原理解释


相关链接:【C++的OpenCV】第六课-OpenCV图像常用操作(三):OpenCV的图像的侵蚀和扩张


前言

        本章节将围绕上章节内容进行深化学习,主要目的是基本理解图像形态学中关于侵蚀和扩张的基本原理,目得是方便读者理解后期更为复杂的图像处理中的图像形态学原理(例如:图像降噪、图像的边界检测等)。


一、图像形态学是什么?

        图像形态学是一组图像处理操作,其基于预定义的结构单元图像也称为内核的结构元素来处理图像。输出图像中的每个像素的值基于输入图像中的每个元素和内核结构元素的比较得出的像素值。通过选择内核的大小和形状,可以构建对输入图像的特定形状敏感的形态操作。


二、侵蚀和扩张的原理

  • 备注:图像的扩张也称为扩散或者膨胀,图像的侵蚀也称为腐蚀,都是一个意思。
  • 无论是侵蚀还是扩张,都是对图像高亮或者白色区域进行的操作。
  • 为了让大家更好的理解,我们在一下的举例中,均以二进制图像为例。
  • 具体更深层次会涉及到图像的卷积处理(滤波),实际操作中不一定需要这部分内容,作为了解大家可以参考。图像卷积处理的本质:针对图像对应的矩阵使用一个参考矩阵(卷积核)在图像矩阵中从左到右、从上到下的进行移动,移动到指定位置时,卷积核中心元素对应的图像矩阵元素取值等于卷积核所有元素值与图像矩阵和卷积核重合范围内的对应元素相乘后相加得到的值
  • 同样,我们这里以内核中心作为锚点,去遍历图像的每个像素点(高亮或者白色的像素点,这里通过遍历过程中的条件去设置阈值可以限制其只对高亮和白色像素点进行侵蚀或者扩张),从而得到每个像素点的相邻区域(这个区域的形状即为内核形状)。
  • 解释:
    在这里插入图片描述
    所以,绿色部分在源图像上所盖住的部分就是需要处理的高亮像素点的相邻区域及这个高亮像素点本身(处理的是锚点所对应的像素,其余地方为相邻区域):
    在这里插入图片描述
    那么,接下来就是内核像素和原图像像素及相邻区域的卷积运算了。

2.1 图像的侵蚀

2.1.1 概念

        侵蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。

2.1.2 原理解释

往下看,和扩张原理相同,只是取“内核覆盖的原始图像区域中的像素最大值”而已。

2.2 图像的扩张

2.2.1 概念

        扩张类似于“领域扩张”,将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大

2.2.2 原理解释

        例如,使用线性三元素内核对图像进行处理。
在这里插入图片描述
然后就很简单了,取蓝色区域(即内核的形状)中所有元素的最大值,即1。这个最大值就是目标图像对应src图像(原图像)同一位置像素点的值。
在这里插入图片描述


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

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

相关文章

RK3568镜像的拆包和打包

文章目录 前言一、window上分包和打包分包打包二、Linux上分包和打包分包打包总结前言 本文记录在win10上利用瑞芯微提供的工具进行分包和打包,同样也有Linux教程 提示:以下是本篇文章正文内容,下面案例可供参考 一、window上分包和打包 分包 window下一般直接利用工具即…

【正点原子FPGA连载】 第十八章基于BRAM的PS和PL的数据交互 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id692450874670 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第十八章基于BRA…

在 Flutter 中使用 webview_flutter 4.0 | 基础用法与事件处理

大家好,我是 17。 Flutter WebView 一共写了四篇文章 在 Flutter 中使用 webview_flutter 4.0 | 基础用法与事件处理在 Flutter 中使用 webview_flutter 4.0 | js 交互Flutter WebView 性能优化,让 h5 像原生页面一样优秀,已入选 掘金一周 …

AI绘画进军三次元,有人用它打造赛博女友?(diffusion)

目录0 写在前面1 AI绘画技术飞跃2 效果展示3 环境配置3.1 下载基础模型3.2 更新.NET和模型3.3 下载绘画模型3.4 启动项目3.5 标签配置4 结语0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理&a…

内存数据库-4-[redis]在ubuntu中离线安装

Ubuntu20.04(linux)离线安装redis 官网redis下载地址 下载安装包redis-6.0.9.tar.gz。 1 下载安装 (1)解压 sudo tar -xzvf redis-6.0.9.tar.gz -C /usr/local/ cd /usr/local/redis-6.0.9/(2)编译 sudo make(3)测试 sudo dpkg -i libtcl8.6_8.6.10dfsg-1_amd64.deb sudo d…

纯x86汇编实现的多线程操作系统实践 - 第七章 AP2的用户进程

AP2用户进程的代码为task2.asm。该用户进程将在界面上显示一个移动的弹球。一旦在界面上点击鼠标左键,弹球就会直接从鼠标点击处重新出现并继续移动。如何在界面上显示出一个持续移动的小球?计算小球将移动到的区域1->保留该区域中将被小球覆盖的点-&…

智慧物联网源码带手机端源码 物联网系统源码

在智慧工厂领域,智慧城市领域,都需要对设备进行监控。比如工厂需要对周围环境温度、湿度、气压、电压,灯的开关进行监控。这时候就需要物联网平台来进行管理。 推荐一个基于java开发的物联网平台,前端HTML带云组态、可接入视频监…

【华为OD机试模拟题】用 C++ 实现 - 网上商城优惠活动(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明网上商城优惠活动题目输入输出备注示例一输入输出说明输入说明输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才…

Android zygote进程启动流程

zygote启动过程中涉及到以下模块: app_processzygote USAPsocketFileDescriptor (FD) AndroidRuntimeAppRuntime (定义于app_process模块,继承自AndroidRuntime。) init进程启动zygote进程: #init.zygote32_64.rc s…

【华为OD机试模拟题】用 C++ 实现 - 统计匹配的二元组个数(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 去重求和(2023.Q1) 文章目录 最近更新的博客使用说明统计匹配的二元组个数题目输入输出描述示例一输入输出说明示例二输入输出说明备注Code使用说明 参加华为od机试,一定要注意不要完全背诵代码&

python读写hdfs文件的实用解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

Python学习笔记之环境搭建

Python学习笔记之环境搭建1. 下载Python2. Windows 安装最新Python3. Linux 安装最新PythonPython是一种编程语言,可以让您更快地工作并更有效地集成系统。 您可以学习使用Python,并立即看到生产力的提高和维护成本的降低。 Python是荷兰程序员吉多范罗苏…

使用 OpenCV 进行面部和眼睛检测

OpenCV是构建计算机视觉应用程序的强大工具。计算机视觉中最常见的任务之一是人脸检测,它涉及识别图像或视频中人脸的存在、位置和面部特征。在本文中,我们将学习如何使用 Haar 级联分类器检测图像中的人脸。先决条件在开始之前,你需要在计算…

Android打造万能的BannerView无限轮播图

效果图:工程目录图:BannerAdapter:banner轮播图的适配器,因为服务器返回的列表图片的url,显示的时候需要转成IamgeViw; BannerScroller:设置切换页面的持续时间; BannerView&…

怎样划分MES系统实施阶段,三分钟告诉你整体实施思路

MES系统的实施阶段划分的思路是:在集成的前提下实现可视化,在可视化的基础上实现精细化,在精细化的前提下实现均衡化。生产过程透明的目的就是要实现生产过程的可视化,实现精细化生产。首先要做的就是收集生产信息,这是…

Linux->进程地址空间

目录 前言: 1. 程序地址空间回顾 2. 进程空间是什么 3. 进程地址空间与内存 4. 进程地址空间和内存的关联 5. 为什么要有进程地址空间 前言: 我们在平时学习的过程当中总是听到栈、堆、代码段等等储存空间,但是这些东西到底是什么&…

CSS3新特性

CSS3新特性 1.1、字体图标 何为字体图标? 字体图标展示的是图标,本质是字体。用于处理简单的、颜色单一的图片 字体图标的优点: 灵活性:灵活地修改样式,例如:尺寸、颜色等轻量级:体积小、渲…

Java并发编程(1)—— 操作系统、Linux、Java中进程与线程的区别

一、操作系统中什么是线程和进程 线程和进程都是操作系统中定义的结构,进程是系统中一个独立的活动程序,比如像QQ、网易云音乐,进程是操作系统进行资源分配的基本单位,一个进程中的所有线程共享进程内的资源,而线程则…

【Python学习笔记】第十八节 Python 内置函数

Python 内置函数内置函数就是Python给你提供的, 拿来直接用的函数,比如print,input等Python 内置函数一览表内置函数abs()divmod()input()open()staticmethod()all()enumerate()int()ord()str()any()eval()isinstance()pow()sum()basestring()execfile()…

ARMv8 同步和信号量(读写一致性问题):Load-Exclusive/Store-Exclusive指令详解

目录 一,Local Monitor 与 Global Monitor 1,Local Monitor 2,Global Monitor 二,Exclusive 指令的简单使用 三,Exclusive 示例程序 1,原子自加1程序 2,原子锁程序 四, 多处理…