|
这次课是纯粹的理论基础,没有代码实现。如果对原理不感兴趣,只想会用的话,可以跳过。
一、sobel算子的理解
第一步,水平方向的梯度计算 计算x方向的梯度,就是用左边的卷积核 与 原始图像 相乘。
比如,下面的图像。计算P5这一个点的水平方向的梯度(也就是计算从左边到右边有没有边界)。
其实是用p5这个点右边这一列 减去 左边一列,同时还要注意下系数(因为中间离p5近,所以给了系数2,两边的远,给系数1): (p3 + 2*p6 + p9) - (p1 + 2*p4 + p7)
如果有边界,则右边减左边的值应该很明显;如果没有边界,那么p5这个点的值就是0。
第二步, 垂直方向的梯度计算
除了计算水平方向的边界以外,还可以计算垂直方向的边界。 垂直方向的边界用到下面这样的卷积核:
比如,计算下面p5这个点在垂直方向上的梯度。
实际上就是用下面一行减去上面一行。如果相差特别大,说明是边界;如果差很小,说明很接近,不是边界。
第三步,根据水平方向的梯度和垂直方向的梯度计算sobel算子 有了水平方向和垂直方向的梯度以后,就可以计算两个方向的梯度了:
有时候平方不好算,所以可以近似用绝对值相加,得到sobel算子:
二、sobel算子的计算
举例:计算p5这个点的Sobel算子
|