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

十四、计算机视觉-形态学梯度

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、梯度的概念
  • 二、梯度的应用
  • 三、梯度如何实现


一、梯度的概念

形态学梯度(Morphological Gradient)是数字图像处理中的一种基本操作,用于检测图像中的边缘和轮廓。它结合了形态学膨胀(Dilation)和形态学腐蚀(Erosion)两种基本操作的结果,从而得到一个图像的边缘信息。


二、梯度的应用

现在有个问题请大家想一下,上面我们提到了梯度可以得到图像的边缘信息,那我们通过前几节的课程想一下 梯度是如何实现的?
例如我现在有个圆,我如何得到圆的边缘?
我如果把这个圆给膨胀一下,这个圆就变大了一圈,我再给腐蚀一下,圆又变小了,如果拿膨胀减去腐蚀的 不就是边缘了吗。
那有人可能又问了:膨胀过后减去原图不也能得到边缘吗,为什么还要在腐蚀一下在减呢?

其实膨胀减去原图也能得到边缘,但是这和膨胀减去腐蚀是有差距的:
当我们将膨胀操作的结果减去原始图像时,实际上得到的是原始图像中比周围更亮的区域。这是因为膨胀操作会扩大图像中较亮的区域,而减去原始图像后,差异部分就是原始图像中相对较亮的区域。因此,这样的操作会突出原始图像中的亮部分,而不是物体的边缘。
对于检测边缘,我们需要考虑的是图像中亮暗交界处的变化,而不仅仅是图像中较亮的区域。形态学梯度通过膨胀和腐蚀操作的差异来捕获这种变化,因为它考虑了物体与背景之间的差异,即使在较暗的物体周围也能有效地检测到边缘。
因此,直接将膨胀操作的结果减去原始图像并不适合用于突出图像的边缘信息,而形态学梯度通过膨胀减去腐蚀来更准确地实现这一目的。

三、梯度如何实现

import cv2
import numpy as np# 读取图像
image = cv2.imread('yunfeng.jpg', cv2.IMREAD_GRAYSCALE)# 定义结构元素
kernel = np.ones((5,5), np.uint8)# 膨胀操作
dilated = cv2.dilate(image, kernel, iterations=1)# 腐蚀操作
eroded = cv2.erode(image, kernel, iterations=1)# 形态学梯度
gradient = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)# 显示原始图像、膨胀结果、腐蚀结果和形态学梯度结果
cv2.imshow('Original 、', image)
cv2.imshow('Dilated ', dilated)
cv2.imshow('Eroded ', eroded)
cv2.imshow('Morphological', gradient)cv2.waitKey(0)
cv2.destroyAllWindows()

上面代码对图像腐蚀和膨胀是为了看对比效果,实际上梯度是通过morphologyEx MORPH_GRADIENT这个参数实现的。
我们看下最终效果:

在这里插入图片描述

相关文章:

十四、计算机视觉-形态学梯度

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、梯度的概念二、梯度的应用三、梯度如何实现 一、梯度的概念 形态学梯度(Morphological Gradient)是数字图像处理中的一种基本操作&…...

3月03日,每日信息差

🎖 素材来源官方媒体/网络新闻 🎄 国产商用飞机C919及ARJ21首次飞抵老挝 🌍 北京将打造新一批智能工厂 🌋 阿里云将于3月29日停止商标代理服务 🎁 起亚在美因远光灯故障召回3.5万辆Telluride汽车 ✨ 天涯社区拟5月1日前…...

leetcode 简单

1. 两数之和 两数之和 方法1:暴力枚举 两次for 循环,记录索引和值,找到合适的值然后返回 方法2:使用哈希表 第一次for循环的时候,就可以使用哈希表记录key的value,可以实现时间复杂度是1,要分…...

服务器硬件基础知识全解析

在信息技术日新月异的今天,服务器作为数据处理和存储的核心,其重要性不言而喻。了解服务器硬件基础知识,对于IT从业者以及广大技术爱好者来说,都是不可或缺的技能。本文将详细解析服务器硬件的基础知识,帮助读者建立起…...

python毕设选题 - 大数据商城人流数据分析与可视化 - python 大数据分析

文章目录 0 前言课题背景分析方法与过程初步分析:总体流程:1.数据探索分析2.数据预处理3.构建模型 总结 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到…...

vmware网络负载均衡方式

基于 IP 哈希的路由: 原理: 基于虚拟机的源和目标 IP 地址以及 TCP/UDP 端口号计算哈希值,并使用该哈希值确定出口网络适配器。这样可以确保同一对源和目标的网络流量始终被路由到相同的网络适配器。应用场景: 适用于大量使用虚拟…...

Docker基础教程 - 2 Docker安装

更好的阅读体验:点这里 ( www.doubibiji.com ) 2 Docker安装 Docker 的官网地址:https://www.docker.com/,在官网可以找到 Docker Engine 的安装步骤。 下面进行 Docker 环境的安装,正常情况下 Docker …...

Android 多桌面图标启动, 爬坑点击打开不同页面

备注 : MainActivity 正常带界面的UI MainActivityBt 和 MainActivityUsb 是透明的,即 android:theme"style/TranslucentTheme" ###场景1:只有MainActivity 设置成:android:launchMode"singleTask" 点击顺序&#xff1…...

2024-3-1-网络编程作业

1>操控机械臂&#xff1a; 通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09; d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 源代码&#xff1a; #include <myhead.h> #define minStep 10 //最小偏…...

pytorch基础2-数据集与归一化

专题链接&#xff1a;https://blog.csdn.net/qq_33345365/category_12591348.html 本教程翻译自微软教程&#xff1a;https://learn.microsoft.com/en-us/training/paths/pytorch-fundamentals/ 初次编辑&#xff1a;2024/3/2&#xff1b;最后编辑&#xff1a;2024/3/2 本教程…...

Python测试框架pytest介绍用法

1、介绍 pytest是python的一种单元测试框架&#xff0c;同自带的unittest测试框架类似&#xff0c;相比于unittest框架使用起来更简洁、效率更高 pip install -U pytest 特点&#xff1a; 1.非常容易上手,入门简单,文档丰富&#xff0c;文档中有很多实例可以参考 2.支持简单的单…...

AI对话系统app开源

支持对接gpt&#xff0c;阿里云&#xff0c;腾讯云 具体看截图 后端环境&#xff1a;PHP7.4MySQL5.6 软件&#xff1a;uniapp 废话不多说直接上抗揍云链接&#xff1a; https://mny.lanzout.com/iKFRY1o1zusf 部署教程请看源码内的【使用教程】文档 欢迎各位转载该帖/源码...

SpringBoot+aop实现主从数据库的读写分离

读写分离的作用是为了缓解写库&#xff0c;也就是主库的压力&#xff0c;但一定要基于数据一致性的原则&#xff0c;就是保证主从库之间的数据一定要一致。如果一个方法涉及到写的逻辑&#xff0c;那么该方法里所有的数据库操作都要走主库。 一、环境部署 数据库&#xff1a;…...

胎神游戏集第二期

延续上一期 一、海岛奇胎 #include<bits/stdc.h> #include<windows.h> #include<stdio.h> #include<conio.h> #include<time.h> using namespace std; typedef BOOL (WINAPI *PROCSETCONSOLEFONT)(HANDLE, DWORD); PROCSETCONSOLEFONT SetCons…...

Unicode/ASCII/UTF的关系(模板字面量、模板字符串、占位符)

字符串&#xff1a;编程时最重要的数据类型之一。 正则表达式&#xff1a;赋予开发者更多操作字符串的能力。 1、 Unicode和ASCII 1.1 概述 Unicode是ASCII字符编码的一个扩展&#xff0c;只不过在Windows中&#xff0c;用两个字节对其进行编码&#xff0c;也称为宽字符集&…...

三、低代码平台-单据配置(单表增删改查)

一、业务效果图 主界面 二、配置过程简介 配置流程&#xff1a;业务表设计 -》业务对象建立-》业务单据配置-》菜单配置。 a、业务表设计 b、业务对象建立 c、业务单据配置 功能路径&#xff1a;低代码开发平台/业务开发配置/单据配置维护 d、菜单配置...

6.1 数据驱动型业务管理方法(3%)

1 数据的产生与应用 1.数据的产生 2.数据的特征 3.数据的应用过程 应用到决策过程中 4.从决策到执行 决策&#xff1a;靠经验来进行决策&#xff08;80%&#xff09;&#xff1b;可依据数据辅助&#xff08;20%&#xff09; 经验比数据重要的多&#xff0c;数据是辅助&…...

JVM学习目录

JVM ✅ JVM运行时内存结构 ✅ JVM常用启动参数 ✅ JVM内存分配与垃圾收集流程 ✅ 什么是垃圾回收机制&#xff08;Garbage Collection&#xff0c;简称GC&#xff09; ✅ 如何调用垃圾回收器的方法 ✅ GC如何判定对象已死 ✅ 方法区的垃圾收集 ✅ 垃圾收集算法 ✅ JVM垃圾回…...

使用远程桌面连接工具上传文件到Windows轻量应用服务器时,如何优化文件传输速度?

使用远程桌面连接工具上传文件到Windows轻量应用服务器时&#xff0c;如何优化文件传输速度&#xff1f; 优化网络连接&#xff1a;确保网络连接稳定和畅通&#xff0c;使用有线网络连接代替无线网络&#xff0c;以减少网络延迟和提高文件传输速度。 调整远程桌面设置&#xf…...

【Linux】基本指令(下)

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:Linux ⚙️操作环境:Xshell (操作系统:CentOS 7.9 64位) 日志 日志的概念: 网络设备、系统及服务程序等&#xff0c;在运作时都会产生一个叫log的事件记录&#xff1b;每一行日志都记载着日期、时间、使用者及动作等相关…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

Razor编程中@Html的方法使用大全

文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...