图像的边缘指的是图像中像素灰度值突然发生变化的区域,如果将图像的每一行像素和每一列像素都描述成一个关于灰度值的函数,那么图像的边缘对应在灰度值函数中是函数值突然变大的区域。函数值的变化趋势可以用函数的导数描述。当函数值突然变大时,导数也必然会变大,而函数值变化较为平缓区域,导数值也比较小,因此可以通过寻找导数值较大的区域去寻找函数中突然变化的区域,进而确定图像中的边缘位置。给出一张含有边缘的图像,图像每一行的像素灰度值变化可以用图中下方的曲线表示。
图像每行像素灰度值变化趋势
通过像素灰度值曲线可以看出图像边缘位于曲线变化最陡峭的区域,对灰度值曲线求取一阶导数可以得到所示的曲线,通过曲线可以看出曲线的最大值区域就是图像中的边缘。
每一行灰度值函数的导数
由于图像是离散的信号,我们可以用临近的两个像素差值来表示像素灰度值函数的导数,求导形式可以用如下公式来表示。
这种对X轴方向求导方式对应于滤波器为[1-1],同样对Y轴方向求导对应的滤波器为[1-1]。但这种求导方式的计算结果最接近于两个像素中间位置的梯度,而两个临近的像素中间不再有任何的像素,因此如果想表示某个像素处的梯度,最接近的方式是求取前一个像素和后一个像素的差值,因此需要将公式修改为如所示。
改进的求导方式对应的滤波器在X方向和Y方向分别为[0.5 0 -0.5]和[0.5 0- 0.5]。根据这种方式也可以用式所示的滤波器计算45°方向的梯度,寻找不同方向的边缘。
图像的边缘包含X方向的边缘和Y方向的边缘,因此分别求取两个方向的边缘后,对两个方向的边缘求取并集就是整幅图像的边缘,即将图像两个方向边缘结果相加得到整幅图像的边缘信息。