ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

边缘检测——sobel索伯算子 数学原理和应用

2021-02-14 23:03:50  阅读:692  来源: 互联网

标签:sobel 卷积 索伯 z3 像素 数学原理 z7 z1 z9


索伯算子(sobel operator)常用于边缘检测,在粗精度下,是最常用的边缘检测算子,以广泛应用几十年。sobel算子由两个3X3的卷积核构成,分别用于计算中心像素邻域的灰度加权差。分为垂直方向和水平方向的索伯滤波器Gx and
Gy。

在这里插入图片描述

sobel 算子的用途主要为:

边缘检测时: Gx用于检测纵向边缘, Gy用于检测横向边缘.
计算法线时: Gx用于计算法线的横向偏移, Gy用于计算法线的纵向偏移.

sobel算子应用时进行给定图像的卷积操作,卷积为计算图像大矩阵周围像素和滤波器矩阵对应位置元素的乘积, 然后把结果相加到一起, 最终得到的值就作为该像素的新值, 这样就完成了一次
卷积,之后继续移动卷积核,直到把大矩阵每个位置都运算完毕,因为相邻像素卷积结果一般具有相似输出,会产生大量冗余信息,一般为减少输出值会进行求取最大小值或者平均值的池化操作。

经sobel算子处理的图像(图像来源于网路,侵删)
在这里插入图片描述

值得注意的是,一般卷积操作会伴随卷积核的翻转,而sobel却不需要翻转,因为绕中心点旋转180°,并不影响结果。

sobel算子的卷积核的值是如何确定的呢?其实并不是经验数值,而是具有严格的数学推导,大部分教科书停留在对算子的直观解释上,一般描述为隔行或隔列的差分运算,然后做中心像素位置的2倍加权。实际上,并不是现行教科书上描述的简单的隔行/列的差分运算,中心像素位置也并未参与运算。目前流传的说法中以科学网 彭真明老师提出的曼哈顿距离表述的推导更为准确。

以下对这一过程进行简单推导:
在这里插入图片描述

对中心像素Z5求取多个方向的灰度差分,对于Z5的8个邻域,分为4个方向,即对角线和水平垂直4个方向对: (z1, z9) ,(z2, z8), (z3, z7), (z6, z4)。

定义一个给定邻域方向梯度矢量g的幅度为

|g| = <像素灰度差分>/<相邻像素的距离>

这里特别注意的是,距离为曼哈顿距离,而非欧氏距离(欧氏距离将推导出Frei和Chen(1991)提出的边缘检测器,见附图3)
由曼哈顿距离得出,相邻对角线像素的距离为2,水平与垂直距离为1,即在中心像素周围邻域像素的对角线距离为4,垂直水平距离为2,带入上述梯度矢量g计算公式求平均梯度矢量有:

G = {(z3-z7)/4 * [1, 1]+ (z1-z9)/4 * [-1, 1]+ (z2-z8)/2 * [0, 1]+ (z6-z4)/2 * [1, 0] }/4

式中, 4个单位向量 [1, 1],[-1, 1],[0, 1], [1, 0] 控制差分的方向.

上式展开后,有

G = [(z3- z7- z1+ z9)/4 + (z6-z4)/2, (z3- z7+ z1- z9)/4 + (z2-z8)/2] /4

为保留低位字节和加速运算,去除分母,即扩大16倍。

这样,计算公式变为:

G’ = 16*G

= [z3 - z7- z1+ z9 + 2*( z6 - z4), z3 - z7 + z1- z9 + 2*( z2-z8)]

= [z3 + 2z6 + z9 - z1 - 2z4-z7, z1 + 2z2 + z3 - z7 - 2z8 - z9]

按x-y方向,可分别写成:

G’x = (z3 + 2z6 + z9) - (z1 + 2z4 + z7)

G’y = (z1 + 2z2 + z3) - (z7 + 2z8 + z9)

由上式可得sobel垂直水平卷积核。
附图3:

在这里插入图片描述

参考:
http://blog.sciencenet.cn/blog-425437-1139187.html
https://baike.baidu.com/item/索伯算子/22735660?fr=aladdin
https://www.cnblogs.com/freeblues/p/5738987.html
https://www.zhihu.com/question/49376084

标签:sobel,卷积,索伯,z3,像素,数学原理,z7,z1,z9
来源: https://blog.csdn.net/weixin_45399399/article/details/113811619

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有