摘要 边缘检测是视觉中比较基础任务。通过边缘可以更容易的对图像中的事物进行认知,或者说边缘是图像语义的压缩表示。 检测方法 对于图像边缘,边缘两侧的像素值相差较大。那么可以通过导数来确定边缘位置。 导数定义如下,对于离散的像素点,$\delta x$可以简单表示为1个像素。 进一步可以使用卷积操作来实现横向/纵向边缘的提取,如下图所示。 关于边缘检测算子,有prewitt、sobel、roberts.prewitt比较经典,sobel算子其实是高斯模糊与边缘检测的叠加操作($[1 2 1]^T[-1 0 1]$),roberts算子则检查斜向的边缘。 我们得到了横向、纵向的偏导,其实就可以确定某个像素点的实际梯度方向。这个梯度方向和边缘线保持垂直,所以也可以得到边缘线的方向,这在之后的拟合hough变换会用到。对梯度取模,可以使边缘现象更加明显。 高斯偏导模板 刚刚提到的sobel算子可以拆解成高斯模糊和边缘检测(偏导)的操作,高斯模糊可以去除一部分噪声,从而使边缘检测更准确。根据求导法则,可以先对高斯核求导,再使用求导后的高斯核进行卷积。求导后的高斯核叫做高斯偏导模板。
摘要 滤波作为计算机视觉中常见的一种操作,一般用于降噪、边缘提取等操作。滤波一般通过卷积操作完成,根据需要可以定制卷积核,实现均值/高斯/中值滤波。 卷积操作 卷积操作的示意图如下,给定卷积核g和图像f,卷积后的图像表示为 $$ (f*g)[m,n] = \sum_{k,l}f[m-k,n-l]g[k,l] $$ 根据上述公式中的负号,卷积核实际使用时,是将核上下左右翻转后再作用在图像f上。当然这个操作在实际编程时已经被淡化,只不过卷积定义要求了负号(翻转) 卷积具有两个特性: Linearity,即$filter(f_1+f_2) = filter(f_1)+filter(f_2)$ Shift invariance,即$filter(shift(f)) = shift(filter(f))$ 以上两个性质说明任何具有平移不变性的线性操作都可以用卷积操作表示。除此之外,卷积操作还满足交换律、结合律、分配律、数乘等操作。 卷积操作会改变图像的大小(联想deep learning中卷积层的padding),那么如何填充原始图像,保证结果图像和原图保持大小一致就是一个值得思考的问题。
Axuanz
Updating as per fate.