📜  卷积的概念

📅  最后修改于: 2020-12-30 10:43:53             🧑  作者: Mango

卷积的概念

卷积用于许多事情,例如计算导数,检测边缘,应用模糊等,所有这些操作都使用“卷积内核”完成。卷积核是一个很小的矩阵,在这个矩阵中,每个单元都有一个数字以及一个锚点。

锚点用于了解内核相对于图像的位置。它从图像的左上角开始,并在每个像素上顺序移动。内核在图像上的每个位置重叠几个像素。每个重叠的像素相乘然后相加。并将总和设置为当前位置的值。

卷积是将图像的每个元素添加到其本地邻居中,然后由内核对其进行加权的过程。它与一种数学卷积形式有关。

在卷积中,矩阵不执行传统的矩阵乘法,但用*表示。

假设有两个3×3矩阵,一个是内核,另一个是图像。在卷积中,内核的行和列被翻转,然后相乘,然后进行求和。出现在矩阵中心即图像[2,2]中的元素将被加权为图像矩阵的组合,权重将由内核给出。同样,矩阵的所有其他元素将被加权,然后将计算权重。

以下是描述卷积过程的伪代码:

For each image row in input image:
    For each pixel in image row:
        Set accumulator to zero
    For each kernel row in kernel:
        For each element in kernel row:
            If element position corresponding* to pixel position then
                Multiply element value corresponding*to pixelvalue
                Add result to accumulator
            Endif
Set output image pixel to accumulator

可以使用多个for循环来计算卷积。但是使用for循环会导致大量重复计算,并且图像和内核的大小也会增加。使用离散傅立叶变换技术可以快速完成卷积运算。在这种技术中,整个卷积运算被转换为简单的乘法。

在卷积中,由于内核是二维的,因此当内核靠近边缘或拐角时会出现问题。

为了克服这些问题,可以做以下事情:

  • 一个人可以忽略
  • 可以在边缘附近创建额外的像素。

可以通过以下方式创建额外的像素:

  • 边缘像素重复。
  • 反射边缘
  • 可以从另一端复制像素。