所以,我了解sobel边缘检测背后的机制。 https://homepages.inf.ed.ac.uk/rbf/HIPR2/sobel.htm
我不理解的是梯度矩阵背后的直觉。我知道如何计算它,但我不明白这些值实际代表什么。
有人能指出我正确的方向吗?
Sobel矩阵是图像的一阶导数(近似)。
对于函数y = f(x)
,一阶导数是:
lim(dx / dy), dx ->0
dx
和dy
分别表示x
和y
值的变化。
并且函数梯度是所有其因变量的偏导数的向量(图像是具有两个因变量的函数img = F(x, y)
:]
grad = [d(x, y)/dx d(x, y)/dy]
这就是Sobel对于x和y相关值(图像轴)有两个内核的原因因此,渐变背后的数学运算没有特定的数字图像。
当我们处理数字图像时,dx限制为1(因为它是可能的最小值)。但是Sobel内核(内核大小通常应该是奇数)的大小为3.因此,与Sobel内核进行的图像卷积(例如x轴)会存储相邻像素值的差异。并且它将为像素值恒定(d(F(x, y) = 0
)的区域存储零值。
考虑连续[255 255 255]
中的三个白色像素。像素值没有变化,并且与[-2 0 2] will give
0. If we add a zero pad to have an output size equal to input
[0 255 255 255 0]进行卷积,使用相同的滤波器,我们将得到[510 0 -510]。可以解释为:(0)单元为255的正值变化,(2)单元为255的负值变化,而(1)单元为零。