图像边缘检测Canny

news2024/12/23 13:14:24

一、Canny边缘检测原理
边缘检测是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。
Canny边缘检测算法是由4步构成:噪声去除计算图像梯度非极大值抑制滞后阈值
1、噪声去除:由于边缘检测很容易受到噪声的影响,Canny边缘检测噪声处理采用5x5⾼斯滤波器去除噪声。
2、计算图像梯度:对平滑后的图像使用Sobel 算子计算水平方向和竖直方向的⼀阶导数,根据两个一阶导计算边界的梯度和方向。如果像素点是边缘,则其梯度方向总是与边缘垂直。
在这里插入图片描述
3、非极大值抑制:对整幅图像进行扫描,去除那些非边界上的点。对每⼀个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的,若为极大值,则进行保留,否则A点被抑制。
4、滞后阈值:设置两个值: minVal和 maxVal。当图像的灰度梯度高于 maxVal 时被认为是真的边界,低于 minVal 的边界会被抛弃。如果介于两者之间的话,就要看这个点是否与某个被确定为真正的边界点相连,如果是就认为它也是边界点,如果不是就抛弃。
案例
API:

canny = cv2.Canny(image, threshold1, threshold2)
image:灰度图
threshold1: minval,较⼩的阈值
threshold2: maxval,较⼤的阈值

示例:

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']    #定义使其正常显示中文字体黑体
# plt.rcParams['axes.unicode_minus'] = False     #用来正常显示表示负号
# 1 图像读取
img = cv.imread('./image/dog.jpg',0)
# 2 Canny边缘检测
canny = cv.Canny(img,10,100) 
# 3 图像展示
plt.figure(figsize=(10,8))
plt.subplot(121),plt.imshow(img,cmap=plt.cm.gray),plt.title('原图')
plt.xticks([]), plt.yticks([]) #x,y轴置空
plt.subplot(122),plt.imshow(canny,cmap = plt.cm.gray),plt.title('Canny检测后结果')
plt.xticks([]), plt.yticks([])
# 4、保存图像到本地
plt.savefig('canny_detection_result.png')  
plt.show()

在这里插入图片描述

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

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

相关文章

Vulnhub靶场 | DC系列 - DC6

文章目录 DC-6环境搭建渗透测试 DC-6 环境搭建 靶机镜像下载地址:https://vulnhub.com/entry/dc-6,315/需要将靶机和 kali 攻击机放在同一个局域网里;本实验kali 的 IP 地址:192.168.10.146。 渗透测试 使用 nmap 扫描 192.168.10.0/24 网…

【报错已解决】`ValueError: Expected 2D array, got 1D array instead`的

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言: 在使用机器学习库(如scikit-learn)时,开发者可能会遇到ValueError: Expec…

Qt/C++地址转坐标/坐标转地址/逆地址解析/支持百度高德腾讯和天地图

一、前言说明 地址和经纬度坐标转换的功能必须在线使用,一般用在导航需求上,比如用户输入起点地址和终点地址,查询路线后,显示对应的路线,而实际上各大地图厂家默认支持的是给定经纬度坐标来查询(百度地图…

光纤FPV无人机技术详解

1. 技术基础与原理 光纤FPV(First Person View,第一人称视角)无人机技术,是将光纤通信技术与无人机技术相结合的一项创新技术。该技术通过光纤作为高速、低延迟的数据传输媒介,实现了无人机拍摄的高清视频信号实时回传…

P0.9/P1.25全倒装共阴节能COB超微小间距LED显示屏已抢占C位

COB(Chip on Board)技术最早发源于上世纪60年代,是将LED芯片直接封装在PCB电路板上,并用特种树脂做整体覆盖。COB实现“点” 光源到“面” 光源的转换。点间距有P0.3、P0.4、P0.5、P0.6、P0.7、P0.9、P1.25、P1.538、P1.5625、P1.…

带有WebUI的cron替代品Dagu

什么是 Dagu ? Dagu 是一个强大的 Cron 替代品,它带有一个 Web UI。它允许你将命令之间的依赖关系定义为有向无环图(DAG),使用声明式的 YAML 格式。Dagu 的设计易于使用、自包含且无需编码,非常适合小型项目。 安装 在群晖上以 D…

科技与文化的完美碰撞 德施曼玄武•紫禁城K80亮相成都车展

8月30日-9月8日,第二十七届成都国际汽车展览会将在中国西部国际博览城举行,德施曼将与海尔、美的、松下等知名品牌携旗下重磅产品集中参展。大会同期“京东MALL智享家生活”活动也将开启,行业首个与紫禁城IP联名的智能锁产品德施曼玄武•紫禁…

52基于SpringBoot+Vue+uniapp的旅游管理系统的的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录 前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus 系统测试系统测试目的系统功能测试系统测试结论 为什么选择我代码参考数据库参考源码获取源码获取 前言 🌞博主介绍 :✌全网粉丝15W,CSDN特邀作者、21…

【初阶C++篇】~ C++入门

C入门基础 前言8月语言排行 一 C书籍推荐二 C的第一个程序​三命名空间 namespace命名空间的使用 四C输入 输出五缺省参数六函数重载(就是函数可以同名)七引用引用和指针的关系 八 inline内联 前言 学完数据结构,那么C也就随之而来&#xff…

数据分析处理库(pandas)

目录 数据预处理 数据读取 DataFrame结构 数据索引 创建DataFrame Series操作 数据分析 统计分析 pivot数据透视表 groupby操作 常用函数操作 Merge操作 排序操作 缺失值处理 apply自定义函数 时间操作 绘图操作 大数据处理技巧 数值类型转换 属性类型转换…

FPGA学习笔记

FLASH: 掉电程序不丢失,属于ROM. 是的,Flash 存储器属于 ROM(只读存储器)的范畴,但它与传统的 ROM(如 PROM、EPROM)有一些区别。 Flash 与 ROM 的关系 ROM(Read-Only Memory&#…

企业级Mysql 集群技术部署

目录 1.1部署mysql 1.1.1 安装依赖性: 1.1.2 下载并解压源码包 1.1.3 源码编译安装mysql 1.1.4 部署mysql 2.mysql的主从复制 2.1 配置masters 2.2配置slave 2.3 延迟复制 2.4 慢查询日志 2.5并行复制 2.6 原理刨析 2. 7架构缺陷 3.半同步模式 3.1半同…

智能导诊系统:帮助患者找医院、找科室、找医生,解决“知症不知病”“知病不知科”“挂错号”问题

方案概述 智能导诊是基于医疗大模型、知识图谱、人机交互,帮助患者找医院、找科室、找医生,解决“知症不知病”“知病不知科”“挂错号”问题,根据病情分级导流,助力分级诊疗。支持通过语音、文字、点选、图片等多种方式与患者沟…

macbook怎么换自定义壁纸?Mac怎么设置壁纸 macOS中如何轻松删除不需要的壁纸?

自定义壁纸,不仅是为了优化桌面外观,还能在很大程度上影响用户情绪。一张好看的壁纸,可以显著提升用户的使用体验。因此,掌握更换和删除壁纸的操作技巧,就显得十分重要。下面详细解读如何在Mac上设置壁纸,以…

利用Leaflet.js创建交互式地图:绘制多个多边形和点位

引言 在地理信息系统(GIS)和地图可视化领域,Leaflet.js是一个轻量级但功能强大的JavaScript库,它提供了丰富的API来创建交互式地图。本文将通过一个实际的Vue组件示例,展示如何使用Leaflet.js在地图上绘制多边形和点位…

用「图灵测试」检验AI尤其是大语言模型,真的科学吗?

当前的大型语言模型似乎能够通过一些公开的图灵测试。我们该如何衡量它们是否像人一样聪明呢? 在发布后的近两年时间里,ChatGPT 表现出了一些非常类似人类的行为,比如通过律师资格考试。这让一些人怀疑,计算机的智力水平是否正在接…

c++习题28-计算2的N次方

目录 一&#xff0c;题目 二&#xff0c;思路 三&#xff0c;代码 一&#xff0c;题目 描述 任意给定一个正整数N(N<100)&#xff0c;计算2的n次方的值。 输入描述 输入一个正整数N。 输出描述 输出2的N次方的值。 用例输入 1 5 用例输出 1 32 二&#xff0…

【python入门到精通专题】1.知识与环境准备

小节目标: 计算机基础知识了解编程语言python安装与卸载pycharm安装与卸载终端的使用 一.计算机基础 程序员要想让计算机工作&#xff0c;必须知道计算机能干什么&#xff0c;怎么干的&#xff0c;这也就是我们必须学习计算机基础的原因 1.硬件系统 理解方式: 你通过耳朵和…

英文文献翻译工具推荐哪个?高效学习新选择

在学习英语的旅途中&#xff0c;我们难免会遇到难以理解的词汇、句子或整篇文章。 这时&#xff0c;一款优秀的英文文献翻译软件就显得尤为重要。它不仅能助你一臂之力&#xff0c;还能让你的学习过程更加高效。 本文将为你推荐五款英文文献翻译软件免费版&#xff0c;它们将…

【十滴水 / 4】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 3e510; unordered_map<int, int> mp; int c, m, n; int res; struct grid{int l;int r;int pos;int val;bool explode;bool const operator < (const grid& a){return pos < a.pos…