图像边缘检测

图像边缘检测

边缘检测基本思想
基本边缘检测算子
Canny算子

一、基本思想

在这里插入图片描述
对数字图像做微分(差分),得到一阶微分结果
对结果再求一次微分
利用两次的结果
边缘检测的本质是微分
实际中常用差分,x方向和y方向

二、基本边缘检测算子(形式简单,但容易受噪声影响)

Robert算子卷积核

在这里插入图片描述
边缘检测所有对应系数和为0,边缘检测对应高通滤波(差分)
在这里插入图片描述

Sobel算子

Sobel算子卷积核(左右分别是x,y方向卷积核,相关模板正好要上下,左右翻转)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Laplace算子

任何一个函数拉普拉斯作用结果等于x方向两阶偏导加上y方向两阶偏导
在这里插入图片描述
差分有效检测边缘,但也会使噪声变大

LoG算子

首先对原始图像进行高斯滤波,然后再使用拉普拉斯算子
在这里插入图片描述
首先对高斯函数求拉普拉斯变换,进一步用上一步结果再和图像进行卷积
(高斯函数求拉普拉斯事先可知,只算一次)

三、Canny算子

已有方法问题:噪声,断裂,虚检(渐变灰度)
Canny算子核心优点:边缘可自动连通

算法步骤:

平滑图像同时计算微分;
计算梯度(幅值和方向);
梯度幅值进行非极大值抑制;
自动边缘连接

步骤1:同时平滑与微分

使用高斯函数的一阶导数同时完成平滑和微分
在这里插入图片描述

步骤2:梯度计算

在这里插入图片描述
进一步可得梯度幅值和方向:
在这里插入图片描述
方向离散化:离散化为上下左右和斜45°共4个方向
在这里插入图片描述

步骤3:梯度幅值非极大值抑制

细化梯度幅值图像中的屋脊带,质保,刘幅值局部变化最大的点
使用一个3*3邻域作用于幅值阵列的所有点。在每一点上,邻域的中心像素与沿梯度方希的两个梯度幅值的插值结果进行比较,仅保留极大值点
在这里插入图片描述

步骤4:边缘连接

对上一步得到的图像使用低、高阈值τ1τ2阈值化,得到三幅图像
在这里插入图片描述
T1对应假边缘,去除
T3对应真边缘,全部保留
T2连接:临接像素中是否有属于T3的像素

实现

Sobel算子:

dst = cv.Sobel(src, ddepth, dx, dy[, dst[, ksize[, scale[, delta[, borderType]]]]])

拉普拉斯算子:

dst = cv.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])

Canny算子:

dst = cv.Canny(image, threshold1, threshold2[, deges[, apertureSize[, L2gradient]]])

总结:

  1. 边缘检测即图像差分
  2. 常见边缘检测算子包括Robert算子,Sobel算子,LoG算子等,其中Sobel算子最为常用
  3. Canny算子的基本优点在于检测准确、对噪声稳健,在实际中广泛应用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值