- 数字图像处理
- DIP - 首页
- DIP - 图像处理介绍
- DIP - 信号与系统介绍
- DIP - 摄影史
- DIP - 应用与用途
- DIP - 维度的概念
- DIP - 相机成像
- DIP - 相机机制
- DIP - 像素的概念
- DIP - 透视变换
- DIP - 每像素比特数的概念
- DIP - 图像类型
- DIP - 颜色代码转换
- DIP - 灰度到RGB转换
- DIP - 采样的概念
- DIP - 像素分辨率
- DIP - 放大的概念
- DIP - 放大方法
- DIP - 空间分辨率
- DIP - 像素、点和每英寸线条数
- DIP - 灰度分辨率
- DIP - 量化的概念
- DIP - ISO 偏好曲线
- DIP - 抖动的概念
- DIP - 直方图介绍
- DIP - 亮度和对比度
- DIP - 图像变换
- DIP - 直方图滑动
- DIP - 直方图拉伸
- DIP - 概率论介绍
- DIP - 直方图均衡化
- DIP - 灰度变换
- DIP - 卷积的概念
- DIP - 模板的概念
- DIP - 模糊的概念
- DIP - 边缘检测的概念
- DIP - Prewitt 算子
- DIP - Sobel 算子
- DIP - Robinson 罗盘模板
- DIP - Krisch 罗盘模板
- DIP - 拉普拉斯算子
- DIP - 频域分析
- DIP - 傅里叶级数和变换
- DIP - 卷积定理
- DIP - 高通滤波器与低通滤波器
- DIP - 颜色空间介绍
- DIP - JPEG 压缩
- DIP - 光学字符识别
- DIP - 计算机视觉与图形学
- DIP 有用资源
- DIP - 快速指南
- DIP - 有用资源
- DIP - 讨论
Sobel算子
Sobel算子与Prewitt算子非常相似。它也是一个导数模板,用于边缘检测。与Prewitt算子一样,Sobel算子也用于检测图像中的两种边缘。
- 垂直方向
- 水平方向
与Prewitt算子的区别
主要区别在于,在Sobel算子中,模板的系数不是固定的,可以根据需要调整,除非它们违反了导数模板的任何属性。
Sobel算子的垂直模板
以下是Sobel算子的垂直模板:
-1 | 0 | 1 |
-2 | 0 | 2 |
-1 | 0 | 1 |
此模板的工作原理与Prewitt算子的垂直模板完全相同。只有一个区别,即它在第一列和第三列的中心具有“2”和“-2”的值。应用于图像时,此模板将突出显示垂直边缘。
工作原理
当我们将此模板应用于图像时,它会突出显示垂直边缘。它就像一阶导数一样,计算边缘区域中像素强度的差异。
由于中心列为零,因此它不包含图像的原始值,而是计算该边缘周围左右像素值的差值。此外,第一列和第三列的中心值分别为2和-2。
这为边缘区域周围的像素值赋予了更大的权重。这增加了边缘强度,使其与原始图像相比得到增强。
Sobel算子的水平模板
以下是Sobel算子的水平模板:
-1 | -2 | -1 |
0 | 0 | 0 |
1 | 2 | 1 |
上述模板将查找水平方向的边缘,这是因为零列位于水平方向。当您将此模板与图像进行卷积时,它会在图像中突出显示水平边缘。唯一的区别是它在第一行和第三行的中心元素为2和-2。
工作原理?
此模板将突出显示图像中的水平边缘。它也基于上述模板的原理,计算特定边缘的像素强度差异。由于模板的中心行由零组成,因此它不包含图像中边缘的原始值,而是计算特定边缘的上下像素强度差异。从而增加了强度的突然变化,使边缘更清晰可见。
现在是时候看看这些模板的实际效果了
示例图像
以下是我们将一次应用上述两个模板的示例图片。
应用垂直模板后
将垂直模板应用于上述示例图像后,将获得以下图像。
应用水平模板后
将水平模板应用于上述示例图像后,将获得以下图像。
比较
您可以看到,在我们应用垂直模板的第一张图片中,所有垂直边缘都比原始图像更清晰。同样,在第二张图片中,我们应用了水平模板,结果所有水平边缘都清晰可见。
因此,您可以看到我们可以检测图像中的水平和垂直边缘。此外,如果您将Sobel算子的结果与Prewitt算子的结果进行比较,您会发现Sobel算子找到的边缘更多,或者使边缘比Prewitt算子更清晰可见。
这是因为在Sobel算子中,我们为边缘周围的像素强度分配了更大的权重。
对模板应用更大的权重
现在我们还可以看到,如果我们对模板应用更大的权重,它将为我们获得更多的边缘。如教程开头所述,Sobel算子没有固定的系数,因此这里还有另一个加权算子:
-1 | 0 | 1 |
-5 | 0 | 5 |
-1 | 0 | 1 |
如果您将此模板的结果与Prewitt垂直模板的结果进行比较,很明显,此模板将比Prewitt模板产生更多的边缘,这仅仅是因为我们在模板中分配了更大的权重。