一维卷积核
假设沿水平方向卷积核kernel_x=
沿垂直方向卷积核kernel_y=
二维卷积核
用kernel_x和kernel_y可以生成3*3的二维卷积核kernel=
图像卷积
假设图像src灰度
下面已求解中间像素点灰度(即灰度为5的点)为例
二维卷积核卷积
dst=1*1/16+2*1/8+3*1/16+4*1/8+5*1/4+6*1/8+7*1/16+8*1/8+9*1/16=5
一维卷积核两个方向分别卷积
假设先卷x方向,对每一行卷积:
1*1/4+2*1/2+3*1/4=2
4*1/4+5*1/2+6*1/4=5
7*1/4+8*1/2+9*1/4=8
再对y方向卷积:
dst=2*1/4+5*1/2+8*1/4=5
结果和二维卷积核结果一样。
复杂度分析
二维卷积复杂度
由以上计算过程分析,共用了18次乘法,8次加法。(创建二维卷积核需要用到9次乘法)
一维卷积复杂度
水平方向卷积用了9次乘法,6次加法。垂直方向用了3次乘法,2次加法。
总共用了12次乘法,8次加法。
从以上分析不难得出用一维卷积分别对水平和垂直方向做运算比用二维卷积核卷积运算的复杂度低。故用卷积可分离性能简化图像运算(尤其是卷积核比较大的时候)
如有错误请指正,欢迎讨论!
.
.
.
.
.
.
<<底层小猴的成长日记>>