QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4385|回复: 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
    ( [  q  D4 O6 ^  ]
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    + D3 n' P7 [4 F7 `5 i9 k
    + _6 j' M1 F7 ]#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置+ G: U2 p9 [7 S' ^5 ~0 {/ y# g
    import cv2 as cv        #导入openCV库
    " j# h: N# J5 s+ p: B  timport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    4 T7 `( d8 g' l7 o                        #必须首先安装numpy,scipy,matplotlib
      J; B* V# _$ i* ~7 cimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。# j' d. `2 J7 i1 x5 j
    9 M0 L- }# c/ I: d; Y; `
    7 L  x; m& y1 R' W1 V
    def boxBlur(img):
    & \9 _5 ]; Q# k3 t) s& |    # 使用5x5的滤波核进行平滑& k9 u. V$ ~1 A4 n
        blur = cv.boxFilter(img,-1,(5, 5))    9 |+ ]! r+ q) F. d  m9 @. q
        return blur  T7 a5 r. t( \
    8 X, O0 k) @7 |, B/ y0 @' Q
    , f2 J7 ^, ^/ x) _9 Q; Q/ W
    def gaussianBlur(img):
    4 R. c7 J4 ^. C1 V+ q    #     使用高斯核进行平滑- ?, ^% ~$ F2 H' d7 T
        blur = cv.GaussianBlur(img,(5, 5),1.5)
    . s, j& @: R0 X% ^; Y! Q* A    return blur' \2 n# U& R' _8 T9 a
    ( x! c, @$ I/ c9 f  `

    + e( [1 g7 R! O6 a: m5 u# |2 }& ldef main():
    " G4 M4 e) R, n$ q9 Z6 A- b    # 2. 定义图片类img
    ' K* b$ x+ Z8 E    path = r"C:\Users\98238\Desktop\Lenna.jpg"1 i* C& K/ i5 l% Q8 W( R: v
        img = cv.imread(path)( }$ V8 ^6 p, H% o
        start_t = cv.getTickCount()
    7 m# p8 f* U# u5 K4 D6 I    # 5. 加噪声,绘图( j0 S% t4 a) z
        ##############################################3
    ; i0 K1 I) H& }! o5 o( M3 i    # add gaussian noise
    ( J. ^# w- `# U/ n# A6 K& z0 S. r7 w4 b
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声) k- }" u5 W+ n4 F" o
        gauss_noiseImg=gauss_noiseImg0 ~( x+ p9 l2 d9 m* B  \3 k" z
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声0 M8 T* @7 V$ n: _, ]0 |% \8 p

    ; z+ I- f- p) |6 Q' \# w; i    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    # X! v" p) j5 u& w3 U' z" @. [6 c
    4 u: q1 q+ G4 d  R5 F# X6 \2 h    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    + h1 J* e$ ^5 Q+ q    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    * V- p( ?2 L) K    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    , p  g6 G2 _* L) P" d: i, S0 ~0 ]& O6 p. Y  t! T9 o
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释8 T& ]  @5 L, @6 e+ w! M+ f+ ?" a
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释+ B* n& W5 u& U9 M# X& J

    , s: L" L8 z0 L: t+ p; |/ M0 b+ V' V1 x5 I& J" F* _
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题/ U! n5 I( Z  H0 p# n0 P: T
        cv.imshow('Original Image', img)#输出原图片
    ( a9 v" L  @1 d7 S* b' o
    4 |" Q6 \1 ?% A    # Gaussian noisy image
    2 E! v  f8 p0 B5 X% d& S9 d* Y    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    ; W# @. A0 U+ M! ^    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    & X/ K! n8 o+ B1 m% n) r# X$ C0 r" b/ }) |8 v" I
        # Salt noisy image
    " \5 _* Q, u7 H, c    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题; Y$ q3 T: S/ c6 p9 g
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片) t& R2 F6 X. J$ _: z1 \# W
    : \* `2 @* N# E- v+ c9 B
        #滤波后的图像
    . h2 `0 }, s& J) B- t# \6 z    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题1 c/ y4 V- T: |2 E6 F! a5 M
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
      }: y( M7 k, N1 r    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题( B# o3 u" g! |
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片) i& @% M4 W( z% z/ I

    1 d+ M, t. ~0 P7 y9 ^    #####################################################* z; D. @/ u' {- N3 [4 |( i- L0 P

    " G( M' K: y: R. N) ]    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间) \7 X1 b  t) S" L, N
    9 D4 w2 k( a! R: h1 y2 _
        print(stop_t, "ms")#输出时间并加上单位4 |; Z3 J( g6 M
    - }1 v" |1 k  [" }" d
        cv.waitKey(0)
    # P9 Y: y* \* M0 R# `7 x' c# i& e- A    cv.destroyAllWindows()  S) d1 I- [+ c" F6 e: G" C

    ( \% `( G  k1 ~' O, P, C1 x, u& I# h  f4 Z+ U1 ~( }. R# U
    if __name__ == "__main__":# s% f, [) y  n3 m
        main()8 D5 `* B0 r( y( O# T$ w" F. A& z
      a7 f1 c2 J! B. }
    原图如下
    + b( [% i1 T& G
    . K0 m( j- P( g& _1 L$ i/ A 1.png ; p' p% S9 s  h7 i( C9 ]& v7 m
    ; t8 J! F. t5 \+ Z/ b' C+ O

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

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

    2.png
    + O" N0 b7 U8 S2 E  h7 B" i
    3 N5 e. M6 {: v3 ~4 C( o! X, e添加椒盐后的图片
      u& f% C3 a& q! u  F2 I. ?" D# a. d8 k7 v1 Z9 Z' i7 d' H1 d
    3.png / n' c7 c7 n! ]; Z& d+ r; n; @- E
    0 p5 t* ?" U3 `* M3 {
    使用中值滤波3滤波后的高斯噪声图0 @+ p! d" f) B( X- h
    4.png
    , ~; b6 H! S% Q9 i$ E6 N' l
    3 d0 H, ]; _6 w; D使用中值滤波3滤波后的椒盐噪声图4 a7 C( |: P' ]. t2 F
    5.png
    ) m0 S  E" O3 d! i" p+ o6 z- `( L+ q
    : X% ]# j  b/ ]改用中值滤波5 滤波滤波后的高斯噪声图6 k4 T* o' m8 s/ i: }# D
    + ]% @; `" m  }( T) n- [. u
    6.png
    6 ?% k: }( ?$ b$ O5 s3 T
      v2 J$ L# t, l( S* O滤波后的椒盐噪声图& O( D: S6 w3 c  Y: f( D2 Q

    ) O9 r3 x- y. @ 7.png $ c; c; H& G$ w2 J+ d/ l
    & `1 i) f* H$ z8 W6 I6 E/ c2 ?4 ?8 _
    结论:' F. c' V" j- [5 L, J
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    1 \) f3 ~2 `7 N6 U: N2 l# Q8 U3 Y9 ]0 e+ e/ p- k$ T, \
    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-7-9 22:44 , Processed in 0.400375 second(s), 54 queries .

    回顶部