找回密码
 注册
关于网站域名变更的通知
查看: 657|回复: 1
打印 上一主题 下一主题

MATLAB中的卷积运算

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-13 08:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
MATLAB中的卷积运算
9 w2 J/ u% Z5 \, H* U: U% W
7 [1 ]1 `  Q- A2 {7 F& [6 B

Imfilter:线性空间滤波

conv2:二位卷积

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

例如:a =
# c; F. I" {- N8 f7 l0 Q3 [% @- ?7 \& T% h  t

* P, O8 J8 T( ~; m: X" G$ G$ L0 T     1     2     3
* W2 l. L4 J3 Z2 V; E) x     4     5     6& n0 l3 B3 W: [, E' ?9 O' i4 f
     7     8     9

b =* k* |$ _0 h; b

/ G! T5 g  E; Y8 ^( H  G
' o) X$ n7 K3 r1 j$ v: N     1     1     1
8 R+ Q( B# B( }  j     1     1     1" ]: O6 `, Q% K9 }
     1     1     1

conv2(a,b,'same’)=

    12    21    16, d- ]8 R) L7 ]1 ~9 k* W
    27    45    33, v/ Z" G- j. F% M& B( |- Q
    24    39    28

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

conv2(a,b,'full’)=

     1     3     6     5     3
  [; g* ~* v2 g+ g% {     5    12    21    16     9
8 K$ G2 A' n) P% z. w# j1 P    12    27    45    33    18, D% [' v; `5 G0 n
    11    24    39    28    15
, c- B+ \/ S  k     7    15    24    17     9

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

卷积的计算步骤:
9 V  t# V  [2 c) c9 p& W; N(1)    卷积核绕自己的核心元素顺时针旋转180度(这个千万不要忘了)
$ ]/ B" n5 m9 c) _4 C(2)    移动卷积核的中心元素,使它位于输入图像待处理像素的正上方
1 J$ D( C, ?' l9 q(3)    在旋转后的卷积核中,将输入图像的像素值作为权重相乘0 ^" X4 i# z& |4 ~, [: \
(4)    第三步各结果的和做为该输入像素对应的输出像素

* E8 \0 d( L- h

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

a =
: x0 h0 n% ?# Y% G! v) Y/ T! `3 {     2     1     3     1
- D+ n& z% s% W     1     2     1     2
7 i( G; o, U; n8 ~; ~# a/ h) z     2     1     3     2
; ]% a, o5 m: Y6 J+ @! H     1     3     1     2
; m% r+ e! S7 j! e2 \/ G( z  y) eb =
, h: f/ r6 z% N* [9 `  l6 t$ I    -1    -1    -1
! e. [" C2 l1 Y+ o% ~+ |5 E     0     0     0
, Q( u0 n% C& T( `: a- s: r     1     1     1* G" s5 z9 u8 f3 u" V
e =
$ @0 c. z: G7 M, E9 m+ ?; H1 Z    -1     0     1% U$ \6 A- X0 }3 z8 M
    -1     0     1' v$ E- h$ j$ N* V  L: {
    -1     0     1
3 _( `( v& m3 x2 tconv2(a,b,'same')# ], _1 |! v% m" d6 t
c =
+ c" l- z9 p7 Z6 e: k% Y# a    -3    -4    -5    -36 H/ p7 L" e, V7 d& P
     0     0    -1    -1
! ?/ }: T! C1 ~" o. ?8 Z4 D    -1    -1    -1     0
& q" x& B, ]3 t; P% q6 u7 C     3     6     6     5
; }( t0 x, A, N3 rconv2(a,e,'same'); F/ b. j3 N& r1 `1 L/ [
d =
( H& p& B3 ^/ f* h) `6 V0 H    -3    -1     0     4% P2 o% X3 V$ q: z8 z
    -4    -2    -1     7; o9 o- a, N! w4 ?; g/ y: |
    -6    -1     0     5
, _8 U5 y0 `. \0 I; u* ?# l    -4    -1     0     4


* t0 q' y* r8 Q& n/ d2 ^* U! c
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
0 k8 e1 q0 B% R: s7 V. N
, g3 H5 b8 ^7 _! _1 x* [

该用户从未签到

2#
发表于 2019-1-14 14:11 | 只看该作者
学习了 谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-21 18:55 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表