卷积算子计算方法(卷积运算)

Python,算法 2018-01-26

  卷积操作是对图像处理时,经常用到的一种操作。它具有增强原信号特征,并且能降低噪音的作用。那么具体是如何计算的呢?

  • 待处理图像数据(5x5):       卷积核:

    A = [[17, 24, 1, 8, 15],          H = [[8, 1, 6],
         [23, 5, 7, 14, 16],               [3, 5, 7],
         [4, 6, 13, 20, 22],               [4, 9, 2]]
         [10, 12, 19, 21, 3],
         [11, 18, 25, 2, 9]]
  • 计算步骤:

    • 将算子围绕中心旋转180度

      H =  [[2, 9, 4],
            [7, 5, 3],
            [6, 1, 8]]
    • 滑动算子,使其中心位于输入图像g的(i,j)像素上

  

  • (图片版权属于vdumoulin@github)

    • 利用公式求和,得到输出图像的(i,j)像素值

      (2,4)元素值 = (1x2 + 8x9 + 15x4) + (7x7 + 14x5 + 16x3) + (13x6 + 20x1 + 22x8) = 575
    • 重复2),3),直到求出输出图像的所有像素值
  • 程序代码(python):

    # -*- coding: utf-8 -*-
    # @Time    : 2018/1/26
    # @Author  : guangling_lin
    # @Email   : guangling_lin@aliyun.com
    # @File    : convolve.py
    
    import numpy as np
    import scipy.signal
    
    A = np.array([[17, 24, 1, 8, 15], 
                  [23, 5, 7, 14, 16], 
                  [4, 6, 13, 20, 22], 
                  [10, 12, 19, 21, 3], 
                  [11, 18, 25, 2, 9]])
    H = np.array([[8, 1, 6], 
                  [3, 5, 7], 
                  [4, 9, 2]])
    
    print(scipy.signal.convolve(A, H))
  • 测试结果:

    [[136 209 134 209 134  63  90]
     [235 220 441 346 276 231 201]
     [169 431 595 410 575 471 274]
     [184 371 440 555 620 551 204]
     [134 301 585 600 765 421 119]
     [ 73 247 446 536 451 128  69]
     [ 44 171 284 269 104  85  18]]

每一个成功的背后都有无数个无人知晓的黑夜。

因为

夜晚,是超越对手的最佳时机。

===================== 码农1024 =====================#蔺光岭#


本文由 蔺光岭 创作,采用 知识共享署名 4.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论