zoukankan      html  css  js  c++  java
  • 图像处理中的valid卷积与same卷积

    valid卷积

    在full卷积的卷积过程中,会遇到(K_{flip})靠近I的边界(K矩阵与I矩阵),就会有部分延申到I之外,这时候忽略边界,只考虑I完全覆盖(K_{flip})内的值情况,这个的过程就是valid卷积。一个高为H1,宽为W1的矩阵I与高为H2,宽为W2的矩阵K,在H1大于等于H2,W1大于等于W2的情况下,valid卷积的结果就是一个(H1-H2+1)*(W-W+1)的矩阵(C_{valid})

    [C_{valid}与C_{full}的对应关系为: C_{valid} = C_{full}( Rect (W_{2}-1,H_{2}-1,W_{1}-W_{2}+1,H_{1}-H_{2}+1) ) ]

    same卷积

    无论是full卷积还是valid卷积都不会得到正好的尺寸,要么比原尺寸大要么比原尺寸小,这时就需要same卷积来解决这个问题。若想得到宽和高都正好的矩阵我们首先需要给(K_{flip})一个锚点,将锚点放在(循环)图像矩阵的(r,c)处,((r,c)在矩阵之内),将对应位置的元素逐个相乘,最终将所有的积进行求和作为输出图像矩阵在(r,c)处的输出值。这个过程称为same卷积。
    OpenCv函数copyMakeBorder的参数表

    参数 解释
    src 输入矩阵
    dst 输出矩阵
    top 上侧扩充的行数
    bottom 下侧扩充的行数
    left 左侧扩充的行数
    right 右侧扩充的行数
    borderType 边界扩充的类型
    value border Type= BORDER_CONSTANT事的常数

    其中borderType有多种类型,比如:BORDER_REPLICATE(边界复制)、BORDER_CONSTANT(常数扩充)、BORDER_REFLECT(反射扩充)等。
    在使用Python进行卷积操作时用到包Scipy,其中有关的操作函数为convolve2d(in1,in2,mode='full',boundary='fill',fillvalue=0)

    参数 解释
    in1 输入数组
    in2 输入数组,代表K(卷积算子)
    mode 卷积类型,也就是以上提到的三种类型:full,valid,same
    boundary 边界填充:fillwrapsymm
    fillvalue 当boundary='fill'时,设置边界填充的值,默认为0

    在这里需要注意的是当model为same时卷积算子的锚点位置由不同尺寸而不同,假设K(卷积算子)的宽和高分别为W、H。

    W和H的值 锚点位置
    均为奇数 默认为中心点
    H为偶数、W为奇数 (H-1,(W-1)/2)
    H为奇数,W为偶数 ((H-1)/2,W-1)
    均为偶数 (H-1,W-1)

    代码实现:

    import numpy as np
    from scipy import signal
    
    if __name__ == "__main__":
    
        I = np.array([[1,2],[3,4],np.float32])
        #I的高和宽
        H1,W1 = I.shape[:2]
        #卷积算子
        k = np.array([[-1,-2],[2,1],np.float32])
        #K的宽和高
        H2,W2 = k.shape[:2]
        #计算full卷积
        c_full = signal.convolve2d(I,k,mode='full')
        #设定锚点
        r,c = 0,0
        #根据锚点来从full卷积中截取same卷积
        c_same= c_full[H2-r-1:H1-r-1,W2-c-1:W1+W2-c-1]
    
  • 相关阅读:
    交叉排序
    交叉排序
    数据结构实验之串三:KMP应用
    数据结构实验之串三:KMP应用
    数据结构实验之串一:KMP简单应用
    数据结构实验之串一:KMP简单应用
    走迷宫
    走迷宫
    走迷宫
    走迷宫
  • 原文地址:https://www.cnblogs.com/supershuai/p/13169917.html
Copyright © 2011-2022 走看看