Canny 边缘检测

news/2025/2/8 11:58:13/

步骤

1.降噪

应用高斯滤波器,以平滑图像,滤除噪声。

边缘检测易受噪声影响,所以使用高斯滤波器平滑图像,降低噪声。

2.梯度

计算图像中每个像素点的梯度大小和方向。

计算大小

Sobel算子是一种常用的边缘检测滤波器,用于计算图像中水平和垂直方向上的梯度变化

就是点乘计算

计算方向

3.非极大值抑制

使用非极大值抑制,消除边缘检测带来的不利影响


4.双阈值检测

应用双阈值检测确定真实和潜在的边缘【双阈值检测

阈值 (minVal 和 maxVal) 是基于梯度大小(即边缘强度)来定义的

  • maxVal(高阈值):
    • 梯度值大于 maxVal 的像素点被直接认为是真正的边缘。
  • minVal(低阈值):
    • 梯度值小于 minVal 的像素点被忽略,认为不是边缘。
  • 梯度值介于 minVal 和 maxVal 之间:
    • 如果这些像素点与高于 maxVal 的边缘像素相连,则保留为边缘。
    • 如果没有相连,则丢弃。

实现

它有现成库可以调用啊

import cv2
import matplotlib.pyplot as plt
import numpy as np# 读取图像
image_path = r"D:\python\NAFNet-main\demo\tooth.png"  # 替换为你的图片路径
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)# 高斯模糊去噪
blurred = cv2.GaussianBlur(image, (5, 5), 0)# Canny 边缘检测
edges = cv2.Canny(blurred, threshold1=5, threshold2=200)#这边就是最大最小边缘# 显示原图和边缘检测结果
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.title("Original Image")
plt.imshow(image, cmap="gray")
plt.axis("off")plt.subplot(1, 2, 2)
plt.title("Canny Edge Detection")
plt.imshow(edges, cmap="gray")
plt.axis("off")plt.tight_layout()
plt.show()

最后结果


http://www.ppmy.cn/news/1570316.html

相关文章

深度剖析 C++17 中的 std::byte:解锁字节级编程新境界

文章目录 一、引入背景二、基本定义三、特性详解不可隐式转换为整型显式转换为unsigned char位运算支持字面量支持四、使用场景内存操作数据序列化与反序列化网络通信文件读写操作五、与其他数据类型的交互与字符类型的交互与整数类型的交互与指针类型的交互六、注意事项避免混…

网络原理一>数据链路层协议->以太网协议

目录 以太网协议的结构:类型:ARP请求应答报文:CRC:MTU: 为什么需要mac地址:mac地址和IP地址的区别: 以太网协议的结构: 以太网是数据链路层和物理层的主要协议 源IP,目的IP就不多说…

Day38-【13003】短文,二叉树,完全二叉树,二叉树的顺序存储,和链式存储

文章目录 第二节 二叉树二叉树的定义及重要性质n个结点,能组合成多少个不同的二叉树满二叉树、完全二叉树完全二叉树的性质二叉树的性质二叉树的结点数完全二叉树的高度 二叉树的存储顺序存储方式链式存储方式二叉链表的程序实现二叉链表空指针域计算 第二节 二叉树…

记录 | WPF基础学习Style局部和全局调用

目录 前言一、Style1.1 例子1.2 为样式起名字1.3 BasedOn 继承上一个样式 二、外部StyleStep1 创建资源字典BaseButtonStyle.xamlStep2 在资源字典中写入StyleStep3 App.xaml中写引用路径【全局】Step4 调用三、代码提供四、x:Key和x:Name区别 更新时间 前言 参考文章&#xff…

Unity之VideoPlayer视频播放(二)

一、效果 全屏缩小画面、播放暂停、进度条拖拽、视频播放时长、倍速、音量等功能。 长时间不移动鼠标自动隐藏播放控制器、鼠标离开倍速、音量时隐藏倍速、音量ui 二、脚本 using System; using System.Collections; using System.Collections.Generic; using UnityEngine.UI;…

Maven架构项目管理工具

1.1什么是Maven 翻译为“专家”,“内行”Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。什么是理想的项目构建? 高度自动化,跨平台,可重用的组件,标准化的 什么…

开源AI智能名片2 + 1链动模式S2B2C商城小程序:内容价值创造与传播新引擎

摘要:本文聚焦于信息爆炸时代下,内容价值的创造与传播。随着用户角色的转变,其在内容生产与传播中的价值日益凸显。同时,深入探讨开源AI智能名片2 1链动模式S2B2C商城小程序这一创新商业模式,如何借助用户创造内容并传…

并行计算、分布式计算与云计算:概念剖析与对比研究(表格对比)

什么是并行计算?什么是分布计算?什么是云计算?我们如何更好理解这3个概念,我们采用概念之间的区别和联系的方式来理解,做到切实理解,深刻体会。 1、并行计算与分布式计算 并行计算、分布式计算都属于高性…