目录
- Sobel算子的详细由来以及scharr算子
- laplace算子的由来
Sobel算子的详细由来以及scharr算子
具体解释可以参考:这篇知乎的前两个回答,尤其第二个回答。
补充:这里的梯度计算使用的是前向差分和后向差分相结合的中心差分思想(参考),也就是中间像素点的梯度计算方式原因。
Scharr算子实际上是对3*3sobel算子的改进,sobel算子虽然可以有效的提取图像边缘,但是对图像中较弱的边缘提取效果较差,尤其sobel算子在计算相对较小的核的时候,其近似计算导数的精度比较差。Scharr算子对Sobel算子的差异性能力进行增强,主要思路是通过将模板中的权重系数放大来增大像素值间的差异,因此相比较Sobel算子在边缘识别上更加敏感。
laplace算子的由来
一般使用一阶微分来判断边缘是因为边缘处一阶微分值最大,如下图所示。
然而一阶微分(偏导) 反映灰度变化的快慢,而二阶微分(偏导)反映的是灰度变化曲线频率变化的剧烈程度(突变),很多时候仅有灰度的变化(一阶微分),但并不能证明此处出现了边缘或结构信息,而二阶微分恰恰弥补了这一缺陷。例如下图所示,一阶微分始终都有,但并不是一个边缘。
这时候就引入二阶微分,也就是拉普拉斯算子。图像边缘处就是邻域范围内灰度值最大或者最小(局部最值处),拉普拉斯算子是梯度的散度,从几何意义(参考)上来看,当拉普拉斯算子就是该点处各个方向梯度之和,当该点处是平滑的,拉普拉斯算子为零或者很接近零的数。
上图能发现,边缘处的灰度值是会发生剧烈变化的,一阶微分只能反映变化快慢,而二阶微分可以反映出变化的剧烈程度,此刻边缘点处的二阶微分就是最值,因此可以借用二阶微分来判断边缘,但是也能发现,利用二阶微分去判断边缘会比一阶微分忽略很多边缘情况,如下图所示。
从左到右分别对应Sobel算子,Scharr算子和laplace算子处理的结果。
向量的散度和梯度的散度(拉普拉斯算子)区别:
前者反映是单位体中物质的密度(即该处物质是在变多还是变少),后者(拉普拉斯算子)反映的是单位体中流入流出速度的密度,即局部极值(当流入或者流出速度越大,则该处就越可能是局部极值)。