数字图像处理实验(七):canny算法边缘检测

本文介绍了Canny边缘检测算法的五个步骤:1)高斯滤波去噪;2)计算梯度强度和方向;3)非极大值抑制;4)双阈值检测;5)抑制孤立弱边缘。实验中使用Sobel算子计算梯度,并通过OpenCV在Ubuntu环境下实现Canny算法的C++代码,展示了边缘检测效果。
摘要由CSDN通过智能技术生成

一、实验原理

canny边缘检测算法处理5个步骤

1、使用高斯滤波算法,以平滑图像,滤除噪声。
(1)使用高斯滤波器与图像进行卷积,平滑图像,去除噪声。高斯滤波器核大小为s*s(s为奇数)。滤波器中心位置为k, 高斯滤波器核的产生式:

在这里插入图片描述

(2)归一化高斯滤波器核

在这里插入图片描述

(3)计算卷积

在这里插入图片描述

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

利用Sobel算子返回水平Gx和垂直Gy的一阶导数值。以此用来计算梯度强度G和方向thead。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
若图像中一个3x3的窗口为A,要计算梯度的像素点为e,则和Sobel算子进行卷积之后,像素点e在x和y方向的梯度值分别为:
在这里插入图片描述
在这里插入图片描述

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

非极大值抑制是一种边缘稀疏技术,非极大值抑制的作用在于“瘦”边。对图像进行梯度计算后,仅仅基于梯度值提取的边缘仍然很模糊。对于标准3,对边缘有且应当只有一个准确的响应。而非极大值抑制则可以帮助将局部最大值之外的所有梯度值抑制为0,对梯度图像中每个像素进行非极大值抑制的算法是:
(1)将当前像素的梯度强度与沿正负梯度方向上的两个像素进行比较。
(2)如果当前像素的梯度强度与另外两个像素相比最大,则该像素点保留为边缘点, 否则该像素点将被抑制。

4、应用双阈值(DT)检测来确定真实的和潜在的边缘。
(1)在施加非极大值抑制之后,剩余的像素可以更准确地表示图像中的实际边缘。

然而,仍然存在由于噪声和颜色变化引起的一些边缘像素。为了解决这些杂散响应,必须用弱梯度值过滤边缘像素,并保留具有高梯度值的边缘像素,可以通过选择高低阈值来实现。如果边缘像素的梯度值高于高阈值,则将其标记为强边缘像素;如果边缘像素的梯度值小于高阈值并且大于低阈值,则将其标记为弱边缘像素;如果边缘像素的梯度值小于低阈值,则会被抑制。阈值的选择取决于给定输入图像的内容。

(2)高低阈值分别为heightThes 和 lowThes.

确定阈值方法有:全局阈值、Otsu等方法。

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

到目前为止,被划分为强边缘的像素点已经被确定为边缘,因为它们是从图像中的真实 边缘中提取出来的。然而,对于弱边缘像素,将会有一些争论,因为这些像素可以从真实边缘提取也可以是因噪声或颜色变化引起的。为了获得准确的结果,应该抑制由后者引起的弱边缘。通常,由真实边缘引起的弱边缘像素将连接到强边缘像素,而噪声响应未连接。为了跟踪边缘连接,通过查看弱边缘像素及其8个邻域像素,只要其中一个为强边缘像素,则该弱边缘点就可以保留为真实的边缘。

二、实验代码

实验环境:
(1)OpenCV3.4.3
(2)Ubuntu16.04
(3)VS Code
(4)C++

// 采用 Canny 算子进行边缘检测
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <string>
#include <time.h> 
#include <math.h> 
#include <ctype.h> 
#include <stdio.h> 
#include <string.h> 

class Extra2{
public:
    Extra2(std::vector<std::string> path, int size=5){
        for(int i = 0; i < path
  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值