QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4372|回复: 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
      q9 E2 ~2 a, ], R
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。8 Q, Q1 c/ n: B& g: Z9 |! i
    2 ?% T* A" f) q
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    $ a3 {' A3 P( Oimport cv2 as cv        #导入openCV库
    + K; ^  I: j7 ~. d$ Rimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。9 U. E) o( h$ W; [. J: O5 e6 l
                            #必须首先安装numpy,scipy,matplotlib
    2 [, W0 V% D5 d6 X& {% uimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    ) R# D/ {3 T' N4 R
    0 j' g; x) D% @  t$ F$ I6 S3 C* e7 V  {5 N
    def boxBlur(img):) X& t+ b0 `( e0 v; [; r, p
        # 使用5x5的滤波核进行平滑
    0 C+ \1 ~7 M1 h' J$ D6 [, m7 I    blur = cv.boxFilter(img,-1,(5, 5))    & H( _  m0 l. q" \+ R% u& h9 D  s2 u) y
        return blur* H$ f' b0 c5 j
    2 J6 j# ~- i7 w0 i  B
    % A9 Q) g" u4 ?9 A% [( V
    def gaussianBlur(img):
    . w' D1 D3 |3 p* U, s    #     使用高斯核进行平滑, G' L# F' _; t% A9 x9 ~# t; {
        blur = cv.GaussianBlur(img,(5, 5),1.5)( w6 X  w) C/ T( @# l/ i/ o) n% e( {2 K
        return blur
    ; h: O* z( g- b  k6 z+ U; e$ _9 c, f* a* t3 l! L$ \

    $ E) U& e+ ]5 l! V. gdef main():3 M" U1 E! S9 _; p
        # 2. 定义图片类img5 }( k! i* M# `. c/ z8 S5 ]5 V! U
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    5 L) t; N1 w/ d" N    img = cv.imread(path)
    ; Q& K* N: b" ]$ r1 X4 x    start_t = cv.getTickCount()
    3 \! T' ~, e5 z" f% T    # 5. 加噪声,绘图; |0 \  {2 z9 A: u
        ##############################################3
    . H% n0 y* B0 G5 U    # add gaussian noise
    , H. o) @7 m4 |9 U
    , N5 L- y0 ?0 U- K  R8 x  l# ?7 o+ t    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    & M6 n2 Q' @: n! y    gauss_noiseImg=gauss_noiseImg
    $ ^6 c+ z9 K( F5 n    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
      D& e. B, d0 f
    % e3 l+ p2 `0 y6 t* F- b    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波: l* {8 j; ~# l3 U6 B

    9 o2 ]- S5 \) O8 V1 W. R% U* W2 C- a    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    . R  s/ v5 g4 `& K$ ]& `8 k& G    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    8 R" K2 X. Q  D# d9 P- F$ H    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    ' t* b; O; d% i! |9 M
    # \/ R. U' p4 W3 T" n' `    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    , Y0 q- U; C; y" |5 \    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释0 ~8 l; [6 Z' b  f' V: l$ p
    6 }, b. M: @) h" W
    " ]( e* b* O/ |( z- R  R0 m8 R
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    # d# [) N- ^6 j, I) `    cv.imshow('Original Image', img)#输出原图片
    5 ~: P6 W, y& ^. d. w) U1 L( ~: {. Z1 j
        # Gaussian noisy image
    6 J+ n- j5 F$ n+ A    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    / S5 Z* ^; Z: e7 j# R    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片2 ?/ N$ J7 B0 s) P
    : Z* ]# V8 X1 l( A3 w. U
        # Salt noisy image
    - l2 g+ l' N" }; S7 Q0 w    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题4 i! x; N7 n* o" Q  @
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    5 U- X0 U: _5 I/ m! M% l: f; b% u* B
        #滤波后的图像0 i" W! I3 ?6 H3 U; C4 ~2 W: \
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题1 B: R. [. l9 T% ?2 V  b! F5 v
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片' \- r$ d; ]$ }  x8 L3 a; T" S
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    ) }9 j) A8 G2 ?9 R- C, b7 `3 N    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    3 e- I( S8 G; {4 ~3 N, D- r/ ]4 A+ E
    / _) b2 N1 j$ O    #####################################################
    5 P. O& o2 @4 p) C) i/ [1 K4 g
    . v4 E/ U  V$ D; T, w3 o    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    6 y" R. g4 t- I; c' G0 I/ m+ n
    5 x9 I( J! E% u6 x- c/ T6 G- ~    print(stop_t, "ms")#输出时间并加上单位
    6 q9 ~4 d% V* k- y9 ~. ]1 v
    ) o) `8 c+ R2 C* L    cv.waitKey(0)
    - J" r* M8 y  f9 `2 [- p7 o& U    cv.destroyAllWindows()" u% a4 Q+ w/ |9 v5 j$ x8 {

    ! u3 i) n% K& F: |, ]: s
    ' O/ P! R0 |4 a  w) e; G8 Zif __name__ == "__main__":( v5 M" [  X2 A
        main()
    ! a" u! I: }" [$ _3 R# J; g* n2 z  Y. n! w9 ]
    原图如下1 l) Y: U" F- c% K- m
    . W" @+ Z2 l( T1 c7 v* Z& s
    1.png ( R. E7 d. z2 ^' }& D+ y9 o& r

    & h& H9 }' d( H, D. ?

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

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

    2.png
    : W! Q* x# P$ t: X$ b+ E* B' O# I9 d/ V: b
    添加椒盐后的图片: M! E% }( @# H% @) E& C8 M& \  c5 O3 E

    3 u$ c# P" k- u% V9 | 3.png 7 v' O/ l* K$ T. B7 W

    & N. s9 M& l9 f3 C使用中值滤波3滤波后的高斯噪声图
    3 f3 `. \  e2 A' G1 R 4.png - [0 p9 z6 h4 [# i

    ; {: _' o8 |, o5 h' w& S使用中值滤波3滤波后的椒盐噪声图
    - [$ E" e: T' M. L 5.png
      a' @6 z% @3 {. f6 J3 }) I2 W- T6 C/ L  d' P) ~( k8 k5 B+ n0 a
    改用中值滤波5 滤波滤波后的高斯噪声图' p" m3 L+ \9 n1 G+ ^

    4 V5 S* h+ I. U6 k 6.png " x& y0 J0 u9 ~4 {. c/ X
    + z% Y1 v- g' N
    滤波后的椒盐噪声图
    . U) Z; ?6 }  p5 B3 W4 ?  r# i1 _6 K; c  L
    7.png
    & }: Q& |9 E& t1 `. X; L: x- Q. G$ X6 ]$ u: @
    结论:% N& n; x. Z" f! E& ]0 d
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    2 j$ b; R! I& p4 z7 o6 o2 Z
    1 e. P2 K. P3 I2 l
    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-14 19:15 , Processed in 0.610330 second(s), 54 queries .

    回顶部