EDA365电子论坛网

标题: matlab中的conv2、filter2、imfilter有哪些区别 [打印本页]

作者: dapmood    时间: 2020-7-20 13:40
标题: matlab中的conv2、filter2、imfilter有哪些区别
-------------------------------------conv2函数----------------------------------------7 N  n% U* a* I8 }5 A' a
1、用法8 j6 }5 `) B0 ]7 ~7 e
. {, _, }0 F# H, @( p. i- Z5 {
, r1 v) ?. I! R4 z/ P/ k" Z% f
A:输入图像,B:卷积核
! `6 ]6 Y! u. Z" J( w5 `1 t$ d       假设输入图像A大小为ma x na,卷积核B大小为mb x nb,则
( N  b1 n' _- [& B6 S9 ]/ Q       当shape=full时,返回全部二维卷积结果,即返回C的大小为(ma+mb-1)x(na+nb-1)( a0 k5 i5 z4 R& S# n& ]7 N( b( w
      shape=same时,返回与A同样大小的卷积中心部分
  h3 S/ n' o% R9 ^3 _  n4 d! Y! v       shape=valid时,不考虑边界补零,即只要有边界补出的零参与运算的都舍去,返回C的大小为(ma-mb+1)x(na-nb+1)
( M8 _3 v& D! L, T9 p+ {4 d9 f8 g. |" B6 X# o# c

1 h9 E' C$ t, C$ W2、实现步骤! @. V1 y6 i8 l4 E# V
    假设输入图像A大小为ma x na,卷积核大小为mb x nb,则MATLAB的conv2函数实现流程如下:( L, J( H: s# U% m
        a、对输入图像补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意conv2不支持其他的边界补充选项,函数内部对输入总是补零)。) C' X" g' \( f2 X3 N9 C
        b、关于卷积核的中心,旋转卷积核180度。
$ R) F6 e8 O% c1 c& ]        c、滑动卷积核,将卷积核的中心位于图像矩阵的每一个元素。
5 ~1 ^- o, |5 }. H4 F4 p. O6 m2 S        d、将旋转后的卷积核乘以对应的矩阵元素再求和。6 _5 u2 q* o" \: U. m8 I8 m8 V  y6 D- M
3 C' v$ O' u& _0 i. T/ j# h9 s
3、实现过程展示
; h; i) f' t" x/ J* ]% i     假设有图像A=[4 3 1 2;0 1 1 3;5 2 0 0],卷积核B=[1 2 3;0 -1 2;1 1 0]8 a" b! X( w- F. P5 w4 S5 y2 P
         a、首先是按照上面的步骤进行补零,如下图外圈红色的为补出的零1 P, ^; Z. b2 t8 n) s8 `% h) q) i) P+ b

- n, b  Z: y( d3 E1 s, i  U

         


( Q$ E/ R# j( w3 l8 ]
1 ~& U4 X2 k9 Y
         b、将卷积核旋转180度, L2 t# |. U& `  ~1 U+ s
                     
& n3 t2 W  z) k) e2 Z% {$ D         c、将旋转后的核在A上进行滑动,然后对应位置相乘,最后相加,下面分别是shape=full,same,valid时取输出图像大小的情况,位置1表示输出图像的值从当前核的计算值开始(对应输出图像左上角),位置2表示到该位置结束(对应输出图像右下)
$ B9 Z! J. ]0 }$ ?% n0 {" p                             / D6 m: R7 C$ ~  }

* o" i$ w" L* P0 d4 r5 i9 o4 O9 y; T- X  @0 y1 Q8 N% |
-------------------------------------filter2函数----------------------------------------/ c3 N8 n( O' Z! X
1、用法
; U' U5 G$ U, ~) Q4 f0 J7 p& B; J- @+ L7 n8 P2 _
) h2 f( ?9 }5 Z
A:输入图像,h:相关核( o5 p" O2 T8 v# I* y) d- S
       假设输入图像A大小为ma x na,相关核h大小为mb x nb,则, `& b0 q' M$ Z$ C3 c+ r
       当shape=full时,返回全部二维卷积结果,即返回B的大小为(ma+mb-1)x(na+nb-1)
7 W7 H9 F9 z0 T! O( s4 @      shape=same时,返回与A同样大小的卷积中心部分
0 I/ Z3 O: W% f: n       shape=valid时,不考虑边界补零,即只要有边界补出的零参与运算的都舍去,返回B的大小为(ma-mb+1)x(na-nb+1)9 x; V( Z4 b- h  R' [; k

# B0 b' [; x$ x5 d7 A5 V2、实现步骤# z) b; w* E7 o! N. S
        假设输入图像A大小为ma x na,相关核h大小为mb x nb,MATLAB的filter2的实现流程如下:
           a、对输入图像补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意filter2不支持其他的边界补充选项,函数内部对输入总是补零)。
           b、滑动相关核,将相关核的中心位于图像矩阵的每一个元素。
           c、将相关核乘以对应的矩阵元素再求和
                   注意filter2不对核进行180°旋转,直接对应相乘再相加,这一点与filter2不同,下面有两者计算结果对比可看出这一点。
, ^! @& p( T: S2 q: s2 z% {2 x
3、conv2(卷积滤波)和filter2(相关滤波)的结果比较7 l' U" U- Y( Y+ c) [- F" i) D
        A=[4   3   1   2;0   1   1   3;5   2   0   0],卷积核B=[1    2    3;0   -1   2;1    1   0]
9 F4 Z4 |: y+ U3 y3 J                                                
3 v1 ~  M9 G0 d$ ~0 T                                conv2,shape=full                                                                filter2,shape=full
5 J" W( ]+ B- @; h3 F5 i) H1 L

2 C$ [1 Q7 Z3 E7 D4 \& z% q% q0 h0 \( d- ^( C6 @
-------------------------------------imfilter----------------------------------------1 D, q; U% |2 m
1、用法6 h9 ?3 t& C' @8 `
. D* A, N. s/ [9 I3 X
! G9 b& t. K  s7 m
A:输入图像,H:滤波核' z) V: p, O& z3 N3 Q
       option1:边界选项,可选的有:补充固定的值X(默认都补零),symmetric,replicate,circular
8 `* z. U% S! ]9 h6 U1 i* Q% ]       option2:输出图像大小选项,可选的有same(默认),full
. s/ X2 ?! {' l       option3:决定采用与filter2相同的相关滤波还是与conv2相同的卷积滤波5 w$ C1 O) C& B2 W$ B+ \1 P6 u
5 N! \% x" \. y. A! r

( `3 {, R5 Z* ?5 z. N
: V6 E5 e& R# c-------------------------------------最后总结----------------------------------------9 p& r! X' v; z7 W
1、  filter2、conv2将输入转换为double类型,输出也是double的,输入总是补零(zero padded), 不支持其他的边界补充选项。
2、  imfilter:不将输入转换为double,输出只与输入同类型,有灵活的边界补充选项。

/ I. S4 p5 u+ Y8 S" C/ l6 i# d$ [; q0 f6 O, K1 f! W( x
% C& i3 b: a2 ]5 p8 x5 |3 e
$ a7 y5 `- G. U$ s: H* }

作者: regngfpcb    时间: 2020-7-20 14:33
matlab中的conv2、filter2、imfilter的区别




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