QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4424|回复: 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
    # E% f7 k( V2 l+ t4 H7 ^, q+ _
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。, m2 B* N1 Q0 C8 {, l# o+ _

    $ U' N3 ^$ R/ B4 m, L#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    ) d* B6 p/ h! N! kimport cv2 as cv        #导入openCV库
    # u# {# @* @) `8 Eimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    3 n" ^( ~5 s" t, D                        #必须首先安装numpy,scipy,matplotlib& _* T* @% L4 i+ W! U, g9 L
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。9 e. s1 \  ?# ]8 v$ ?

      Z0 }1 R# C) n: d, Q9 ?+ |6 S, j& I7 O3 G2 F
    def boxBlur(img):
    " I/ T7 n8 g7 u    # 使用5x5的滤波核进行平滑
    1 ~; F+ p: R- P+ T: ^    blur = cv.boxFilter(img,-1,(5, 5))   
    1 C8 Z5 {5 P9 b- r5 D    return blur
    / c/ M' N( X" H1 S4 R- V! m2 w% ?# B; j& [* j, {, J& O
    " o. o4 H7 v7 y+ H, H  o2 ^( B- s
    def gaussianBlur(img):
    1 u& Y' P& I2 g( Z    #     使用高斯核进行平滑  K6 L# q, Y: |* I
        blur = cv.GaussianBlur(img,(5, 5),1.5)# o2 [  ~6 q* ?+ f2 B8 x
        return blur
    5 ?+ w% N; L% B0 K) q: [( K, ]6 g1 [" N3 t8 D* T5 L3 y6 k

    ( H7 z4 e! E5 O, B, j4 Q  H8 b, Q5 @def main():: @, a8 a' P' o- [
        # 2. 定义图片类img
    - k3 F' I. L. X; J    path = r"C:\Users\98238\Desktop\Lenna.jpg"
    " b. ~+ b% ?7 \9 O6 f    img = cv.imread(path)
    - v" m5 b8 l! L% ]: w: D5 U; h    start_t = cv.getTickCount()
    ! K( B5 O7 b+ R    # 5. 加噪声,绘图  Z8 }' N4 z7 f% P
        ##############################################3
    7 p2 `' B$ t4 Y- y7 F    # add gaussian noise. s4 q4 i; a& y$ ~) |

    $ X& D, H% S8 y2 S( }    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    9 b' ^8 {6 C1 m2 \$ G% M3 Y    gauss_noiseImg=gauss_noiseImg3 y$ h4 v" b6 K6 o" Y
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    7 h% x0 C' t1 }3 Y; {/ n' [. Y; k; O" `
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波  y' j) r1 ?- n, ]+ q' e9 W) b
    - c( n/ h& w6 {  O0 v/ a) {+ p
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    7 V& b7 S; n/ ?2 @% L    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释8 i/ r) l1 Q0 ^4 g$ k4 y6 l
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释6 ~5 B; q/ D% c9 _$ d4 g
    $ O0 k$ [+ B" c" n+ h
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    ' A. Z, E: r' v: `8 S    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释/ P! {. G* L8 z

    - c" ^. Q6 B, C- w7 b& w) P8 D% i  @: s  ^' @* h
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    9 A7 f. S' D  y# k    cv.imshow('Original Image', img)#输出原图片
    0 g2 ]3 F. C- U' B- Z/ ^, c, c5 R8 G; f+ j* x, F( F1 S
        # Gaussian noisy image4 m& r  C- f; g6 k! j( S% a# X
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    ( s: V) p$ n% w    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    9 u- A/ G9 a$ G  Q* c5 R( N  P' c7 l( _
        # Salt noisy image% m9 @, K# D. C6 h- Q* ?, p
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题% w5 {. ~5 N7 Q  X3 n
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片- Y" j/ ^% V0 g* C2 p% [
    8 }) b) c  J9 a! }+ Q) C
        #滤波后的图像
    * }/ {4 Z* }- z% ?    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题$ y. h6 c" ]. U& ^
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    & i8 T. v# }! ]/ D9 x    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    3 U  P. B! |2 H+ P  b    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片& i1 Q- s' J0 _; x* i! H0 Y
    ) L* Y& D. M! `" B' \- v) D9 F
        #####################################################) Z1 ?, M; K2 }6 p

    0 k  `0 k. S: H# e    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间/ o' u8 }6 A) W9 r/ q
    # R1 i/ d, R* b) ?5 C4 C1 z
        print(stop_t, "ms")#输出时间并加上单位3 q9 P  U7 h. Q
    ( g2 e- V! u# m* U! l; \
        cv.waitKey(0)( `; E( l9 r6 _+ m  d! E
        cv.destroyAllWindows()
      r9 D) {- |' |# e$ G9 x& h7 e  [* p, ]6 `
    ) \1 u0 v% i. W) M' t  w
    if __name__ == "__main__":8 W1 U# H/ A3 z/ d4 x' Z
        main()9 Y1 k* F6 F! Y3 o$ Z
    3 Y* @3 ^# ]: U- B+ z1 Z
    原图如下7 l% E! P* K: r; F
    ; J' f& U' H6 G$ A
    1.png
    8 _5 ~9 o3 T& w) Q; L; A( {% w$ S! X0 J) ?- c

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

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

    2.png 0 }* S- w4 m/ |# F
      `# M7 U7 Q( F9 U& C3 L
    添加椒盐后的图片
    $ L9 T: M' K, u, g7 o
    % r! H, r: N3 L8 Z) W' V 3.png ' E2 o7 T% Z0 R8 U8 K9 m! D% \
    ' M- y* {/ K3 b% c% H
    使用中值滤波3滤波后的高斯噪声图
    9 W6 g  M! @! b3 C2 Y, j+ H! D 4.png 7 y" x: {$ y2 K+ U1 j( l/ ]) g
    , D* E+ m: {8 D8 E- V( ^; {; B
    使用中值滤波3滤波后的椒盐噪声图6 a4 Y# j3 R+ U1 {' j: _1 h
    5.png
    ( d1 T* f2 I6 Y4 _; t2 Q4 n# S9 R6 C! E5 @1 _
    改用中值滤波5 滤波滤波后的高斯噪声图4 G# K% y1 O7 i* `+ @

    & i# s2 e0 i$ [' d0 b* v- @ 6.png
    # S+ l3 ]( d0 n8 t$ A* Y
    ' A; [2 v1 H$ |9 t! x9 x滤波后的椒盐噪声图( n/ v+ i1 J* f% e% F/ R! ?' _

    % `  L1 D9 n* z3 m! C: o' [ 7.png - ?: L4 z7 E  f# `: y
    ! K3 U9 c& [% h) y5 d+ s5 C0 K" V* v2 _
    结论:
    . B+ O: K( t8 u1 x( @  r2 `经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    6 o* ]. H3 l( `# d! o9 A( m9 W
    - ]5 o+ O& R; P- ~
    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-8-27 05:25 , Processed in 0.523325 second(s), 54 queries .

    回顶部