计算机视觉|边缘检测

计算机视觉 · 2023-07-04 · 217 人浏览
计算机视觉|边缘检测

摘要

边缘检测是视觉中比较基础任务。通过边缘可以更容易的对图像中的事物进行认知,或者说边缘是图像语义的压缩表示

检测方法

对于图像边缘,边缘两侧的像素值相差较大。那么可以通过导数来确定边缘位置。

image-20230704202028531

导数定义如下,对于离散的像素点,$\delta x$可以简单表示为1个像素。

image-20230704202141638

进一步可以使用卷积操作来实现横向/纵向边缘的提取,如下图所示。

image-20230704202222936

关于边缘检测算子,有prewitt、sobel、roberts.prewitt比较经典,sobel算子其实是高斯模糊与边缘检测的叠加操作($[1 2 1]^T[-1 0 1]$),roberts算子则检查斜向的边缘。

image-20230704202331680

我们得到了横向、纵向的偏导,其实就可以确定某个像素点的实际梯度方向。这个梯度方向和边缘线保持垂直,所以也可以得到边缘线的方向,这在之后的拟合hough变换会用到。对梯度取模,可以使边缘现象更加明显。

image-20230704202425868

image-20230704202601136

高斯偏导模板

刚刚提到的sobel算子可以拆解成高斯模糊和边缘检测(偏导)的操作,高斯模糊可以去除一部分噪声,从而使边缘检测更准确。根据求导法则,可以先对高斯核求导,再使用求导后的高斯核进行卷积。求导后的高斯核叫做高斯偏导模板。

image-20230704210806126

示意图如下,左右两图分别检测竖向边缘和横向边缘。

image-20230704210826024

高斯偏导模板的核内数值和应该是0,这样可以保证恒定不变区域卷积后的值为0,即不存在边缘。

Canny边缘检测

直接取梯度的范数,会出现伪边、边缘线不闭合等情况。

image-20230704211120103

使用canny算法提取边缘更加准确。

首先是极大值抑制,使边缘线更细。只保留像素值比梯度方向b两边都大的点。

image-20230704211222557

第二个方法是双门限阈值法。先通过高门限提取部分边,再逐步降低门限值,补充高门限值提取出来的边缘图像

image-20230704211332838

计算机视觉 边缘检测
Theme Jasmine by Kent Liao