QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4368|回复: 0
打印 上一主题 下一主题

[参考文献] 图像的加噪与去噪(python)

[复制链接]
字体大小: 正常 放大
杨利霞        

5273

主题

82

听众

17万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2020-4-28 15:43 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    & j) ^& t3 u* c" x+ O" P图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。; L/ q0 A7 J" R, B
    ; |' x5 d9 }9 l5 e" @
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置3 d! E% K' @2 Z* A) V' g# S$ x6 g8 x
    import cv2 as cv        #导入openCV库& Z/ d9 X) l( h0 N4 _9 Z& F
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    2 u$ ~0 ]% p* E9 T! U% I! y6 S                        #必须首先安装numpy,scipy,matplotlib
    1 I& V+ n( q' b9 [% Eimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    8 f% Z: N8 [/ ~5 u0 N5 m
    * y4 \0 ]; p# m
    " d5 }3 f" o7 e5 Edef boxBlur(img):
    ; ~  Y; S* R4 C8 s1 g1 ~    # 使用5x5的滤波核进行平滑/ V; \6 l3 ]/ s( Y5 l/ s
        blur = cv.boxFilter(img,-1,(5, 5))    + }- p0 y8 x! `+ G- F
        return blur
    8 E( C! Y( [, r! S
    0 m2 Z: V: n' }3 A6 O3 O9 o( E2 I8 D& K$ S
    def gaussianBlur(img):
    ( c2 E1 N3 ]7 L3 B% L    #     使用高斯核进行平滑
    " t: b+ T1 H% Y; s& P4 v* w    blur = cv.GaussianBlur(img,(5, 5),1.5)
    3 V( G; P6 z: c: i, T1 r  `    return blur
    * d2 Q+ ~" y' X0 H/ n, e/ D1 c& ^9 w- r8 [; n& z

    + a( u8 ]  }8 a7 w: a7 y) sdef main():
    / @, |3 \( [& A, w8 T+ ~    # 2. 定义图片类img
    5 ]" G  m* x6 g# Z1 R; _    path = r"C:\Users\98238\Desktop\Lenna.jpg"
    - i2 D3 m  @3 [7 ?! c8 G& B    img = cv.imread(path)9 V8 f( W4 j- X& r. f' a, s6 R
        start_t = cv.getTickCount()2 ]7 B4 B4 g" {1 x
        # 5. 加噪声,绘图/ }4 O' F& q) J) n* M
        ##############################################3
    6 I' n! P& [# d8 O    # add gaussian noise
    ; n' w1 x/ E" `) _4 p  O0 `/ T6 J+ D, K+ |  n* q
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    2 B& r, ]! z( j* q    gauss_noiseImg=gauss_noiseImg9 V  |. K4 j3 d3 G4 s4 s( ^- s
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声! u+ W0 k1 q! V" n
    # j9 F; c$ [3 L: |# A
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    6 J6 j. y$ ^0 D( i
    $ W( D& B8 h6 @    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波+ O* s+ e0 F% I5 n$ X
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    - q3 g' Y, _9 e0 \0 }6 @    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    * Y9 N1 H9 o; w
    ; |% E  S* H, r6 K# i) j& E# r    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释7 v  s/ k* K7 [0 P" w+ w
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释! \5 P: B: Q0 o$ O
    8 A$ }  |: Q& {% I5 C4 O6 x7 O7 U

    ; o( d. }) R; l1 w7 b: z& W1 i. d    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    1 _6 Y1 U) x% E# T; G' ]! C    cv.imshow('Original Image', img)#输出原图片9 Q: V! }; ]( U
    7 m: f7 C, D% \  s- v9 k
        # Gaussian noisy image0 M& H2 x+ Q8 A
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题2 a+ v: _1 U& f& W1 R
        cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    6 M# }% C4 G# `) i. h" |/ N% x1 N: k: P# u+ Q3 K) k+ d
        # Salt noisy image
    0 P5 F  }( h1 r( S1 J- y6 w    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题5 }" w' {% d4 r6 m, D" Y: V+ O
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
      y  w. ^& X$ [! t: B
    & n/ |5 ?7 [, `' J7 F    #滤波后的图像
    : q' G7 B9 q( i8 R* m7 b0 e0 X    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题- G: D) B9 o4 A& @: h: X! G
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片& }' I6 O/ H# L# V9 b
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    + J* ]. C& w( c; r$ `4 o    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    . ]4 S( ~* V5 C
    ) L, f# ~: O" Q: j8 _* }    #####################################################% y( `: H7 l6 Q

    - k5 y* T6 a5 V, m, D2 P    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    7 o  r' R: r1 a2 ?
    + @5 t+ q9 w4 O: N! a9 O    print(stop_t, "ms")#输出时间并加上单位
    ; a, C3 A0 I) z0 ]
    " R4 k( l4 u+ @: R, P9 G( U    cv.waitKey(0)
    3 ~6 B$ S+ e/ B. `9 N6 m0 r; c8 k/ r    cv.destroyAllWindows()
    - ^2 P, Y( h+ v# g# {* O: s. ~* ]
    ' I- b% s6 X3 g  z  Z% \
    if __name__ == "__main__":
    ! v  ^, f! M1 u2 r) n& ~* X5 D    main()
    " I; O  m* h) b4 s7 U, R
    " W7 o# j% x; r8 i原图如下
    8 `& Q% K. k* j" \! R
      C0 h6 _0 w7 X: A; s 1.png ( m* C4 O7 ~5 m6 E+ J% D3 H
    6 h; L' s% ]- o% X, D

    使用10%的高斯噪声、椒盐噪声,以及中值滤波为3 结果图如下

    添加10%高斯噪声后的图片

    2.png 0 ^% X$ P/ h, t- x2 }
    $ b/ ~% B/ z% g( _2 d- a) V
    添加椒盐后的图片) B( z$ A, d% c1 N* q6 [3 q

    ; T3 a1 q) G' ?4 i 3.png . j0 Z# U, Y6 q$ U

    ' V& _  {# J. U* \6 @使用中值滤波3滤波后的高斯噪声图: J* D: v+ Z6 s' B
    4.png ' Z' _8 X1 Q& m* y- f' \
    9 R! C# y; J- ]9 M
    使用中值滤波3滤波后的椒盐噪声图( p9 a) }* q# }# t& ?
    5.png
      g0 d. `+ V' p2 N0 z( ^1 Z9 E
    ( b4 J1 J9 f" l4 m9 t改用中值滤波5 滤波滤波后的高斯噪声图' q3 N4 |  T% }) T+ y2 h( n) }% e4 G% j

    ; g' Y1 p7 r* @& d 6.png 3 _3 I) }$ n, K( J

    3 K( E8 J% G! d0 b  ]滤波后的椒盐噪声图; W- A+ E% h" \+ Q
    , U6 \! ^7 a7 j$ W
    7.png 6 H" b5 v, Y2 P
    & n+ a/ p3 I# y7 E2 `* K8 W
    结论:2 E, e9 i  K0 n( \0 V3 r# Z. y
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。* P' s( F! l2 h

    # D; w6 y5 G' t; r) V
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-6-11 20:46 , Processed in 0.440843 second(s), 54 queries .

    回顶部