QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4117|回复: 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

    8 e4 }  B8 v3 G$ j. U5 D, a0 l3 h图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    6 c; f1 N. F8 c  l1 w' b) S7 p7 ?: h3 q0 X- X% l3 N
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    ( \6 L. ?; _6 L* X; q& oimport cv2 as cv        #导入openCV库
    : P: v/ }( W9 ?import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。/ O! o2 ^. d# R( C" D$ T0 h9 o( V3 L
                            #必须首先安装numpy,scipy,matplotlib
    , S/ U0 D  R5 {) vimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    2 {' a, c0 L3 \- T
    # }' [* N# Z7 u5 d/ r; c2 A
    7 j# M) ~# L- E3 f1 U7 l: @def boxBlur(img):$ M; R3 T" D# _, Q
        # 使用5x5的滤波核进行平滑
    & j* J4 V0 ~$ \1 f( h8 F    blur = cv.boxFilter(img,-1,(5, 5))   
    & k& o3 z) p) @* N3 A) x    return blur3 s1 V& X& Y' u% W1 D
    ; G$ y' V' D7 {# y4 U9 g8 c

    * z1 R( E8 }$ ?# \0 i! a( Udef gaussianBlur(img):
    $ P: G' j/ P, O5 _5 z3 s. e# I    #     使用高斯核进行平滑2 u% R# _% C' [9 w+ u4 O
        blur = cv.GaussianBlur(img,(5, 5),1.5); t2 l8 X& J) r5 F5 v4 V
        return blur& u! l$ A; |' W9 f) W2 F- n5 z: p
    # l, D0 ^6 I  {6 e- b: s

      m# t0 [# I, v7 w% o( V/ zdef main():, |; r' D2 M% X4 t8 r/ C) B
        # 2. 定义图片类img
    2 x) v7 @! I5 h1 c% r8 |    path = r"C:\Users\98238\Desktop\Lenna.jpg"8 j$ r2 ^. R( @% ]7 ?7 J  ?# O
        img = cv.imread(path)  |& J9 v4 X2 E
        start_t = cv.getTickCount()
    6 Y" w( u2 P6 @- Y" K    # 5. 加噪声,绘图2 w# R2 b2 J% k- C
        ##############################################3
    5 y0 C4 H7 U/ X/ o8 b/ t    # add gaussian noise* b8 q( E6 H- Y
    3 a! I2 K# A6 X2 l* @
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    " A5 R! i; K4 Z  \7 ^/ x    gauss_noiseImg=gauss_noiseImg4 E1 U, R( J  N: L
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声8 b. x" P' M" Z- P# [4 l
    * d6 s. ~3 x1 f! j, F2 r
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    : f3 I4 ^) K8 V! B+ T' E# k0 V& W
    & ]( ~& l. F5 _& U    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波  ?4 T- l; }& Q
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    - q/ f2 U4 M1 k1 L  {# C    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释7 Q" ^  O, G, P/ N
    2 `% T( e6 j6 [. x7 P+ a; T
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释- B; a+ Z8 q, |4 W; z' K
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释! k0 q, j4 q! s/ l
    * U* v9 ~4 P$ ?8 K5 f& Z

    $ D: M( I! v! C    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    5 {3 G" i  _6 H    cv.imshow('Original Image', img)#输出原图片- `" O) A# q' t4 N4 Y* O* V
    7 J6 d  l$ x+ m0 K7 A7 R
        # Gaussian noisy image
    " o2 ~" O( w: p( T3 f9 k0 E' y    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题; ?+ I7 u$ p1 G5 G
        cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片' b% @8 Q1 v9 x# h1 F. Z, b4 j
    * c* [$ C9 Y4 o# A" l
        # Salt noisy image/ p, |- k0 @# M: C. w$ p! W  v
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    ! F$ w7 U0 r- I" O: p0 o    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    4 J  c6 y! _8 {
    . y! }* U- x1 ^. k    #滤波后的图像. x! p& M  a; n* X+ k; s& X% ~
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题& i% f* Y" i, [1 g. R1 z# k8 N" L
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    2 g' S- Z" x) B5 Z7 h- X    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题. @# G3 @" y. q- E& J) j
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片- o% O% M7 s6 o/ x$ R! u8 @

    - A7 C6 l/ f- p9 {$ S% [    #####################################################
    * B  z6 }& D8 R& F
    & b, t! V0 g- d6 R# }; x$ O6 X5 T9 d    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    ( x" k1 l; k0 F0 g9 X' z! c- [0 v6 R/ T: i: i" p  O- w
        print(stop_t, "ms")#输出时间并加上单位& I: b" @; }  w+ h
    8 c5 C! W: g/ X" \& l- N; D, L
        cv.waitKey(0)
    / [% G1 m1 L% y* m" u  u+ u' o    cv.destroyAllWindows()
    5 Q2 N8 H; q: w, z) b& n8 Z! ^. W5 x5 l5 p" u

    5 T1 _7 o" W0 I! N: a  iif __name__ == "__main__":2 i  U$ u" B% \. ?. }
        main()7 g0 b$ C, ?& \7 u5 ]( e
    : c6 C% ?# b8 |, [4 Q
    原图如下
      n3 D" u& x! e. X0 l  }7 f8 C* R* ~. n# j3 @" J& I! J5 t
    1.png - }8 f* u8 A1 L, c
    ! r4 ?) k& c' C. O0 l2 e' p; H- D

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

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

    2.png 0 ^7 V$ b8 B* b5 I7 S
    + ]: P9 e6 s+ L
    添加椒盐后的图片
    $ [8 _9 h$ }$ I
    ( e* g: _! [( h 3.png
    # o+ z# _! P; o* A. C/ W+ `4 Y
    - L' O. R( C' @! o使用中值滤波3滤波后的高斯噪声图
    " v0 n% a- T7 x) W7 r 4.png 7 Z# M% g' R" ]: F: t9 v

    3 X. n: E" Q, y使用中值滤波3滤波后的椒盐噪声图1 V; u1 y& P" `& j
    5.png
    * b9 p7 e. F* l( @' R) e* F8 \1 M' |: n: V
    改用中值滤波5 滤波滤波后的高斯噪声图
    ( j* U1 I0 F2 m( r. e( U& O
    % p8 \4 E1 X9 d! w2 D0 h1 M7 b3 s8 N. | 6.png 6 X/ i' u( H8 M( D7 F; m
    5 M7 g  d  z; |7 ~7 f
    滤波后的椒盐噪声图4 g( C/ T1 u) C
    9 `. ?2 O( i" S9 E2 I9 t
    7.png 2 r6 O; R# @+ ~. F  ~
    ! M* d6 r0 q& k6 w/ z- v4 t
    结论:! g  w2 c# a& z# F6 e1 V
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。& Z0 I+ W9 j$ E& B

    3 {" C" Q% A0 y' H  ]
    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, 2025-11-16 06:02 , Processed in 0.402864 second(s), 53 queries .

    回顶部