{
  "schemaVersion": "0.11.0",
  "canonical": "https://www.pystone.net/notes/convolution-fundamentals/",
  "atlas": "https://www.pystone.net/?node=convolution-fundamentals#knowledge-atlas",
  "markdown": "https://www.pystone.net/notes/convolution-fundamentals.md",
  "context": "https://www.pystone.net/notes/convolution-fundamentals.context.json",
  "knowledgeVersion": "224c990773de.5fa8af6e39fa",
  "build": {
    "siteCommit": "224c990773de166d23a886306577dd90379529ce",
    "notesCommit": "5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a",
    "builtAt": "1970-01-01T00:00:00.000Z",
    "version": "224c990773de.5fa8af6e39fa"
  },
  "id": "note:convolution-fundamentals",
  "slug": "convolution-fundamentals",
  "title": "卷积",
  "type": "note",
  "visibility": "public",
  "idStability": "rename-stable",
  "author": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "publisher": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "aliases": [],
  "summary": "卷积 创建时间：2021/2/26 12:20",
  "contentRole": "unspecified",
  "sourceMetadata": {
    "reference": "https://www.zhihu.com/question/22298352/answer/637156871"
  },
  "isMoc": false,
  "mocRecognition": "none",
  "generated": false,
  "attribution": "unspecified",
  "domain": "10-计算机、信息技术与工程",
  "tags": [],
  "mocs": [],
  "updatedAt": "2023-07-25T15:02:00.000003Z",
  "contentHash": "7e43043211add19d820f9f4b932fe6f3729277ea3e9000403a5913d108ec045b",
  "assets": [
    {
      "reference": "assets/卷积__Image.png",
      "url": "/media/ba36f06be375b48dc84c.png",
      "mediaType": "image/png",
      "contentHash": "ba36f06be375b48dc84cfee2d03c67626639f2730a27cf1d15f1f4817ad288e6",
      "byteLength": 14554,
      "width": 422,
      "height": 280
    },
    {
      "reference": "assets/卷积__Image.jpg",
      "url": "/media/3f429fb683fc3e831779.jpg",
      "mediaType": "image/jpeg",
      "contentHash": "3f429fb683fc3e831779f087a46f9767d1ac99efd89580920bfaffd34565d439",
      "byteLength": 314773,
      "width": 1355,
      "height": 765
    },
    {
      "reference": "assets/卷积__Image_1.jpg",
      "url": "/media/c94c0080a92184b45115.jpg",
      "mediaType": "image/jpeg",
      "contentHash": "c94c0080a92184b45115327aada381d96a226cf13254fff5319cd3df1e7db74b",
      "byteLength": 243405,
      "width": 1337,
      "height": 617
    },
    {
      "reference": "assets/卷积__Image_2.jpg",
      "url": "/media/d1e61bad5abd910b1389.jpg",
      "mediaType": "image/jpeg",
      "contentHash": "d1e61bad5abd910b1389e347c114431fd0773905508386d93bf1cd06b9d6bbce",
      "byteLength": 37426,
      "width": 720,
      "height": 326
    },
    {
      "reference": "assets/卷积__Image_3.jpg",
      "url": "/media/4d28064ef021c46ddf7c.jpg",
      "mediaType": "image/jpeg",
      "contentHash": "4d28064ef021c46ddf7c31f68efaddb8bfb83e05723bce5248ea9214f0bca418",
      "byteLength": 37648,
      "width": 720,
      "height": 309
    },
    {
      "reference": "assets/卷积__Image_1.png",
      "url": "/media/57601e6b0db76ba66093.png",
      "mediaType": "image/png",
      "contentHash": "57601e6b0db76ba66093e3c9e91c5dcdd40eb51704935e07d6cef30cca2d1e87",
      "byteLength": 45557,
      "width": 452,
      "height": 341
    },
    {
      "reference": "assets/卷积__Image_2.png",
      "url": "/media/7a8fa50f14504d806ee1.png",
      "mediaType": "image/png",
      "contentHash": "7a8fa50f14504d806ee1392c9bb0cc63b8ddd95c8dd501a4545b923ffa72b6e8",
      "byteLength": 15430,
      "width": 247,
      "height": 247
    },
    {
      "reference": "assets/卷积__Image_3.png",
      "url": "/media/0ee4a4733c4b3f66afca.png",
      "mediaType": "image/png",
      "contentHash": "0ee4a4733c4b3f66afca8a2a899b64f7bcfc5a0d93c19067a25c61629be75a91",
      "byteLength": 40680,
      "width": 783,
      "height": 164
    },
    {
      "reference": "assets/卷积__Image_4.png",
      "url": "/media/87f84428a5f4b8bd3866.png",
      "mediaType": "image/png",
      "contentHash": "87f84428a5f4b8bd3866df1d77689ed9e861de6ed1dc00bddc443a94be31d51b",
      "byteLength": 23916,
      "width": 438,
      "height": 285
    }
  ],
  "headings": [
    {
      "depth": 1,
      "text": "卷积",
      "anchor": "卷积",
      "citation": "https://www.pystone.net/notes/convolution-fundamentals/#%E5%8D%B7%E7%A7%AF"
    },
    {
      "depth": 2,
      "text": "卷积",
      "anchor": "卷积-1",
      "citation": "https://www.pystone.net/notes/convolution-fundamentals/#%E5%8D%B7%E7%A7%AF-1"
    }
  ],
  "claims": [],
  "outgoing": [],
  "incoming": [
    {
      "id": "note:game-graphics-and-runtime",
      "title": "游戏图形与运行时",
      "url": "https://www.pystone.net/notes/game-graphics-and-runtime/",
      "atlas": "https://www.pystone.net/?node=game-graphics-and-runtime#knowledge-atlas",
      "label": "游戏图形与运行时",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "渲染基础中的“卷积”导航项",
      "citation": "https://www.pystone.net/notes/game-graphics-and-runtime/#%E6%B8%B2%E6%9F%93%E5%9F%BA%E7%A1%80"
    }
  ],
  "contentMarkdown": "# 卷积\n> 创建时间：2021/2/26 12:20\n\n![](assets/卷积__Image.png)\n\n所谓两个函数的卷积，本质上就是先将一个函数翻转，然后进行滑动叠加。\n\n卷积——翻转，滑动，倍率，叠加。多次滑动得到的一系列叠加值，构成了卷积函数。\n\n叠加——在连续情况下，叠加指的是对两个函数的乘积求 **积分** ，在离散情况下就是 **加权求和**\n\n以信号分析为例，卷积的结果是不仅跟当前时刻输入信号的响应值有关，也跟过去所有时刻输入信号的响应都有关系，考虑了对过去的所有输入的 **效果的累积** 。\n\n在图像处理的中，卷积处理的结果，其实就是把每个 **像素周边** 的，甚至是整个图像的 **像素** 都考虑进来，对当前像素进行某种 **加权处理** 。\n\n![](assets/卷积__Image.jpg)\n\n![](assets/卷积__Image_1.jpg)\n\n应用：\n\n1\\. 信号分析\n\n一个输入信号f(t)，经过一个线性系统（其特征可以用单位冲击响应函数g(t)描述）以后，输出信号应该是什么？实际上通过卷积运算就可以得到输出信号。\n\n2\\. 图像处理\n\n输入一幅图像f(x,y)，经过特定设计的卷积核g(x,y)进行卷积处理以后，输出图像将会得到模糊， 消除噪声、边缘强化等各种效果。\n\n* * *\n\n图像处理中的卷积：\n\n计算过程：\n\n![](assets/卷积__Image_2.jpg)\n\n对图像的处理函数（如平滑，或者边缘提取），也可以用一个g矩阵来表示，如：\n\n![](https://www.zhihu.com/equation?tex=g%3D%5Cbegin%7Bbmatrix%7D+%26b_%7B-1%2C-1%7D+%26b_%7B-1%2C0%7D+%26b_%7B-1%2C1%7D%5C%5C+%26b_%7B0%2C-1%7D+%26b_%7B0%2C0%7D+%26b_%7B0%2C1%7D+%5C%5C+%26b_%7B1%2C-1%7D+%26b_%7B1%2C0%7D+%26b_%7B1%2C1%7D+%5Cend%7Bbmatrix%7D)\n\n在处理平面空间的问题，已经是二维函数了\n\n![](https://www.zhihu.com/equation?tex=f%28x%2Cy%29%3Da_%7Bx%2Cy%7D+++++)\n\n![](https://www.zhihu.com/equation?tex=g%28x%2Cy%29%3Db_%7Bx%2Cy%7D)\n\n按卷积的定义，二维离散形式的卷积公式应该是：\n\n![](https://www.zhihu.com/equation?tex=%28f+%2A+g%29%28u%2C+v%29%3D%5Csum_%7Bi%7D+%5Csum_%7Bj%7D+f%28i%2C+j%29g%28u-i%2C+v-j%29%3D%5Csum_%7Bi%7D+%5Csum_%7Bj%7D+a_%7Bi%2Cj%7D+b_%7Bu-i%2Cv-j%7D+)\n\n从卷积定义来看，应该是在x和y两个方向去累加（对应上面离散公式中的i和j两个下标），而且是无界的，从负无穷到正无穷。可是，真实世界都是有界的。\n\n对于像素点(u,v)处求卷积，计算如下所示：\n\n![](assets/卷积__Image_3.jpg)\n\n只把坐标（u,v）附近的点选择出来做计算。点(i,j)只能是黄色方框附近的点。\n\n首先我们在原始图像矩阵中取出（u,v）处的矩阵：\n\n![](https://www.zhihu.com/equation?tex=f%3D%5Cbegin%7Bbmatrix%7D+%26a_%7Bu-1%2Cv-1%7D+%26a_%7Bu-1%2Cv%7D+%26a_%7Bu-1%2Cv%2B1%7D%5C%5C+%26a_%7Bu%2Cv-1%7D+%26a_%7Bu%2Cv%7D+%26a_%7Bu%2Cv%2B1%7D+%5C%5C+%26a_%7Bu%2B1%2Cv-1%7D+%26a_%7Bu%2B1%2Cv%7D+%26a_%7Bu%2B1%2Cv%2B1%7D+%5Cend%7Bbmatrix%7D)\n\n然后将图像处理矩阵翻转（这个翻转有点意思，可以有几种不同的理解，其效果是等效的：（1）先沿x轴翻转，再沿y轴翻转；（2）先沿x轴翻转，再沿y轴翻转；）\n\n![](https://www.zhihu.com/equation?tex=g%5E%7B%27%7D%3D%5Cbegin%7Bbmatrix%7D+%26b_%7B1%2C1%7D+%26b_%7B1%2C0%7D+%26b_%7B1%2C-1%7D%5C%5C+%26b_%7B0%2C1%7D+%26b_%7B0%2C0%7D+%26b_%7B0%2C-1%7D+%5C%5C+%26b_%7B-1%2C1%7D+%26b_%7B-1%2C0%7D+%26b_%7B-1%2C-1%7D+%5Cend%7Bbmatrix%7D)\n\n计算卷积时，就可以用\n![](https://www.zhihu.com/equation?tex=f)\n 和\n![](https://www.zhihu.com/equation?tex=g%5E%7B%27%7D)\n 的内积：\n\n![](https://www.zhihu.com/equation?tex=f%2Ag%28u%2Cv%29%3Da_%7Bu-1%2Cv-1%7D+%5Ctimes+b_%7B1%2C1%7D+%2B+a_%7Bu-1%2Cv%7D+%5Ctimes+b_%7B1%2C0%7D+%2Ba_%7Bu-1%2Cv%2B1%7D+%5Ctimes+b_%7B1%2C-1%7D+)\n\n![](https://www.zhihu.com/equation?tex=+%2B+a_%7Bu%2Cv-1%7D+%5Ctimes+b_%7B0%2C1%7D+%2B+a_%7Bu%2Cv%7D+%5Ctimes+b_%7B0%2C0%7D+%2B+a_%7Bu%2Cv%2B1%7D+%5Ctimes+b_%7B0%2C-1%7D)\n\n![](https://www.zhihu.com/equation?tex=+%2B+a_%7Bu%2B1%2Cv-1%7D+%5Ctimes+b_%7B-1%2C1%7D+%2B+a_%7Bu%2B1%2Cv%7D+%5Ctimes+b_%7B-1%2C0%7D+%2B+a_%7Bu%2B1%2Cv%2B1%7D+%5Ctimes+b_%7B-1%2C-1%7D)\n\n意义:\n\n做乘法的两个对应变量a,b的下标之和都是（u,v），其目的是对这种加权求和进行一种约束。这也是为什么要将矩阵g进行翻转的原因。\n\n以上矩阵下标之所以那么写，并且进行了翻转，是为了让大家更清楚地看到跟卷积的关系。这样做的好处是便于推广，也便于理解其物理意义。实际在计算的时候，都是用翻转以后的矩阵，直接求矩阵内积就可以了。\n\n以上计算的是（u,v）处的卷积，延x轴或者y轴滑动，就可以求出图像中各个位置的卷积，其输出结果是处理以后的图像（即经过平滑、边缘提取等各种处理的图像）。\n\n我的理解:\n\n图像处理中，使用卷积，实质上是使用一个矩阵，表示像素点周围各个像素点的权值，对范围内的像素值做加权求平均。 把原始图像中的相邻像素都考虑进来，进行混合。相邻的区域范围取决于g矩阵的维度，维度越大，涉及的周边像素越多。\n\n而矩阵的设计，则决定了这种混合输出的图像跟原始图像比，究竟是模糊了，还是更锐利了。\n\n比如说，如下图像处理矩阵将使得图像变得更为平滑，显得更模糊，因为它联合周边像素进行了平均处理：\n\n![](https://www.zhihu.com/equation?tex=g%3D%5Cbegin%7Bbmatrix%7D+%26%5Cfrac%7B1%7D%7B9%7D+%26%5Cfrac%7B1%7D%7B9%7D+%26%5Cfrac%7B1%7D%7B9%7D%5C%5C+%26%5Cfrac%7B1%7D%7B9%7D+%26%5Cfrac%7B1%7D%7B9%7D+%26%5Cfrac%7B1%7D%7B9%7D+%5C%5C+%26%5Cfrac%7B1%7D%7B9%7D+%26%5Cfrac%7B1%7D%7B9%7D+%26%5Cfrac%7B1%7D%7B9%7D+%5Cend%7Bbmatrix%7D)\n\n而如下图像处理矩阵将使得像素值变化明显的地方更为明显，强化边缘，而变化平缓的地方没有影响，达到提取边缘的目的：\n\n![](https://www.zhihu.com/equation?tex=g%3D%5Cbegin%7Bbmatrix%7D+%26-1+%26-1+%26-1%5C%5C+%26-1+%269+%26-1+%5C%5C+%26-1+%26-1+%26-1+%5Cend%7Bbmatrix%7D)\n\n而高斯模糊，实质上就是使用高斯公式计算像素及周围像素在一次计算中的权值：\n\n![](assets/卷积__Image_1.png)\n\n![](assets/卷积__Image_2.png)\n\n那么，理解了卷积的概念，知道卷积在图像处理当中如何应用之后，随后遇到相应的图像处理问题时，只需明确使用的处理矩阵即可。\n\n## 卷积\n\n图像处理中认为，灰度值变化剧烈的地方就是边缘。\n\nsobel算子的原理，对传进来的图像像素做卷积，卷积的实质是在求梯度值，或者说给了一个加权平均。 然后对生成的新像素灰度值做阈值运算，以此来确定边缘信息。\n\n若Gx是对原图x方向上的卷积，Gy是对原图y方向上的卷积；\n\n![](assets/卷积__Image_3.png)\n\n![](assets/卷积__Image_4.png)\n\n得到像素点新的像素值之后，给定一个阈值就可以得到sobel算子计算出的图像边缘了。\n\n通常，为了消除噪声对sobel算子的影响，会增加一个预处理的操作，主要是做[平滑处理](http://baike.baidu.com/link?url=g06r_35hjXs9yBc5l2j2FqPXhV-mxISdob7mLLFp2ouoybihhZLX966czvtISMrf9mLgIA9N7-1i7oX1MN9QYIjX3oGbzVKWzuHXLddaOdsQw0wb1P6hBXTXV3vHUQWJ)降低噪声的影响。\n\n<https://www.cnblogs.com/sophia-hxw/p/6088035.html>\n\n<https://www.zhihu.com/question/22298352/answer/637156871>\n"
}
