图像处理中,一个最基本并且最重要的卷积就是导数的计算,一般用来表达微分最常用的操作是Sobel算子,可以包含任意阶的微分以及融合偏导(例如∂2/∂x∂y)。在图像处理中,主要用作边缘检测。在技术上,它是一离散性差分算子,用来运算图像亮度函数的梯度之近似值。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。
根据百度百科:
该算子包含两组矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。矩阵的大小称为核的大小。sobel算子有一个非常好的性质,即可以定义任意大小的核,并且这些核可以用快速且迭代方式构造。在opencv函数cvSobel中,有以参数aperture_size就是用于控制核的大小,目前该函数支持1,3,5,7。
Sobel导数并不是真正的导数,这是因为Sobel算子定义于一个离散空间之上,它真正表示的是多项式拟合,用较大的核的话会在更多像素上进行拟合,会更加正确。而较小的核对噪声会更加敏感,此时用sobel算子近似计算导数的缺点精度比较低,这种不精确性在试图估计图像的方向导数(directional derivative,使用y/x滤波器响应的反正切得到的图像梯度的方向)。比如对于3*3的Sobel滤波器,梯度角度接近水平或者垂直方向的时候,这样的不准确性会比较明显。cvSobel可以通过使用CV_SCHARR来作为核的大小值,隐性的解决这个问题,实际是改变了矩阵中元素的值。
目前,先了解到这里。这个链接里的更加专业的感觉,http://blog.sina.com.cn/s/blog_4bdbec750100mufo.html