EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的卷积运算
, I% l# w6 I6 N; P2 ^/ x) v0 J9 e! C" x
Imfilter:线性空间滤波 conv2:二位卷积 conv2(a,b,same):将b作为模版在a上平移,最后的矩阵大小与a相同 例如:a =) L5 y% D2 s$ A8 E
& m! r+ r: _( w* x5 v2 M! N5 l1 a" O
2 G8 ^, x. d" j6 ^ 1 2 3! B0 X9 H9 N$ x. r1 e3 @
4 5 6+ P. A9 k( D5 D/ \& `! h
7 8 9 b =/ b7 r5 Q) F. X" D. }
2 J+ ^' i1 H. j. G) ^! v5 L; o! s8 O0 k
1 1 1! r# V6 K& S S
1 1 1
: w' }5 i* e0 l6 _ 1 1 1 conv2(a,b,'same’)= 12 21 16
- p3 x% P3 z: V* z1 `0 J 27 45 337 X- D1 E6 O B
24 39 28 这个是将b的模版中心位置置于a矩阵上,并且外圈补0. conv2(a,b,'full’)= 1 3 6 5 36 N- z( _, h; |- H0 x
5 12 21 16 97 z5 @% w9 S* k- O
12 27 45 33 18
) p$ ]: u3 M, v 11 24 39 28 15& j1 Q& }! C, p2 V1 s" w
7 15 24 17 9 如果是full的话,总将b的最右下角元素至于a矩阵的第一个元素作为模版,然后开始平移模版,外圈补0 卷积的计算步骤:4 g* |( t: T6 e1 u2 b" ~6 \
(1) 卷积核绕自己的核心元素顺时针旋转180度(这个千万不要忘了)7 }' d& Q6 @# K: ?* O
(2) 移动卷积核的中心元素,使它位于输入图像待处理像素的正上方; ?+ ~$ P0 ~1 N+ H! k0 \
(3) 在旋转后的卷积核中,将输入图像的像素值作为权重相乘
5 w4 W# \8 S2 ^5 y3 Q9 b& g0 }( y2 \(4) 第三步各结果的和做为该输入像素对应的输出像素 . [" J8 O: B0 Y* z: m
请看用水平和垂直差分算子对矩阵处理后的结果,然后细细体会 a =
5 Y9 ?: x+ L0 v/ l 2 1 3 17 c+ Y6 n u6 Z1 K9 E
1 2 1 2% K$ b2 s7 v7 k( `# v
2 1 3 2
: @$ S- b0 W+ ~( ^9 H0 X 1 3 1 2' {8 V4 G7 @, c! [% N+ Q' X8 ^7 t3 E$ n
b = ; l% O. L; s! f9 S( _
-1 -1 -1
# @) c: E+ Z6 ]$ n% @3 ]& J0 K6 Y. i 0 0 0' {* G: u# ]5 n
1 1 1
2 U" K! }( p6 ne =
* l1 K/ d) C' A2 W! _" s -1 0 1
! Z, h& N4 E! q9 g! p -1 0 1
; @6 f& C# U* @. U W& e& K -1 0 1! ^' A$ p8 y" {1 C3 C
conv2(a,b,'same')
3 ]( e- u+ {6 T( B* R, mc = : V5 C: z. ]6 C9 u
-3 -4 -5 -35 i, x ~; G! D7 W9 u7 q' j
0 0 -1 -1
+ S1 f- ?, m+ Z7 g -1 -1 -1 0
- D9 [$ x. r0 U1 `- u( q 3 6 6 5
! u1 \1 U/ S2 F3 z6 {conv2(a,e,'same')' F$ q0 ~7 s8 x h- H
d = . x& ?, q$ d P
-3 -1 0 48 G8 [+ T! b- J
-4 -2 -1 7
# ~9 c/ R5 d/ w: b# N" B' d' R -6 -1 0 5( J) a; r M& w( T u
-4 -1 0 4 3 O& n6 ]2 P) n
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 R; N) z" P0 J6 ~' X! z( {
9 S# k! O: Z% ?+ }' U' ~# G0 ] |