QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4386|回复: 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
    , J6 |- I# L4 C. {+ u
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    6 X) _/ W" j& \
    $ b- k/ G9 R& w3 `8 b6 H2 m6 L#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置4 {. k4 l1 L; v: k- q0 [
    import cv2 as cv        #导入openCV库+ ^, i/ B' l1 P; E, x5 K/ t
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。0 o& a, A5 t* _) D3 Y" Y8 P
                            #必须首先安装numpy,scipy,matplotlib
    ( m, }( c, K) b- T/ w' yimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。  j/ K1 G1 P/ m( `/ T

    & |: T& Y4 b4 y! y6 U. ?: _$ x& p: S# ]
    def boxBlur(img):
    / h2 {1 L' n0 H4 B8 R" V    # 使用5x5的滤波核进行平滑3 |: @, |3 P& ?, ~' |& U, F
        blur = cv.boxFilter(img,-1,(5, 5))   
    2 P' J& Z' Z; p3 Q    return blur. e1 G& c/ }0 x7 ?' ~1 z( I
    7 K8 n9 ?% @* R- `7 u: Z

    7 w1 Z6 }( |8 }6 h" {def gaussianBlur(img):
    1 V' d; ^* ]5 f$ b4 `( b3 `( T    #     使用高斯核进行平滑8 k/ W6 k- _) o1 }/ O
        blur = cv.GaussianBlur(img,(5, 5),1.5)
    / M+ |, \" p+ a1 S& _/ m7 V; P& F) `    return blur
    6 I  G& |* N9 w$ G& p2 ]0 W9 J, k$ U  j- C
    , @4 Y* C' X6 F8 J2 M. |& Y
    def main():2 s  W9 p5 b0 I9 b
        # 2. 定义图片类img# z! O# z+ V) q2 F
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    7 B; z1 K0 d/ t4 T! t    img = cv.imread(path)) e3 X: U; m) U1 R
        start_t = cv.getTickCount()
    ! Y4 `* D; p5 b# L4 h  U    # 5. 加噪声,绘图
      w! T* I0 W8 m: S& ~7 t    ##############################################3
    9 J* d2 `; r& b" y    # add gaussian noise
    ) M' n3 L/ s: U  C& v/ Y
    6 d, \$ P  O6 q/ r" u5 ^8 M9 j    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    , D% W8 y, ^& V" ?/ L/ k    gauss_noiseImg=gauss_noiseImg
    4 v* }* U" V; D, J    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    # H9 S1 v& {( @) p1 D
    ' k$ O( m' x# u, o- E" P    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波! @! T1 _: j9 k; p$ |; U1 }2 ^; k

    6 x4 t. d# n* N. v3 h$ l    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    ; m/ T0 ?  U7 a9 s) I7 `9 E% z" C7 L    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释: E/ }( z- u7 E5 A, k% o
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    6 Q) Y: `5 e0 m! T% t* [
    1 }+ D% b, c2 a0 z* G; v1 [    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    . w0 d7 h6 _. |4 j) K    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释, e( ^9 f( a0 I& s% y6 |

    " |! E+ r6 E) I( N8 U/ }' b# j; `
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题) d0 z( p! J/ b9 t+ _  |
        cv.imshow('Original Image', img)#输出原图片5 }$ ^* k5 q3 X7 Q
    7 \- @$ W1 p/ Y. q* V
        # Gaussian noisy image
    ( d& ]" a0 ~+ K; s    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    ' E; G* U% S- F/ S% j& H! |    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片8 D5 d0 N" c* D8 o( l3 Y
    ( b# Q6 Q$ j8 q+ B* l
        # Salt noisy image& `- j# Y4 n; p5 A$ \' O) @) R
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题$ Z2 V1 v  S  m/ U! g" L) A
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片0 x9 ?2 Y8 m! A

      C( m7 X5 r, e' E2 N: U/ K    #滤波后的图像. l8 N, b! `4 O  f: R
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题2 e! L% `& H3 k1 I( }! p
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    ) m8 ?6 R& A8 D/ P0 O7 ^2 }+ D    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    & ~. x( A" j- U! z. h) J  V    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    # U; B9 Y" @. X  |0 [1 s, r& M2 X- E
        #####################################################
    7 G0 }- M# _% Q$ e1 M8 S
    & z. G3 p: C( {2 g$ D: U    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间$ g4 N6 O, X2 E) W

    - z+ H- a4 c8 A8 o( I2 c    print(stop_t, "ms")#输出时间并加上单位6 P3 O; [% E% @. ~8 F

    " h" \8 O! z% E- g    cv.waitKey(0)
    . K. N0 R, _' S. B0 t    cv.destroyAllWindows()
    8 B3 `; ^/ J# N9 J
      E1 p. S9 C0 J. T
    ) E4 X! a) d# \3 E" qif __name__ == "__main__":
    ( g! v$ k: Q9 j6 L    main()
    3 ?2 j8 K3 J% \' \0 g: D; A* \* O1 g# Z2 H1 j
    原图如下; L: H( T; r$ Q) ^0 F
    4 X$ K) F) ?3 k1 O
    1.png / `  u- g  e- R) v( X8 ~- X+ F3 W
    : \1 z# d- h& S  y. ^. E' s2 e* d

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

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

    2.png ; O7 U1 F$ |8 Z6 I$ o
    ' S' t4 P4 V8 V& z
    添加椒盐后的图片' {  b$ M- e% r( |  \& F
    7 y- E! v( A- d( t% y/ H
    3.png 6 ?& H- m: }5 D6 f; t& t
    ( M0 I' c/ W$ v) z2 t
    使用中值滤波3滤波后的高斯噪声图
    * q* h* F+ H" d' A 4.png ( j& j7 s' `7 z; u  ^, {

    1 [/ V  p1 V: Q: @+ k/ `使用中值滤波3滤波后的椒盐噪声图
    7 x  j! m: j% u; h! A 5.png , A! x! K4 Q3 M# Q7 P' V

    - y) O, [( U) @3 q改用中值滤波5 滤波滤波后的高斯噪声图) u2 }$ n& r8 D8 Y1 G
    . B5 i+ u8 k* s0 N9 A1 B+ H4 Y
    6.png
    . U7 q( Z( u; v* i
    0 R6 f  P: @( a  b7 D0 i滤波后的椒盐噪声图; d0 C$ @& y) s" [- ~
    , _' Y7 [& }$ ]: m0 _
    7.png
    - c( @: W& P' G' R% R4 K7 ]5 c) q9 G  ]' J4 V% ~
    结论:4 U5 l7 h4 e$ \( b2 }9 Z
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    5 \$ o* Q- n. L/ F3 ]- [1 G
    % }2 @0 L% c& @6 w0 y
    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 23:43 , Processed in 0.461039 second(s), 54 queries .

    回顶部