当前位置: 首页 > news >正文

图像预处理方法

图像预处理

膨胀腐蚀概述

⚫ 膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作

⚫ 膨胀腐蚀是基于高亮部分(白色)操作的, 膨胀是対高亮部分进行膨胀, 类似“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域被蚕食”
⚫ 膨胀腐蚀的应用和功能:

消除噪声

分割独立元素或连接相邻元素

寻找图像中的明显极大值、极小值区域

求图像的梯度

⚫ 其他相关:

开运算、闭运算

顶帽、黒帽形态学梯度

1)膨胀—cv2.dilate()

膨胀就是求局部最大值的操作, 从数学角度上来讲, 膨胀或腐蚀就是将图像(或区域)A与核B进行卷积。

核可以是任意大小和形状, 它有一个独立定义的参考点(锚点), 多数情况下, 核是一个小的中间带参考点和实心正方形或者圆盘, 可以看做是一个模板或掩码。

膨胀是求局部最大值的操做, 核B与图形卷积, 即核B覆盖的区域的像素点的最大值, 并把这个最大值复制给参考点指定的像素, 这样就会使图像中的高亮区域逐渐增长, 如下图所示:
在这里插入图片描述
函数原型:
在这里插入图片描述

⚫src: 输入原图像(建议为二值图)
⚫dst: 输出图像要求和src一样的尺寸和类型
⚫kernel: 膨胀操作的核, 当为NULL时, 表示使用参考点位于中心的3x3的核
一般使用cv2.getStructuringElement获得指定形状和尺寸的结构元素(核)
在这里插入图片描述
可选以下三种形状: 矩形、交叉形、椭圆形
ksize和anchor分别表示内核尺寸和锚点位置
⚫anchor: 锚的位置, 默认值Point(-1,-1), 表示位于中心
⚫interations: 膨胀的次数
⚫borderType: 边界模式, 一般采用默认值
⚫borderValue: 边界值, 一般采用默认值

exl:
k1=np.ones ( (5,5), np .uint8)
dilation = cv2.dilate (img, k1, iterations=1)

在这里插入图片描述

2)腐蚀—cv2.erode()

腐蚀和膨胀相反, 是取局部最小值, 高亮区域逐渐减小, 如下图所示:
在这里插入图片描述
函数原型:

在这里插入图片描述

exl:
k1=np.ones ((5,5), np .uint8)
erosion = cv2.erode(img, k1, iterations=1)

在这里插入图片描述

形态学其他操作:

开运算、闭运算、顶帽、黒帽、形态学梯度

基于膨胀腐蚀基础, 利用cv2.morphologyEx()函数进行操作
核心函数:
在这里插入图片描述
⚫src: 输入原图像
⚫dst: 输出图像要求和src一样的尺寸和类型
⚫op: 表示形态学运算的类型, 可以取如下值:
在这里插入图片描述
CV2 .MORPH DILATE
CV2 .MORPH
OPEN
CV2 .MORPH_ TOPHAT
CV2 .MORPH_ ERODE
CV2.MORPH CLOSE
CV2 .MORPH
BLACKHAT
CV2.MORPH_ GRADIENT
⚫kernel: 形态学运算内核, 若为NULL, 表示使用参考点位于中心的3x3内核, 一般使用getStruecuringElement函数获得
⚫anchor: 锚的位置, 默认值Point(-1,-1), 表示位于中心
⚫interations: 迭代使用函数的次数, 默认为1
⚫borderType: 边界模式, 一般采用默认值
⚫borderValue: 边界值, 一般采用默认值

1)开运算(open)

开运算是先腐蚀后膨胀的过程, 开运算可以用来消除小物体, 在纤细点处分离物体, 并在平滑较大物体边界的同时不明显的改变其面积。
在这里插入图片描述
在这里插入图片描述

2)闭运算(close)

闭运算是先膨胀后腐蚀的过程, 闭运算可以用来消除小型黑洞(黑色区域)。
在这里插入图片描述
在这里插入图片描述

3)形态学梯度(Gradient)

形态学梯度是膨胀图与腐蚀图之差, 对二值图可以将团块(blob)边缘凸显出来, 可以用其来保留边缘轮廓。

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

4)顶帽(Top Hat)

顶帽运算也被称为”礼帽”, 是开运算结果和原图像做差的结果, 可以用来分离比邻近点亮一些的斑块。
在这里插入图片描述
在这里插入图片描述

5)黒帽(Black Hat)

黑帽运算是原图像和开运算做差的结果, 可以用来分离比邻近点暗一些的斑块。
在这里插入图片描述
在这里插入图片描述

相关文章:

图像预处理方法

图像预处理 膨胀腐蚀概述 ⚫ 膨胀、腐蚀属于形态学的操作, 简单来说就是基于形状的一系列图像处理操作 ⚫ 膨胀腐蚀是基于高亮部分(白色)操作的, 膨胀是対高亮部分进行膨胀, 类似“领域扩张”, 腐蚀是高亮部分被腐蚀, 类似“领域被蚕食” ⚫ 膨胀腐蚀的应用和功能: 消除噪声…...

【蓝桥杯C/C++】专题六:动态规划

专题六:动态规划 目录专题六:动态规划导读什么是动态规划解决的问题解题步骤动态规划应该如何debug记忆化搜索斐波那契数题目代码题解爬楼梯题目代码题解使用最小花费爬楼梯题目代码题解不同路径题目题解dfsdp凑硬币题目题解dfsdp滑雪题目代码题解汉罗塔…...

图的定义和基本术语

图的定义和基本术语1.图的定义2.图的基本术语3.图的分类1.图的定义 图是由顶点和有穷非空集合和顶点边的集合吗,表示为G(V,E)。 G表示一个图,V是图G的顶点(数据元素)的集合,E是图G中顶点之间边的集合。在图中&#xf…...

041:cesium加载Blue Marble地图

第041个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载Blue Marble地图。Blue Marble是一个术语,用来描述星球漂浮在浩瀚太空中的形象。早在 1972 年,阿波罗 17 号任务的工作人员就首次捕捉到了地球的标志性卫星图像,并将其称为“Blue Marble”。从那时起,NA…...

【概念梳理】激活函数

一、引言 常用的激活函数如下: 1、Sigmoid函数 2、Tanh函数 3、ReLU函数 4、ELU函数 5、PReLU函数 6、Leaky ReLU函数 7、Maxout函数 8、Mish函数 二、激活函数的定义 多层神经网络中,上层节点的输出和下层节点的输入之间具有一个函数关系,…...

【python】@property 和 @staticmethod

property 和 staticmethod 是 Python 中的两个装饰器,它们分别用于在类中创建属性或静态方法。它们的作用如下: property property:用于将类的一个方法作为属性访问。在 Python 中,使用“getter” 和“setter”方法来实现属性&a…...

Spring题集 - Spring AOP相关面试题总结

文章目录01. Spring AOP 的理解?02. Spring AOP 思想的代码实现03. Spring AOP 的相关术语有哪些?04. Spring AOP 基于注解的切面实现?05. Spring AOP 的通知有哪些类型?06. AOP 有哪些实现方式?07. Spring AOP 和 AspectJ AOP 有…...

分考场

[蓝桥杯 2017 国 C] 分考场(假题&#xff1a;最小色数) 题目描述 nnn 个人参加某项特殊考试。 为了公平&#xff0c;要求任何两个认识的人不能分在同一个考场。 求最少需要分几个考场才能满足条件。 输入格式 第一行&#xff0c;一个整数 n(1<n<100)n(1<n<100…...

BI技巧丨DAX Studio

DAX Studio DAX Studio&#xff0c;作为PowerBI外部插件使用率排名第一的插件&#xff0c;相信各位小伙伴或多或少都听说过&#xff0c;那么DAX Studio具体有哪些功能呢&#xff1f; PS&#xff1a;DAX Studio的下载链接&#xff0c;小伙伴们可以自行搜索&#xff0c;这里就不…...

Java 8常用时间 API

Date: 你不爱我了吗? &#x1f6a1;本地时间时区相关格式化在Java 8中&#xff0c;Instant类用于表示时间戳&#xff0c;相当于旧的Date类&#xff1b;LocalDateTime类用于表示日期和时间&#xff0c;相当于旧的Calendar类&#xff1b;DateTimeFormatter类用于格式化日期和时间…...

C++运算符

C运算符 运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 内置了丰富的运算符&#xff0c;并提供了以下类型的运算符&#xff1a; 算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符 1. 算术运算符 运算符描述实例把两个操作数相加A B 将得到 30-从第…...

低/无代码赋能企业,IT与业务的角色正在悄然改变

现在这个社会&#xff0c;年轻人的压力是真的大&#xff0c;需要会的技能多到数不清。想学习多点技能也不知道去哪学&#xff0c;主要是网络资源太丰富&#xff0c;很难找到一个适合自己的。那接下来推荐4个大神级别的资源网站你可一定得码住&#xff0c;都是年轻人特别 …...

SpringCloud学习2(Spring Cloud Netflix)负载均衡Ribbon、Feign负载均衡、Hystix服务熔断

文章目录负载均衡RibbonRibbon的作用代码实现生产者cloud1_provider实现配置文件在HiController中编写以下代码启动集群消费者cloud1_consumer实现引入依赖编写配置文件编写启动类&#xff0c;并给RestTemplate配置LoadBalanced注解编写RestController来测试Feign负载均衡简介F…...

Spring 源码解析 - @Async 注解下的循环依赖问题原理

一、Async 注解下的循环依赖问题 我们都知道 Spring IOC 单例模式下可以帮助我们解决循环依赖问题&#xff0c;比如下面自己依赖自己循环依赖的场景&#xff1a; Component public class TestAsync {ResourceTestAsync async;public void test() {System.out.println("t…...

8个全球性编程比赛,天才程序员的梦想舞台

很多编程爱好者在学习之初&#xff0c;都渴望与全球的程序员一较高下&#xff0c;以证明自己的实力。 一些全球性的编程竞赛为他们提供了这样的机会&#xff0c;不仅可以与全世界的顶尖程序员们交流&#xff0c;还有机会获得丰厚的奖金和进入顶级公司的机会&#xff0c;更重要…...

2023年中国海洋大学计算机及电子信息考研分析

考研时间跨度&#xff1a; 初试时间&#xff1a; 2022年8月23 海大推免及创新人才计划接收通知。 2022年9月13 海大专业目录及人数&#xff0c;包含推免。 2022年10月18 2022年硕士研究生计划 &#xff0c;不含推免。 海大2022年硕士研究生计划 网上第一次时间为2022年9月24日…...

【C++笔试强训】第六天

选择题 1. 解析&#xff1a;十进制转换为八进制就是不断的除8&#xff0c;取余数。十进制转换成其他进制的数就是除以进制&#xff0c;取余。 解析&#xff1a;注意printf的转换&#xff0c;%%只会打印一个%&#xff0c;所以选A。 解析&#xff1a;由于()的原因p先和*结合&…...

Redission 中的 RedLock 原理实现, springboot 你造吗?

分布锁之RedLock 锁住你的心我的爱 &#x1f682;为什么需要使用 RedLock锁被误释放时钟不一致问题锁的“延迟释放”而不是死锁Redlock是啥redlock 存在什么问题惊群效应时钟漂移Redisson 实现 RedLock在 Redisson 中, RedLock的实现类是哪一个类?这一招叫抛砖引玉springboot …...

【沐风老师】3dMax一键房屋创建者插件使用方法详解

3dmax一键房屋创建者&#xff0c;一键生成墙体、窗洞和门洞的插件&#xff01;这个脚本主要用于创建或捕获一些架构项目所代表的平面&#xff0c;这是通过导入它们并在每个所需的层添加值来实现的。传统方法&#xff0c;但是省事儿多了&#xff01; 【版本要求】 3dMax 2015及…...

C/C++ 变量详解

文章目录前言一、静态变量与动态变量1. 概念2. 区别3. 使用方法和注意事项3.1 静态变量3.2 动态变量4. 结论二、全局变量与局部变量1. 区别2. 全局变量的使用方法和注意事项3. 局部变量的使用方法和注意事项4. 总结前言 对C学习感兴趣的可以看看这篇文章哦&#xff1a;C/C教程…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

微服务商城-商品微服务

数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时&#xff0c;性能会显著下降。以下是优化思路和简易实现方法&#xff1a; 一、核心优化思路 减少 JOIN 数量 数据冗余&#xff1a;添加必要的冗余字段&#xff08;如订单表直接存储用户名&#xff09;合并表&#xff1a;将频繁关联的小表合并成…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...