数字图像处理之边缘检测

原理:

        图像边缘指的是图像中像素灰度值突然发生变化的区域,如果将图像的每一行像素和每一列像素都描述成一个关于灰度值的函数,那么图像边缘对应灰度值函数中函数值突然变大的区域(这个很好理解,在图像边缘处,灰度值变化大,导数必然变变大)因此,我们可以寻找导数值较大的区域去寻找函数中突然变化的区域(即边缘)。

求导公式如下:

\frac{df(x,y)}{dx} = f(x,y)-f(x-1,y)

        这种沿x轴方向求导对应的滤波器为[-1,1],同样沿y轴方向求导对应的滤波器为[-1,1]^{T}

        这种求导方式的计算结果最接近两个像素中间的位置,而两个邻近像素的中间不再有像素值,这时我们可以对公式作出改进。

改进后的公式如下:

\frac{df(x,y)}{dx} = \frac{f(x+1,y)-f(x-1,y)}{2}

        这里灰度值函数是连续的,所以不考虑不可导的情况。这种沿x轴方向求导对应的滤波器为[-0.5 ,0 ,0.5],同样沿y轴方向求导对应的滤波器为[-0.5,0,0.5]^{T}

        图像的边缘包含x方向的边缘和y方向的边缘,因此分别求取两个方向的边缘后,对两个方向的边缘求取并集就得到整幅图像的边缘,即将两个方向的边缘相加得到整幅图像的边缘。

边缘检测算子可以参考这两篇博客:

数字图像处理(19): 边缘检测算子(Roberts算子、Prewitt算子、Sobel算子 和 Laplacian算子)

Canny边缘检测

你可能感兴趣的:(数字图像处理,计算机视觉,opencv,python)