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

图像预处理-图像边缘检测(流程)

一.高斯滤波

        因为图像边缘检测就是把像素值有差异的地方提取出来,所以噪声会有很大影响,因此需要对图像进行平滑处理高斯滤波是流程中常用的方法。

二.计算图像的梯度与方向

过程中通常使用sobel算子进行梯度计算,在OpenCV中,默认使用 G=|G(x)+G(y)| 来计算梯度值。

这个角度值其实是当前边缘的梯度方向,若梯度方向不是0°、45°、90°、135°这种特定角度,那么就要用到插值算法来计算当前像素点在其方向上进行插值的结果,然后进行比较并判断是否保留该像素点。

- 为-22.5°~22.5°,或-157.5°~157.5°,则认为边缘为水平边缘;

- 为22.5°~67.5°,或-112.5°~-157.5°,则认为边缘为45°边缘;

- 为67.5°~112.5°,或-67.5°~-112.5°,则认为边缘为垂直边缘;

- 为112.5°~157.5°,或-22.5°~-67.5°,则认为边缘为135°边缘;

三.非极大值抑制

        经过第二步得到的边缘不经过处理是没办法使用的,因为高斯滤波去噪边缘会模糊,得到的边缘像素点非常多,因此需要对其进行一些过滤操作,而非极大值抑制就是一个很好的方法。即检查每个像素点的梯度方向上的相邻像素,并保留梯度值最大的像素,将其他像素抑制为零

四.双阈值筛选

经过非极大值抑制之后,我们还需要设置阈值来进行筛选。

        当某一像素位置的幅值超过最高阈值时,该像素必是边缘像素;当幅值低于最低阈值时,该像素必不是边缘像素;幅值处于最高像素与最低像素之间时,如果它能连接到一个高于阈值的边缘时,则被认为边缘像素,否则就不会被认为是边缘。

五.实现边缘检测的流程函数

edges = cv2.Canny(image, threshold1, threshold2)

- threshold1阈值,用于决定可能的边缘点。

- threshold2阈值,用于决定强边缘点。

- 即使读到的是彩色图也可以进行处理。

import cv2 as cvimg = cv.imread('../images/lvbo2.png')gray1 = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 手动进行高斯滤波再调用canny边缘检测
img2 = cv.GaussianBlur(img, (3, 3), 1)gray2 = cv.cvtColor(img2, cv.COLOR_BGR2GRAY)# 二值化处理方便观察
ret, binary = cv.threshold(gray1, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
ret, binary1 = cv.threshold(gray2, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)# 利用内置高斯滤波器进行边缘检测
edge = cv.Canny(binary, 30, 70)
edge1 = cv.Canny(binary1, 30, 70)cv.imshow('edge', edge)
cv.imshow('edge1', edge1)
cv.waitKey(0)
cv.destroyAllWindows()

        可以发现,提前手动进行去噪处理效果更好,虽然canny函数内置了高斯滤波,但根据要求进行去噪预处理可以得到更好的效果。

相关文章:

图像预处理-图像边缘检测(流程)

一.高斯滤波 因为图像边缘检测就是把像素值有差异的地方提取出来,所以噪声会有很大影响,因此需要对图像进行平滑处理,高斯滤波是流程中常用的方法。 二.计算图像的梯度与方向 过程中通常使用sobel算子进行梯度计算,在OpenCV中&am…...

解锁思想道德修养的奥秘:用思维导图开启智慧之旅

在我们的成长过程中,思想道德修养如同基石,奠定了我们为人处世、面对生活挑战的基本态度和准则。而如何高效地梳理和掌握思想道德修养的丰富内容呢?思维导图这一强大工具为我们提供了独特视角和便捷途径。 思想道德修养的关键板块 道德理论…...

swagger的简介及使用方法

Swagger 是一个用于描述、生成、文档化和测试 RESTful API 的开源工具集。它可以自动生成 API 文档,帮助开发者理解和使用 API。Swagger 由 Swagger.io 提供,并已经发展成了一套广泛应用于 API 设计和文档的标准。 Swagger 项目的历史可以追溯到 2010 年…...

解决Ubuntu图形化界面操作适配问题

1 缘起 使用Ubuntu GNOME图形化系统作为开发机, 遇到与Windows操作不一致的地方,比如PyCharm、IntelliJ时无法正确代码跳转, 如CtrlAltLeft,CtrlAltRight无法正常在代码级别跳转,只能在文件级别跳转。 基于这个开端&a…...

End-to-End从混沌到秩序:基于LLM的Pipeline将非结构化数据转化为知识图谱

摘要:本文介绍了一种将非结构化数据转换为知识图谱的端到端方法。通过使用大型语言模型(LLM)和一系列数据处理技术,我们能够从原始文本中自动提取结构化的知识。这一过程包括文本分块、LLM 提示设计、三元组提取、归一化与去重,最终利用 NetworkX 和 ipycytoscape 构建并可…...

使用Ingress发布应用程序

使用Ingress发布应用程序 文章目录 使用Ingress发布应用程序[toc]一、什么是Ingress二、定义Ingress三、什么是Ingress控制器四、部署nginx Ingress控制器1.了解nginx Ingress控制器的部署方式2.安装nginx Ingress控制器3.本地实际测试 五、使用Ingress对外发布应用程序1.使用D…...

llama-factory微调报错:

报错信息 [INFO] [utils.py:789:see_memory_usage] CPU Virtual Memory: used 81.51 GB, percent 64.9% W0419 10:14:27.573000 108354 site-packages/torch/distributed/elastic/multiprocessing/api.py:897] Sending process 108373 closing signal SIGTERM W0419 10:14:27…...

【LLaMAFactory】LoRa + 魔搭 微调大模型实战

前言 环境准备 之前是在colab上玩,这次在国内的环境上玩玩。 魔搭:https://www.modelscope.cn/ 现在注册,有100小时的GPU算力使用。注册好了之后: 魔搭社区 这里使用qwen2.5-7B-Instruct模型,这里后缀Instruct是指…...

【愚公系列】《Python网络爬虫从入门到精通》054-Scrapy 文件下载

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! &#x1f…...

db中查询关于null的sql该怎么写

正确示例 # 等于null select * from 表名 where 字段名 is NULL; # 不等于null select * from 表名 where 字段名 is not NULL;若需要同时判断字段不等于某个值且不为null select * from users where age ! 30 and age is not null; select * from users where age ! 30 or a…...

React 文章列表

自定义hook 在src/hooks文件夹下封装 useChannel.js // 获取频道列表的逻辑 import { useEffect , useState } from "react" import { getChannelAPI } from "/apis/article"function useChannel(){// 获取频道的逻辑 const [channelList,setChannelList…...

中间件--ClickHouse-12--案例-1-日志分析和监控

1、案例背景 一家互联网公司需要实时分析其服务器日志、应用日志和用户行为日志,以快速发现潜在问题并优化系统性能。 2、需求分析 目标:实时分析日志数据,快速发现问题并优化系统性能。数据来源: 服务器日志:如 Ng…...

QML中的3D功能--自定义着色器开发

在 Qt 3D 中使用自定义着色器可以实现高度定制化的渲染效果。以下是完整的自定义着色器开发方案。 一、基础着色器创建 1. 创建自定义材质 qml import Qt3D.Core 2.15 import Qt3D.Render 2.15 import Qt3D.Extras 2.15Entity {components: [Transform { translation: Qt.v…...

如何防止接口被刷

目录 🛡️ 一、常见的防刷策略分类 🔧 二、技术实现细节 ✅ 1. 基于 IP 限流 ✅ 2. 给接口加验证码 ✅ 3. 使用 Token 限制接口访问权限 ✅ 4. 给接口加冷却时间(验证码类经典) ✅ 5. 使用滑动窗口限流算法(更精…...

18、TimeDiff论文笔记

TimeDiff **1. 背景与动机****2. 扩散模型基础****3. TimeDiff 模型****3.1 前向扩散过程****3.2 后向去噪过程** 4、TimeDiff(架构)原理训练推理其他关键点解释 DDPM(相关数学)1、正态分布2、条件概率1. **与多个条件相关**&…...

docker底层原理

一句话,dockerfile里面的一行指令,就是一个layer层 docker底层原理 在机器上安装docker服务器端的程序,就会在机器上自动创建以下目录,默认安装路径是/var/lib/ docker服务器端的工作目录的作用如下,镜像的每一层的元数…...

YOLO拓展-NMS算法

1.概述 NMS(non maximum suppression)即非极大值抑制,其本质就是搜索局部极大值,抑制非极大值元素,可以理解为局部最大搜索。 这里不讨论通用的NMS算法(参考论文《Efficient Non-Maximum Suppression》对1维和2维数据…...

Docker Swarm 容器与普通 Docker 容器的网卡差异

问题背景 在 Docker Swarm 网络空间启动的容器有两张网卡(eth0 和 eth1),而普通 Docker 容器只有一张网卡(eth0)。以下通过分析 ip addr show 和 ip link show 的输出,解释原因。 命令输出解析 Docker S…...

【Linux】线程ID、线程管理、与线程互斥

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🌐 C 语言 上篇文章: 【Linux】线程:从原理到实战,全面掌握多线程编程!-CSDN博客 下…...

服务器简介(含硬件外观接口介绍)

服务器(Server)是指提供资源、服务、数据或应用程序的计算机系统或设备。它通常比普通的个人计算机更强大、更可靠,能够长时间无间断运行,支持多个用户或客户端的请求。简单来说,服务器就是专门用来存储、管理和提供数…...

自动驾驶---决策规划之导航增强端到端

1 背景 自动驾驶算法通常包括几个子任务,包括3D物体检测、地图分割、运动预测、3D占用预测和规划。近年来,端到端方法将多个独立任务整合到多任务学习中,优化整个系统,包括中间表示,以实现最终的规划任务。随着端到端技…...

Datawhale AI春训营 世界科学智能大赛--合成生物赛道:蛋白质固有无序区域预测 小白经验总结

一、报名大赛 二、跑通baseline 在魔塔社区创建实例,根据教程完成速通第一个分数~ Datawhale-学用 AI,从此开始 三、优化实例(这里是我的学习优化过程) 1.先将官方给的的模型训练实例了解一遍(敲一敲代码) 训练模…...

基于Java(Struts2 + Hibernate + Spring)+MySQL实现的(Web)在线预约系统

基于Struts2 Hibernate Spring的在线预约系统 1.引言 1.1编写目的 针对医院在线预约挂号系统,提供详细的设计说明,包括系统的需求、功能模块、界面设计、设计方案等,以辅助开发人员顺利进行系统的开发并让项目相关者可以对这个系统进行分…...

PHP获取大文件行数

在PHP中获取大文件的行数时,直接读取整个文件到内存中可能会导致内存溢出,特别是对于非常大的文件。因此,最有效的方法是逐行读取文件并计数。以下是一些实现方法: 方法一:使用 fgets() fgets() 函数逐行读取文件&am…...

2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?

2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型? 一、8大主流Web开发语言技术对比 1. PHP开发:中小型网站的首选方案 最新版本:PHP 8.3(2023年11月发布)核心优势: 全球78%的网站…...

Win7模拟器2025中文版:重温经典,掌上电脑体验

随着科技的快速发展,现代操作系统变得越来越高级,但许多用户仍然怀念经典的Windows 7系统。如果你也想重温那种熟悉的操作体验,Win7模拟器2025中文版 是一个不错的选择。这款软件能够让你在手机上轻松实现Windows 7系统的模拟,带来…...

HTML5+CSS3小实例:CSS立方体

实例:CSS立方体 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0&q…...

使用 Vite 快速搭建现代化 React 开发环境

1.检查环境 说明&#xff1a;检测环境&#xff0c;node版本为18.20.6。 2.创建命令 说明&#xff1a;创建命令&#xff0c;选择对应的选项。 npm create vitelatest 3.安装依赖 说明&#xff1a;安装相关依赖。 npm i...

Linux网络编程——基于ET模式下的Reactor

一、前言 上篇文章中我们已经讲解了多路转接剩下的两个接口&#xff1a;poll和epoll&#xff0c;并且知道了epoll的两种工作模式分别是 LT模式和ET模式&#xff0c;下来我们就实现的是一个简洁版的 Reactor&#xff0c;即半同步半异步I/O&#xff0c;在linux网络中&#xff0c…...

【现代深度学习技术】循环神经网络04:循环神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

1. 认识DartGoogle为Flutter选择了Dart语言已经是既

1. 认识Dart Google为Flutter选择了Dart语言已经是既定的事实&#xff0c;无论你多么想用你熟悉的语言&#xff0c;比如JavaScript、TypeScript、ArkTS等来开发Flutter&#xff0c;至少目前都是不可以的。 Dart 是由谷歌开发的计算机编程语言&#xff0c;它可以被应用于 Web/…...

学习设计模式《三》——适配器模式

一、基础概念 适配器模式的本质是【转换匹配&#xff0c;复用功能】&#xff1b; 适配器模式定义&#xff1a;将一个类的接口转换为客户希望的另外一个接口&#xff1b;适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式的目的&#xff1a;复用…...

【Java面试系列】Spring Boot微服务架构下的分布式事务处理与性能优化 - 2025-04-19详解 - 3-5年Java开发必备知识

【Java面试系列】Spring Boot微服务架构下的分布式事务处理与性能优化 - 2025-04-19详解 - 3-5年Java开发必备知识 引言 在微服务架构中&#xff0c;分布式事务处理和性能优化是面试中高频出现的主题。随着系统规模的扩大&#xff0c;如何保证数据一致性和系统性能成为开发者…...

Elasticsearch只返回指定的字段(用_source)

在Elasticsearch中&#xff0c;当你想要查询文档但不返回所有字段&#xff0c;只返回指定的字段&#xff08;比如这里的id字段&#xff09;&#xff0c;你可以使用_source参数来实现这一点。但是&#xff0c;有一点需要注意&#xff1a;Elasticsearch的_source字段默认是返回的…...

【Linux “sed“ 命令详解】

本章目录: 1. 命令简介sed 的优势&#xff1a; 2. 命令的基本语法和用法基本语法&#xff1a;参数说明&#xff1a;常见用法场景&#xff1a;示例1&#xff1a;替换文本示例2&#xff1a;删除空行示例3&#xff1a;从命令输出中处理内容 3. 命令的常用选项及参数常用命令动作&a…...

JMETER使用

接口测试流程: 1.获取接口文档&#xff0c;熟悉接口业务 2.编写接口测试用例以及评审 正例:输入正常的参数&#xff0c;验证接口能否正常返回 反例:权限异常(为空、错误、过期)、参数异常(为空、长度异常、类型异常)、其他异常(黑名单、调用次数限制)、兼容异常(一个接口被多种…...

JavaWeb 课堂笔记 —— 13 MySQL 事务

本系列为笔者学习JavaWeb的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习…...

离线安装elasticdump并导入和导出数据

离线安装elasticdump 在 CentOS 或 RHEL 系统上安装 elasticdump&#xff0c;你可以使用 npm&#xff08;Node.js 的包管理器&#xff09;来安装&#xff0c;因为 elasticdump 是一个基于 Node.js 的工具。以下是步骤 先在外网环境下安装 下载nodejs和npm&#xff08;注意x8…...

WhatTheDuck:一个基于浏览器的CSV查询工具

今天给大家介绍一个不错的小工具&#xff1a;WhatTheDuck。它是一个免费开源的 Web 应用程序&#xff0c;允许用户上传 CSV 文件并针对其内容执行 SQL 查询分析。 WhatTheDuck 支持 SQL 代码自动完成以及语法高亮。 WhatTheDuck 将上传的数据存储为 DuckDB 内存表&#xff0c;继…...

关于数字信号与图像处理——基于Matlab的图像增强技术

本篇博客是在做数字信号与图像处理实验中的收获。 具体内容包括&#xff1a;根据给定的代码放入Matlab中分别进行两次运行测试——比较并观察运行后的实验结果与原图像的不同点——画出IJ的直方图&#xff0c;并比较二者差异。接下来会对每一步进行具体讲解。 题目&#xff1a…...

MySQL数据库 - 锁

锁 此笔记参考黑马教程&#xff0c;仅学习使用&#xff0c;如有侵权&#xff0c;联系必删 文章目录 锁1. 概述1.1 介绍1.2 分类 2. 全局锁2.1 介绍2.2 语法2.3 特点&#xff08;弊端&#xff09; 3. 表级锁3.1 介绍3.2 表锁3.3 元数据锁&#xff08;meta data lock&#xff0…...

免费多平台运行器,手机畅玩经典主机大作

软件介绍 飞鸟模拟器是一款面向安卓设备的免费游戏平台&#xff0c;支持PS2/PSP/NDS等十余种经典主机游戏运行。 该软件突破传统模拟器复杂操作模式&#xff0c;采用智能核心加载技术&#xff0c;用户只需双击主程序即可开启游戏之旅&#xff0c;真正实现"即下即玩"…...

计算机软考中级 知识点记忆——排序算法 冒泡排序-插入排序- 归并排序等 各种排序算法知识点整理

一、&#x1f4cc; 分类与比较 排序算法 最优时间复杂度 平均时间复杂度 最坏时间复杂度 空间复杂度 稳定性 应用场景与特点 算法策略 冒泡排序 O(n) O(n) O(n) O(1) 稳定 简单易实现&#xff0c;适用于小规模数据排序。 交换排序策略 插入排序 O(n) O(n) O…...

STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统

STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统 Norflash简介NorFlash操作驱动代码文件系统测试代码 Norflash简介 NOR Flash是一种类型的非易失性存储器&#xff0c;它允许在不移除电源的情况下保留数据。NOR Flash的名字来源于其内部结构中使用的NOR逻辑门。…...

uniapp-x 二维码生成

支持X&#xff0c;二维码生成&#xff0c;支持微信小程序&#xff0c;android&#xff0c;ios&#xff0c;网页 - DCloud 插件市场 免费的单纯用爱发电的...

当HTTP遇到SQL注入:Java开发者的攻防实战手册

一、从HTTP请求到数据库查询:漏洞如何产生? 危险的参数拼接:Servlet中的经典错误 漏洞代码重现: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String category = request.getParameter("…...

[dp20_完全背包] 介绍 | 零钱兑换

目录 1. 完全背包 题解 背包必须装满 2.零钱兑换 题解 1. 完全背包 链接&#xff1a; DP42 【模板】完全背包 描述 你有一个背包&#xff0c;最多能容纳的体积是V。 现在有n种物品&#xff0c;每种物品有任意多个&#xff0c;第i种物品的体积为vivi ,价值为wiwi。 &a…...

精打细算 - GPU 监控

精打细算 - GPU 监控 在上一篇,咱们历经千辛万苦,终于让应用程序在 Pod 的“驾驶舱”里成功地“点火”并用上了 GPU。太棒了!但是,车开起来是一回事,知道车速多少、油耗多少、引擎水温是否正常,则是另一回事,而且同样重要,对吧? 我们的 GPU 应用跑起来了,但新的问题…...

故障诊断 | CNN-BiGRU-Attention故障诊断

效果一览 摘要 在现代工业生产中,设备的稳定运行至关重要,故障诊断作为保障设备安全、高效运行的关键技术,其准确性和及时性直接影响着生产效率与成本[[doc_refer_1]][[doc_refer_2]]。随着工业设备复杂性的不断增加,传统故障诊断方法已难以满足实际需求。深度学习技术凭借…...

单片机AIN0、AIN1引脚功能

目录 1. 模拟-数字转换器&#xff08;ADC&#xff09; 2. 交流电源&#xff08;AC&#xff09; 总结 这两部分有什么区别&#xff1f; 在这个电路图中&#xff0c;两个部分分别是模拟-数字转换器&#xff08;ADC&#xff09;和交流电源&#xff08;AC&#xff09;。以下是这…...