EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
MATLAB中的卷积运算
! K: y* @/ V6 U. \
% i0 N( @* I3 }( Y; CImfilter:线性空间滤波 conv2:二位卷积 conv2(a,b,same):将b作为模版在a上平移,最后的矩阵大小与a相同 例如:a =4 i, K& P# @. b5 b
M) l/ @0 B' l- A/ X5 R0 X. F) Z) W6 b. o7 O9 o
1 2 3
# h0 ]" Q9 c/ Z$ X- }2 J 4 5 6/ v1 s3 Z$ V- S
7 8 9 b =
$ ]9 h1 {4 _$ T: R6 _& |- y# [$ U. I7 y9 L: \' V
' B8 x- ]' r @) z5 I6 u 1 1 1
- o, i) Y2 i. B) Y 1 1 1. X$ Y7 p' S7 z/ e; B- f! u
1 1 1 conv2(a,b,'same’)= 12 21 16
/ Z+ V! b; p( `7 X f" T5 F 27 45 33
+ F, L5 ~0 C* w; ~, h, H! P1 G) r+ _ 24 39 28 这个是将b的模版中心位置置于a矩阵上,并且外圈补0. conv2(a,b,'full’)= 1 3 6 5 3
6 o/ P8 c: J% n3 D: m$ l5 h 5 12 21 16 9/ A: [4 w$ w' L0 O
12 27 45 33 18
0 f( l3 y% d2 q8 ]; v 11 24 39 28 15
/ W6 n- C* d: h% ?, z6 t 7 15 24 17 9 如果是full的话,总将b的最右下角元素至于a矩阵的第一个元素作为模版,然后开始平移模版,外圈补0 卷积的计算步骤:3 m1 s" h, }- K" {, Q. H& K& L! }/ H1 }
(1) 卷积核绕自己的核心元素顺时针旋转180度(这个千万不要忘了)" z' \' |' X7 {/ a; ^/ T0 y" V
(2) 移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
8 f s" O7 U, g- X* b% |, }( T4 V(3) 在旋转后的卷积核中,将输入图像的像素值作为权重相乘! k. P% @* k. L, i+ B9 ~) V7 e# Z6 s
(4) 第三步各结果的和做为该输入像素对应的输出像素 % j9 F9 d! {9 [2 _2 q
请看用水平和垂直差分算子对矩阵处理后的结果,然后细细体会 a = 0 u* ]& f; _8 D% D/ @ V5 J
2 1 3 1' X) @2 v9 G1 h
1 2 1 2; a& s6 h4 h% j+ [0 g' h
2 1 3 2
9 o! q$ ~* b; N u0 Y0 U# s& \ 1 3 1 22 E% Z4 ]8 X4 _5 k6 ^4 h3 k
b = 1 ~( W+ @ d+ n4 b
-1 -1 -1
' d% {- c* P* A' y 0 0 0% |* ~$ C5 N; r6 w, q! g# t/ c, Z
1 1 13 v3 }- [, r9 z( n2 k
e =
' b! b5 F! h: F9 U& P& ~1 v -1 0 1
: C2 S, E4 E/ B9 T) r8 l -1 0 1
4 l0 @7 Y. A B; ]* } -1 0 1& C! b/ C* ^6 ?& Y9 s- Z
conv2(a,b,'same')4 X. l& [9 a, Q7 M3 q1 h
c =
! l D# n, A8 b4 e -3 -4 -5 -3+ P& v3 s$ n" G3 F& m8 t
0 0 -1 -18 x$ r0 E3 a$ H. ~! D( X9 P) W; L
-1 -1 -1 0
% b: Q& `! Z0 L2 |+ L: I# h% g 3 6 6 5
& l+ M& d0 n# tconv2(a,e,'same')
J$ b" Q) M6 n5 W9 Zd = 4 q3 R6 y% Y; y- S9 I
-3 -1 0 4
* F# t4 G* y. i1 t- t -4 -2 -1 7
' ^+ F2 h7 a9 ?& H2 n -6 -1 0 5
) u, z7 {; u0 C* q, I9 ~/ n8 e -4 -1 0 4
6 o5 \7 A6 z' P' m4 \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
' Q3 ~1 C' Y" o* m; S3 Q' @5 x
W$ | j4 p; z' l |