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

Canny边缘检测

Canny边缘检测

Canny边缘检测

  • 使用高斯滤波器,以平滑图像消除噪声点
  • 计算图像中每个像素点的梯度和方向
  • 应用非极大值(None-Maximum Suppression)抑制,以消除边缘检测带来的杂散相应
  • 应用双阈值检测来确定真实的和潜在的边缘
  • 通过抑制孤立的弱边缘完成边缘检测
1.使用高斯滤波操作进行噪声点消除

在这里插入图片描述

2.计算梯度和方向

梯度和方向算子使用sobel算子,计算Gx和Gy,方向就是arc tan(Gy/Gx),通过sobel 算子Sx和Sy 计算Gx和Gy的值,

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

3.非极大值抑制

在这里插入图片描述

由于使用线性差值法计算比较复杂,采用近似8个方向像素点进行比较。

在这里插入图片描述

非极大值抑制就是临近像素梯度方向例如上图,梯度方向为C->A->B,如果A点为梯度方向值最大的点则认为该点位边缘像素点保留,另外两个点抑制掉。

4.双阈值检测

在这里插入图片描述

  • 在梯度值大于MaxVal就处理为边界

  • 如果小于minVal就舍弃

  • 如果梯度值minVal<梯度值<maxVal时:

    1.如果该点邻域范围内(周围8个点)有大于maxVal的值,把该点纳入边缘点

    2.如果邻域中不存在大于maxVal的值那么就舍弃。

5.代码实现
import cv2
import numpy as npdef cv_show(name,img): # 定义函数加:cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()img = cv2.imread(r'C:\learn\MarkDown\anconda\lena.png', cv2.IMREAD_GRAYSCALE)
v1=cv2.Canny(img,80,150)
v2= cv2.Canny(img,50,150)
res=np.hstack((v1,v2))
cv_show('res',res)

在这里插入图片描述

http://www.xdnf.cn/news/18094.html

相关文章:

  • pyecharts可视化图表组合组件_Grid:打造专业数据仪表盘
  • python pandas库 series如何使用
  • 电脑上搭建HTTP服务器在局域网内其它客户端无法访问的解决方案
  • 【Tech Arch】Hive技术解析:大数据仓库的SQL桥梁
  • 【从零开始学习Redis】项目实战-黑马点评D2
  • Conda 环境 在AI 私有化部署 有怎么用?
  • 迅速掌握Git通用指令
  • C++内存模型
  • 数据结构代码分享-1 顺序表
  • Redis面试精讲 Day 23:Redis与数据库数据一致性保障
  • Python 设计模式详解 —— 掌握软件设计的通用解决方案
  • 常用的SQL语句
  • ReactNode 类型
  • Java学习笔记:IDEA简单使用技巧
  • 使用vscode的task.json来自动执行make命令,而不直接使用终端
  • Eclipse Tomcat Configuration
  • 基于Python的旅游推荐系统 Python+Django+Vue.js
  • 【抽象类和接口】
  • Javascript面试题及详细答案150道之(106-120)
  • HAL-USART配置
  • 数据电台询价的询价要求
  • 计算机毕业设计java的小天鹅酒店月子会所管理小天鹅酒店母婴护理中心管理系统设计小天鹅酒店产后护理会所信息化管理平台
  • 利用pyxlsbwriter包实现写入xlsb和xlsx格式及读取效率的比较
  • Forward Propagation|前向传播
  • Python可视化工具-Bokeh:动态显示数据
  • 功能强大!开源免费的视频翻译、音视频转录工具
  • 深度解析 Tomcat ProtocolHandler 工作原理
  • 牛客周赛 Round 104(小红的矩阵不动点/小红的不动点权值)
  • 【AI智能体】Dify 搭建发票识别助手操作实战详解
  • 深入理解QFlags:Qt中的位标志管理工具