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

Canny边缘检测数学原理及Python代码实现

一、Canny边缘检测的步骤

1)、使用高斯滤波器,以平滑图像,滤除噪声。

2)、计算图像中每个像素点的梯度强度和方向。

3)、应用非极大值(Non-Maximum Suppression)抑制,以消除边缘检测带来的杂散响应。

4)、应用双阈值(Double-Threshold)检测来确定真实的潜在的边缘。

5)、通过抑制孤立的弱边缘最终完成检测。

1、高斯滤波器

 还是进行归一化处理

 2、梯度和方向

用sobel算子来计算梯度分量

 

 

3、非极大值抑制 

 

 可以采用线性插值法:设g1的梯度幅值M(g1),g2的梯度幅值M(g2),则dtmp1可以得到:

M(dtmp1)=w*M(g2)+(1-w)*M(g1)

其中w=distance(dtmp1,g2)/distance(g1,g2)

4、双阈值检测

5、 代码实现

import cv2
import numpy as np
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
img=cv2.imread('C:ppy.jpg',cv2.IMREAD_GRAYSCALE)
v1=cv2.Canny(img,180,270)
v2=cv2.Canny(img,50,100)
res=np.hstack((v1,v2))
cv_show("res",res)

结果如图所示:

我们会发现阈值的范围不同还是有很大区别的。 

相关文章:

  • 代码解析MixFormer: Mixing Features across Windows and Dimensions
  • 墨者-网络安全
  • Thread类的基本用法
  • Vue——方法与事件、 样式绑定、数据绑定、面试题、笔试题
  • DCDC Bootstrap自举电路
  • 练习前端案例
  • Completed 404 NOT_FOUND,Whitelabel Error Page
  • 微信公众号多题库查题系统
  • Vue事件
  • TCP/IP协议专栏——ARP详解——网络入门和工程维护必看
  • python 字符串类型
  • 【canvas】-- H5新增标签canvas的简单用法
  • C#实现根据字体名称获取字体文件名
  • Android开发-视图view讲解
  • Vue样式绑定
  • 2017-09-12 前端日报
  • 3.7、@ResponseBody 和 @RestController
  • bootstrap创建登录注册页面
  • CSS居中完全指南——构建CSS居中决策树
  • ES6语法详解(一)
  • Git学习与使用心得(1)—— 初始化
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • Java超时控制的实现
  • Java深入 - 深入理解Java集合
  • JSONP原理
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • python docx文档转html页面
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 大数据与云计算学习:数据分析(二)
  • 翻译:Hystrix - How To Use
  • 将回调地狱按在地上摩擦的Promise
  • 前端攻城师
  • 译米田引理
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #Linux(权限管理)
  • (10)STL算法之搜索(二) 二分查找
  • (3)STL算法之搜索
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET单元测试
  • .NET微信公众号开发-2.0创建自定义菜单
  • // an array of int