EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的卷积运算
4 }" Z0 B1 `6 W" O0 h& ^* a8 L
- N4 w9 C: r- `( KImfilter:线性空间滤波 conv2:二位卷积 conv2(a,b,same):将b作为模版在a上平移,最后的矩阵大小与a相同 例如:a =
# u' d9 q2 j/ @ p& T% e9 k4 f+ p6 w# J
9 Z& F5 Z8 d+ J% t* a
1 2 3
, A2 B( y! A/ R5 | T* P/ i 4 5 62 E% v1 k! p W8 \! X; K2 h
7 8 9 b =' D% z% M: p' o% K1 i6 N
4 m- p8 E6 H# u6 p: [2 e; R* n$ T) {) ~6 C0 y' C
1 1 1. O8 v) ?6 J# ~% ~, z$ n
1 1 1
# ~/ z8 c/ K \3 _3 l 1 1 1 conv2(a,b,'same’)= 12 21 16
$ f" P% S* b- T0 A% N; m 27 45 33
9 I/ D2 i+ x2 o 24 39 28 这个是将b的模版中心位置置于a矩阵上,并且外圈补0. conv2(a,b,'full’)= 1 3 6 5 3 i- @) ?% j5 z* g5 T
5 12 21 16 9/ N2 n9 u' A. O2 s- X
12 27 45 33 18
; `3 K$ C, @8 R. P& Q2 ^ 11 24 39 28 15% c1 S6 [0 N1 U4 O
7 15 24 17 9 如果是full的话,总将b的最右下角元素至于a矩阵的第一个元素作为模版,然后开始平移模版,外圈补0 卷积的计算步骤:; p, L8 j# \3 R2 q" [& A4 c
(1) 卷积核绕自己的核心元素顺时针旋转180度(这个千万不要忘了) _3 [, M& s1 n
(2) 移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
6 e A0 N& U- ^ ~9 T/ Z3 \6 L(3) 在旋转后的卷积核中,将输入图像的像素值作为权重相乘6 Q: ~. `& L" i8 v" S( ^6 Y
(4) 第三步各结果的和做为该输入像素对应的输出像素 $ a2 C/ f# n- i. i' n
请看用水平和垂直差分算子对矩阵处理后的结果,然后细细体会 a = . n5 p! @- T3 A; ?
2 1 3 1
. t! Z# R( M' I! u) c 1 2 1 28 O! s( V8 h$ F4 l: U
2 1 3 2
* p+ m% t( J0 m" C q/ R 1 3 1 2% ^& k& T& K9 [0 }7 `' B
b =
4 [1 z( F W! t4 Z# T" I -1 -1 -1
" K7 Z0 ?9 W+ ]/ I- s% N 0 0 0 L3 S! ^5 M: X
1 1 1) [8 g8 b2 ]8 V
e =
" F( V# Q! \2 e -1 0 1
9 t. {; H6 e g B" q -1 0 1- [. }* ?! V) E2 s$ b
-1 0 1& |7 G8 h/ H: s Z4 c/ Z' Q
conv2(a,b,'same')
3 W3 b; c. ^ w/ Z; s1 A2 rc = # k3 _- t1 {& _6 `
-3 -4 -5 -3
( [' n" H0 Z ~" S' Y 0 0 -1 -11 H# O8 i% z2 U/ M
-1 -1 -1 0/ _3 |9 u1 @+ x, j. j
3 6 6 5. d% k6 h- H7 H9 V
conv2(a,e,'same')
: E0 s: \/ C. E4 [5 Od = 2 Z i. ?$ x' z9 L4 e
-3 -1 0 4
4 u9 ?; u" E5 s8 r" a) b -4 -2 -1 7
8 q7 b' I y! T/ ~. o& f; v -6 -1 0 5
% r* V/ q& T# z! e6 S -4 -1 0 4 3 H" ?- Z% T: e* m6 Q2 Z) b: r
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
+ y; D+ [% ]9 l4 n, ?- ]
: R* W1 h! n* ?: y9 @ |