计算机视觉面试考点(18)边缘检测算子(Roberts、Prewitt、Sobel、Laplacian、LoG、Canny)

计算机视觉工程师在面试过程中主要考察三个内容:图像处理、机器学习、深度学习。然而,各类资料纷繁复杂,或是简单的知识点罗列,或是有着详细数学推导令人望而生畏的大部头。为了督促自己学习,也为了方便后人,决心将常考必会的知识点以通俗易懂的方式设立专栏进行讲解,努力做到长期更新。此专栏不求甚解,只追求应付一般面试。希望该专栏羽翼渐丰之日,可以为大家免去寻找资料的劳累。每篇介绍一个知识点,没有先后顺序。想了解什么知识点可以私信或者评论,如果重要而且恰巧我也能学会,会尽快更新。最后,每一个知识点我会参考很多资料。考虑到简洁性,就不引用了。如有冒犯之处,联系我进行删除或者补加引用。在此先提前致歉了!

边缘检测算子是用来提取图形边缘的卷积核

边缘提取原理
边缘处的像素值通常会有明显变化
衡量连续的变化可以使用导数
衡量图像像素间离散的变化使用差分
导数:(f(x+Δx)-f(x))/Δx
差分:f(x+1)-f(x)

梯度表示
梯度表示包含大小和方向

如果只有一个算子
只能表示大小

如果有两个算子
两个算子计算的梯度的方向是互相垂直的
如果计算的大小分别为Gx和Gy
方向为:
在这里插入图片描述
大小有三种:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Roberts

在这里插入图片描述
很直观,我们会想到分别计算x方向和y方向的差分
于是我们得到两个算子
[-1 1]

[-1
1]
但是我们可以发现它们计算的区域不同,只有一个点重合
所以升级为
[-1 1
-1 1]

[-1 -1
1 1]
考虑到三个因素:

  1. 计算量
  2. 实验效果
  3. 像素间距离很小,计算对角差分和相邻的差分,实际意义相差不大(这点事个人理解)

于是最后产生了Roberts算子

Prewitt

在这里插入图片描述
以第一个算子为例
想计算中心点x方向的梯度
额外考虑了上一行和下一行x方向的梯度
相当于取了平均

Sobel

在这里插入图片描述
在这里插入图片描述
在Prewitt取平均的基础上
对当前行(列)增加了权重
相当于加权平均
实验证明,这样效果好一些

变种:
在这里插入图片描述
这个的加权平均就严格按照距离的比例关系来了
因为对角的距离是相邻距离的根号2倍

Laplacian

在这里插入图片描述
以上都是一阶差分
Laplacian是二阶差分
证明:
仅考虑x方向
一阶:
中心点右边的点:f(x+1)-f(x)
中心点左边的点:f(x)-f(x-1)
二阶:
中心点:
[f(x+1)-f(x)]-[f(x)-f(x-1)]=f(x+1)+f(x-1)-2f(x)
再考虑到y方向,相加即可得到Laplacian

扩展模式:
在这里插入图片描述

LoG(Laplacian of Gaussian)

原理
高斯平滑(模糊)和拉普拉斯结合

这个模板就不固定了
大小不再局限于3x3
通常可以是5x5
根据方差不同
模板中的数值也不同

主要目的
高斯平滑可以去噪

该算子的一个例子(下文会介绍推导)
在这里插入图片描述

Canny

Canny严格来说应该是一种算法

步骤:
1.RGB变灰度图(其它算子也都是计算灰度图,没有太大必要计算三通道再取平均,毕竟计算的是边缘信息,颜色信息不重要)
2.高斯平滑去噪
3.使用任意算子计算梯度大小和方向(因为要计算大小和方向,所以Laplacian等相关算子就不能用了)
4.非极大值抑制
将梯度方向分为4部分(因为向上和向下对于梯度没影响,所以把360度转换为180度)
在这里插入图片描述
在这里插入图片描述
比如现在2行3列的7是中心点
它的方向是上下走向
找到上下方向的相邻点4和5
因为7比4和5大
所以7保留

注意:
一定是该方向上相邻的两个点
比如方向为右上
那么相邻的点就是右上角和左下角

5.双阈值边缘连接
设定两个阈值high和low
梯度大小大于high的保留
梯度大小小于low的去除(梯度大小修改为0)
梯度在low和high之间的做8邻域连接
如果8邻域内有大于high的,那么该中心点保留,否则去除

8邻域就是中心点周围的8个点

关于高斯

噪声通常是像素值突变的点

举个例子
在5x5的范围内,将所有像素值平均
可以减小这种突变
实现了去噪

这样的坏处是,图像的信息也没了

为了缓解上述情况
我们想到增加中心点的权重
离中心点距离越远,权重越小
高斯分布满足这一条件

所以高斯平滑算子可以用以下公式得到
在这里插入图片描述
进一步
LoG是高斯和拉普拉斯的结合
拉普拉斯是二阶差分
所以我们对上式关于x和y分别求二阶导并相加
得到
在这里插入图片描述
比如中心点是(3,3)
那么LoG算子(4,5)处的值就是把x=1,y=2代入上式

还有个超参数是高斯函数的方差
方差越大,高斯函数越平缓,去噪效果越好,图像越模糊

优缺点分析
优缺点没那么绝对,也很难死记硬背,还是要学会分析

上文提到,平均可以去噪
那么有平均思想的算子就对噪声不敏感
比如Prewitt、Sobel
有了平均思想自然会造成一定的信息模糊
所以边缘定位会因此效果下降
Roberts没有这种平均思想
在噪声小的条件下,边缘定位就会准确一些

一阶差分形容像素值变化趋势
二阶差分形容变化趋势的快慢或者说剧烈程度
显然噪声的变化程度剧烈
那么没有去噪处理的Laplacian对噪声就会敏感

在这里插入图片描述
四行分别是
常见边缘
像素变化
一阶差分
二阶差分

因为梯度大小要取绝对值或者平方
所以应该将小于0的部分向上翻转

可以看出
二阶差分算子容易检测出双边缘
一阶算子比较适合灰度渐变

Canny这种有很多步骤的就可以根据步骤分析
高斯平滑:去噪
双阈值连接:连接一些弱边缘
Canny更像一个集大成者
毕竟它已经上升到算法层面了

我觉得学会分析这些就够了,优缺点还是挺难记的


欢迎讨论 欢迎吐槽

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值