EDA365电子论坛网

标题: MATLAB中的卷积运算 [打印本页]

作者: wu68aq    时间: 2019-1-13 08:00
标题: MATLAB中的卷积运算
MATLAB中的卷积运算
5 G" L( a  z( [! r
) r: h, e" ^) W

Imfilter:线性空间滤波

conv2:二位卷积

conv2(a,b,same):将b作为模版在a上平移,最后的矩阵大小与a相同

例如:a =
+ G: P  ]- W6 I7 d/ E" U6 m0 U$ D. U( D  \: z* N* h

- W6 s2 K4 [& W/ V7 @: t     1     2     3
  A- w! N! [% C% k     4     5     66 S( _; c9 r- \% f7 L5 h" {9 \% y; h
     7     8     9

b =, [3 n% a7 l) N" f1 y, @& l

+ {3 C& D# R8 Q/ ^
) g) D- d( q" E# k7 w4 [     1     1     1. `8 r" S- d% e" I% S' \
     1     1     1
  E% ?$ C& n% A% x+ G* l0 e5 O     1     1     1

conv2(a,b,'same’)=

    12    21    16
; ?% S4 y' |( K    27    45    33
: ^' p/ y6 q1 ^3 R    24    39    28

这个是将b的模版中心位置置于a矩阵上,并且外圈补0.

conv2(a,b,'full’)=

     1     3     6     5     3
5 w' Y0 E  {3 A9 K5 D9 y, Y     5    12    21    16     9# l4 p3 p) _9 t0 }2 y
    12    27    45    33    18
4 ?# i7 {" m- A! M3 x) t0 _    11    24    39    28    15! Q3 A- o7 L& |7 y. D
     7    15    24    17     9

如果是full的话,总将b的最右下角元素至于a矩阵的第一个元素作为模版,然后开始平移模版,外圈补0

卷积的计算步骤:
3 N" J; o, F8 F1 x3 I(1)    卷积核绕自己的核心元素顺时针旋转180度(这个千万不要忘了)
5 q2 i% _/ W7 k+ j* ^7 F(2)    移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
( G6 r0 O. p( Z0 W0 |2 F9 M(3)    在旋转后的卷积核中,将输入图像的像素值作为权重相乘9 l! u) G$ d$ e
(4)    第三步各结果的和做为该输入像素对应的输出像素

0 ^+ Z( L3 T7 Y. R) f5 ~( T' U

请看用水平和垂直差分算子对矩阵处理后的结果,然后细细体会

a = ( F/ @( }& C0 Y; A8 f9 v
     2     1     3     1
4 D9 ]; Z) `, Q! m3 I7 y6 i     1     2     1     2
! B1 h( s8 J- i, @     2     1     3     24 u& k) @' e7 J6 m
     1     3     1     2
+ ?9 F( d# f1 A& C( d+ l- ~% l& hb =
7 Y# d# q& k9 j# b    -1    -1    -1$ U! ~6 c7 }, L2 D; F' V: R
     0     0     0
* @0 B7 d5 R+ _9 m' P' U/ {     1     1     1, z8 H8 G' _5 M$ l) h" U
e = " \: [" a1 I- ~0 T) D
    -1     0     1
; C; [) u+ y6 C9 @. s! r    -1     0     1
' _% Q$ D5 t) V9 O/ E2 W    -1     0     1) g$ Y* J& I, y' l2 \- ]! F
conv2(a,b,'same')
, x4 f* O0 ?* [2 A& p, ^" ^, Rc = 6 z4 {8 |  M" r) x
    -3    -4    -5    -3( p" z, a3 U6 ^8 k
     0     0    -1    -1) Z5 d; A' N" A% G- H. a& U  w0 R% t: L
    -1    -1    -1     0
& o8 Y- C( B+ X* o: p     3     6     6     52 ~6 f* S5 @7 y" O: q0 M
conv2(a,e,'same'): v9 T6 _! X4 i2 W* Z
d =
+ g6 B# v* \) l; k    -3    -1     0     4
: \2 Y- B: B$ m/ R% }  h4 ?    -4    -2    -1     7# s; {$ p& f3 n$ u
    -6    -1     0     5
5 j0 H. c3 X3 d* b3 D    -4    -1     0     4


; ^& h: h/ B9 P! N) p# d- L" s
C = conv2(A,B)返回矩阵A和B的二维卷积C。若A为ma×na的矩阵,B为mb×nb的矩阵,则C的大小为(ma mb 1)×(na nb 1)。 %在full情况下
imfilter与conv2区别在于没有将b首先180°转置,Imfilter(A,B,'replicate'),对于边界外圈复制边界值,而conv2的边界值为0
4 j9 M+ n- T& }5 c9 g6 w+ p
* V/ p+ P" E4 R' |1 T

作者: Demyar    时间: 2019-1-14 14:11
学习了 谢谢楼主




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2