数字图像 - 边缘检测原理 - Sobel, Laplace, Canny算子

先来看张图,左边是原图,右边是边缘检测后的图,边缘检测就是检测出图像上的边缘信息,右图用白色的程度表示边缘的深浅。

sobel.png

边缘其实就是图像上灰度级变化很快的点的集合。
如何计算出这些变化率很快的点?

1.导数,连续函数上某点斜率,导数越大表示变化率越大,变化率越大的地方就越是“边缘”,但是在计算机中不常用,因为在斜率90度的地方,导数无穷大,计算机很难表示这些无穷大的东西。

2.微分,连续函数上x变化了dx,导致y变化了dy,dy值越大表示变化的越大,那么计算整幅图像的微分,dy的大小就是边缘的强弱了。
微分与导数的关系:dy = f '(x) dx

举个例子:

在连续函数里叫微分,因为图像是离散的,叫差分,和微分是一个意思,也是求变化率。
差分的定义,f '(x) = f(x + 1) - f(x),用后一项减前一项。
按先后排列 -f(x) + f(x + 1)
提出系数 [-1, 1] 作为滤波模板,跟原图 f(x) 做卷积运算就可以检测边缘了

模板为什么要是奇数的?

因为模板是偶数的话,卷积出来的结果应该是放在中间的,不方便表示。
例如:图像 [10, 20, 30] 跟 [-1, 1] 卷积后的值,应该放在图像 10 跟 20 中间的位置,就是应该放在 0 和 1 号位置的中间,也就是 0.5 号位,但是图像是离散的,中间没得放,只能放在 0 号位,也就是 10 的位置,就偏差了 0.5 的位置,为了方便处理,滤波模板一般都是奇数个的,3,5,7 个的。

Sobel 边缘检测算子

所以用 f '(x) = f(x + 1) - f(x - 1) 近似计算一阶差分。

排好序:[-1 * f(x-1),0 * f(x),1 * f(x+1)]
提出系数:[-1, 0, 1]

所以模板 [-1, 1] 被改造成了 [-1, 0, 1]
二维情况下就是

-1, 0, 1
-1, 0, 1
-1, 0, 1

这个就是 Prewitt 边缘检测算子了。

f(x-1, y-1),  f(x, y-1),  f(x+1, y-1)
f(x-1, y),    f(x, y),    f(x+1, y)
f(x-1, y+1),  f(x, y+1),  f(x+1, y+1)

中心点 f(x, y) 是重点考虑的,它的权重应该多一些,所以改进成下面这样的

-1, 0, 1
-2, 0, 2
-1, 0, 1

这就是 Sobel 边缘检测算子,偏 x 方向的。(类似二元函数的偏导数,偏x,偏y)
同理可得

-1, -2, -1
 0,  0,  0
 1,  2,  1

是 sobel 偏 y 方向的算子。

分别计算偏 x 方向的 Gx,偏 y 方向的 Gy,求绝对值,压缩到 [0, 255]
区间,即 G(x, y) = Gx + Gy 就是 sobel 边缘检测后的图像了

Laplace 边缘检测算子

拉普拉斯是用二阶差分计算边缘的,看连续函数的情况下
在一阶微分图中极大值或极小值处,认为是边缘。
在二阶微分图中极大值和极小值之间的过 0 点,被认为是边缘。

拉普拉斯算子推导:
一阶差分:f '(x) = f(x) - f(x - 1)
二阶差分:f '(x) = (f(x + 1) - f(x)) - (f(x) - f(x - 1))
化简后:f '(x) = f(x - 1) - 2 f(x)) + f(x + 1)
提取前面的系数:[1, -2, 1]

二维的情况下,同理可得
f '(x, y) = -4 f(x, y) + f(x-1, y) + f(x+1, y) + f(x, y-1) + f(x, y+1)
提取各个系数,写成模板的形式

0,  1, 0
1, -4, 1
0,  1, 0

考虑两个斜对角的情况

1,  1, 1
1, -8, 1
1,  1, 1

这就是拉普拉斯算子,与原图卷积运算即可求出边缘。

Canny 边缘检测算子

canny计算过程
1.高斯滤波器平滑图像。
2.一阶差分偏导计算梯度值和方向。
3.对梯度值不是极大值的地方进行抑制。
4.用双阈值连接图上的联通点。

通俗说一下,
1.用高斯滤波主要是去掉图像上的噪声。
2.计算一阶差分,OpenCV 源码中也是用 sobel 算子来算的。
3.算出来的梯度值,把不是极值的点,全部置0,去掉了大部分弱的边缘。所以图像边缘会变细。
4.双阈值 t1, t2, 是这样的,t1 <= t2
大于 t2 的点肯定是边缘
小于 t1 的点肯定不是边缘
在 t1, t2 之间的点,通过已确定的边缘点,发起8领域方向的搜索(广搜),图中可达的是边缘,不可达的点不是边缘。
最后得出 canny 边缘图。

三个算子区别

sobel 产生的边缘有强弱,抗噪性好
laplace 对边缘敏感,可能有些是噪声的边缘,也被算进来了
canny 产生的边缘很细,可能就一个像素那么细,没有强弱之分。

下面三张图分别是 sobel,canny,laplace 结果图。


sobel算子
canny算子
laplace算子
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘...
    大川无敌阅读 13,633评论 0 29
  • 1、阈值分割 1.1 简介 图像阈值化分割是一种传统的最常用的图像分割方法,因其实现简单、计算量小、性能较稳定而成...
    木夜溯阅读 22,413评论 9 15
  • 前言 本文是关于OpenGL ES的系统性学习过程,记录了自己在学习OpenGL ES时的收获。这篇文章的目标是学...
    秦明Qinmin阅读 3,780评论 1 13
  • 这篇文章总结比较全面:http://blog.csdn.net/timidsmile/article/detail...
    rogerwu1228阅读 1,718评论 0 3
  • 1 没想到我在简书上分享的第一篇文章是关于考研失败的话题。 虽然不想承认,但终归一句话:我考研失败了。 因为家里的...
    沙小年阅读 445评论 8 4