假设我们需要检测图像中的边缘,如下图:
你可以看到在边缘,像素值显著的改变了。表示这一改变的一个方法是使用导数。梯度值的大变预示着图像中内容的显著变化。
用更加形象的图像来解释,假设我们有一张一维图形。下图中灰度值的”跃升”表示边缘的存在:
使用一阶微分求导我们可以更加清晰的看到边缘”跃升”的存在(这里显示为高峰值)
从上例中我们可以推论检测边缘可以通过定位梯度值大于邻域的像素的方法找到(或者推广到大于一个阀值).
但是,具体应用到图像中你会发现这个导数是求不了的,因为没一个准确的函数让你去求导,所以就想到了一种替代的方式来求导数。就是用卷积操作进行导数的计算(或者近似计算)。
考虑一个3*3的图像图像区域,求Z5点的梯度值
对Z5点的X方向近似求导:
对Z5点的Y方向近似求导:
结合以上两个结果求出Z5点近似梯度:
Sobel算子:
默认卷积核为3*3,当对X方向求导时,卷积核为
由于求的是3×3中心点的导数,所以给第二行加了一个权重,它的权重为2,第一行和第三行的权重为1。
同理,当对Y方向求导时,卷积核为