| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 人工智能 -> OpenCV——Canny边缘检测 -> 正文阅读 |
|
|
[人工智能]OpenCV——Canny边缘检测 |
目录简介Canny边缘检测是一种使用多级边缘检测算法检测边缘的方法。 实现步骤step1:去噪。噪声会影响边缘检测的准确性,因此首先要将噪声过滤掉。 方法:图像边缘容易受到噪声的干扰,因此为了避免检测到错误的边缘信息,通常需要使用滤波去噪,平滑一些纹理弱的非边缘区域,从而得到更准确的边缘,通常使用高斯噪声。 step2:计算梯度的幅度与方向。 方法:梯度的方向与边缘总是垂直的,通常就近取值为水平(左右)、垂直(上下)、对角线(右上,左上,左下,右下)等8个不同方向。因此在计算梯度时会得到梯度的幅度和角度(代表梯度的方向)。 step3:非极大值抑制,即适当地让边缘“变瘦”。 方法:逐一遍历像素点,判断当前像素点是否是周围像素点中具有相同梯度方向的最大值,并根据判断结果决定是否抑制该点。如果该点是正/负梯度方向上的局部最大值,则保留该点。如果不是,则抑制该点(归零)。 step4:确定边缘。使用双阈值算法确定最终的边缘信息。 方法:完成上述步骤后,图像内的强边缘已经在当前获取的边缘图像内,但是一些虚边缘可能也在边缘图像内,这些虚边缘可能是真实图像产生的,也可能是由于噪声所产生的。对于后者,必须将其剔除。 设置两个阈值,其中一个为MaxVal,另外一个为低阈值minVal,根据梯度幅度,与两个阈值之间的关系,判断边缘的属性,具体步骤为: (1)如果当前的边缘像素的梯度值大于或等于maxVal,则将当前边缘像素标记为强边缘; (2)如果当前边缘像素的梯度值介于maxVal与minVal之间,则将当前边缘像素标记为虚边缘(需要保留); (3)如果当前边缘像素的梯度值小于或等于minVal,则抑制当前边缘像素。 经过上述过程,获得虚边缘,此时通过判断虚边缘与强边缘是否连接,如果与强边缘连接,则将该边缘处理为边缘,如果与强边缘无连接,则该边缘为弱连接,将其抑制。 代码
原图
效果图
|
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/29 3:05:34- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |