图像处理中常见的边缘检测算子

1、资源搜索

Sobel算子推导

[OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

边缘检测 从Roberts到Canny算子
图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny)

2、本人总结

        开始讲解之前,还是老规矩先讨论一下为什么会出现各种算子。计算机不像我们人眼,看到一张图像就知道里面含有什么物体。它的智力是非常低的,我们需要慢慢把图像中的关键信息告诉它后才能分析图像中的内容。而在图像中最重要一部分就是边缘信息,我们人类其实也是根据轮廓对这个目标作出判断。这里我们将主要介绍Sobel,Robert, Prewitt,Laplacian,Canny边缘检测算子,并采用理论加实践方式学习。

        上面提到算子中其实主要分为两种一阶导数二阶导数算子,其实可以使用更高阶的导数,但是噪声的影响,在纯粹二阶导数操作就会出现对噪声敏感现象,三阶段以上导数信息容易丢失应用价值。二阶导数还可以说明灰度突变类型,在有些情况下,如灰度变化均匀图像,只利用一阶导数可能找不到边界,但使用二阶导数就能提供很有用的信息。对于二阶导数对噪声敏感的问题,我们一般要对图像进行平滑滤波,消除噪声,然后在进行边缘检测。因为二阶导数是基于过零检测的,因此得到的边缘点数较少,有利于后继的处理和识别工作。

2.1 Sobel算子

2.1.1 公式推导

\small \frac{\partial f}{\partial x} \approx \frac{f(x+1,y) - f(x-1,y)}{2} \approx \frac{f(x+1,y-1) - f(x-1,y-1)}{2} \approx \frac{f(x+1,y+1) - f(x-1,y+1)}{2}

\small \frac{\partial f}{\partial x} \approx \frac{f(x,y+1) - f(x,y-1)}{2} \approx \frac{f(x+1,y+1) - f(x+1,y-1)}{2} \approx \frac{f(x-1,y+1) - f(x-1,y-1)}{2}

\small \left \| \triangledown (x,y) \right \| = \sqrt{(\frac{\partial f}{\partial x})^{2} + (\frac{\partial f}{\partial y})^{2} } \approx \left | \frac{\partial f}{\partial x} \right | + \left | \frac{\partial f}{\partial y} \right |

\tiny \approx \frac{1}{4}(4\left | \frac{\partial f}{\partial x} \right | + 4\left | \frac{\partial f}{\partial y} \right |) = \frac{1}{4} (2*(f(x+1,y) - f(x - 1,y)) + (f(x-1,y+1) - f(x - 1,y-1)) ) + (f(x+1,y+1) - f(x + 1,y-1)) )

\tiny \approx \frac{1}{4}(4\left | \frac{\partial f}{\partial y} \right | + 4\left | \frac{\partial f}{\partial x} \right |) =\tiny \frac{1}{4} (-2*(-f(x,y+1) + f(x ,y-1)) -(-f(x+1,y-1) + f(x - 1,y-1)) ) - (-f(x+1,y+1) + f(x - 1,y+1)) )

请让我们根据公式得到的算子来说明一下:

                                             \small G_{x}=\begin{bmatrix} -1 & 0 & +1\\ -2 & 0 & +2\\ -1 & 0& +1 \end{bmatrix}     \small G_{y}=\begin{bmatrix} -1 & -2 & -1\\ 0 & 0 & 0\\ +1 & +2& +1 \end{bmatrix}

上面得到的是相关模板,要与图像进行卷积操作的话,需要将模板旋转180度:

                                             \small G_{x}=\begin{bmatrix} +1 & 0 & -1\\ +2 & 0 & -2\\ +1 & 0& -1 \end{bmatrix}    \small G_{y}=\begin{bmatrix} +1 & +2 & +1\\ 0 & 0 & 0\\ -1 & -2& -1 \end{bmatrix}

看到卷积后的公式,我们大概应该理解为什么第二个公式会添加负号。

发布了149 篇原创文章 · 获赞 22 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/CSS360/article/details/102821146