QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4335|回复: 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
    , D0 |# b! h& M5 l
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    ( C) U/ j8 H8 m; t5 [, O+ V8 O' \3 a+ c
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置" D& p5 v' C/ m# T1 c
    import cv2 as cv        #导入openCV库, Y7 F1 y( I* D3 j6 {
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    , ?) Y0 |% a! F( o                        #必须首先安装numpy,scipy,matplotlib
    3 r9 g( E, e: H8 `9 _: a+ nimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。/ Z4 l# I, B4 }: r2 O

    2 [" d" \7 I9 s9 h* B+ y3 I$ j! y5 {
    def boxBlur(img):( Y; q; `- B, \4 Y3 ~
        # 使用5x5的滤波核进行平滑( b( S: D! o; Q& T' v" x7 A* t3 c
        blur = cv.boxFilter(img,-1,(5, 5))    " S# r3 Q9 ~+ W4 A* N
        return blur; H  A. ]0 p3 K/ U6 z0 _
    ( W8 H: q& u6 T' |- @

    ( M0 M. x% \, {6 [' Rdef gaussianBlur(img):- U2 {8 o3 q# m
        #     使用高斯核进行平滑
    . o* A3 e+ c; W* b0 v5 m5 X+ C" a  ^    blur = cv.GaussianBlur(img,(5, 5),1.5)
    . P" W5 ?& w$ _' `    return blur; Q) N/ \0 y9 \- _- \
    6 M: o- \0 a, x3 k- }1 ]
      y' o* x0 F# k/ P- ]& X6 \$ J& T
    def main():
    6 P) Z! q1 Q3 W' j: Z    # 2. 定义图片类img+ X8 V% K! @; C) ]
        path = r"C:\Users\98238\Desktop\Lenna.jpg"+ K  [: D4 \4 {" ?& E$ k
        img = cv.imread(path); [  P; v7 ?( Y# k; p/ j
        start_t = cv.getTickCount()4 [5 k' S7 P- `: n7 S9 U$ F# M
        # 5. 加噪声,绘图
    . X9 ?2 d7 e& A: k7 T/ P    ##############################################38 @4 B3 F" x$ O3 Y
        # add gaussian noise
    $ H8 y6 z) o" O& A/ m8 h  o0 I! ]# a& c- {% A' b5 p* R* ?
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    . T, j" M$ Q" w8 L2 ^: x6 c    gauss_noiseImg=gauss_noiseImg# E* l5 h; b; z$ c1 l5 n
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    , m0 ~: g9 T( O! t9 @, C. ^( t# N
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    / q1 A3 g4 ~6 e: G% \8 ?7 n# e: M9 R! R2 D
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    ! X; ~# s! |7 d; {, d5 p    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    9 g' s- I8 }! l. Q% {    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释6 g3 m% S1 G$ v* H2 E% d3 y4 g7 Y2 D' P

      C3 I7 N  w2 E& f/ }, S& i3 Q: Z    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    ( o, U9 B; M; e0 E    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    & Q- \- c. A8 w! X! P: K5 Y
    ! \2 M$ h& B$ E7 v; n4 B% A( D% ^" s4 \- P
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题9 i& `/ K  q8 ^, x6 t9 u3 R8 h
        cv.imshow('Original Image', img)#输出原图片
    4 F4 D5 g6 o* P' L$ G; s1 f0 p8 F3 X# @3 J
        # Gaussian noisy image- X9 }; s0 [% @! L4 j* G
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    # S+ e4 g7 Q$ |4 `7 A$ m( w    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片# ?6 p: [7 Y7 Y2 b

    ; V& ^8 S" k1 w; E) k    # Salt noisy image
    + [! [) y' r3 S4 Q1 y    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    * M4 L0 d, L: @* R    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片$ c& K5 M- J1 B8 L1 a9 ?7 y& s
    0 k- I/ U* {; s
        #滤波后的图像
      d0 r# J; n. |    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    , c9 T/ T/ ^/ U  ]% A: F0 G& g    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片; Y7 }, Y% |) E0 ?
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题* V$ A  y) A) e% j7 C, ~. z
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片! u1 G# X+ Z+ X
    ' K& ?# z+ k# A7 j
        #####################################################
    # g& w+ z  c7 t8 S6 ^2 W5 i
    8 F  b4 A+ v9 J2 ~    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    ' J( N3 |" }0 _4 C  v& j  x# D2 g8 r% k
        print(stop_t, "ms")#输出时间并加上单位! O6 s# r2 y- w/ _/ {) u8 U

    ! u# C6 E3 o+ g4 D    cv.waitKey(0), A  |+ O4 h# @* X! \: a2 x/ F
        cv.destroyAllWindows()
    4 S4 x9 n8 c2 c6 l+ L
    . Z2 Z$ G( }  C+ N1 [, A0 g0 k3 y4 v9 {" f; v' w
    if __name__ == "__main__":+ P! x- B, n- u2 Y! ?# `
        main()
    : ]6 `5 ^/ U6 _# x" w# t: D; s2 [) v% W7 B3 l; i
    原图如下4 u/ S. ?( k: ^# A

    + V: [$ N8 @9 [* b2 L1 K" |1 a 1.png
    0 N7 P9 y$ C) a) [% ?# x: Y! f
    ; }$ q. O/ p) j; H. ^8 B# J

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

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

    2.png 1 p3 P+ Q  d8 o' `3 V; U- M5 _/ n
    & H$ [' o5 l, g; v" T2 T
    添加椒盐后的图片
    9 P% j4 _4 G* x! \6 P& I( t1 b. k5 A
    3.png 7 p# n4 K; x3 f6 V# V1 |

    % L6 ^; \1 r3 L: m3 v! I1 p4 E使用中值滤波3滤波后的高斯噪声图4 L! ?) h2 j+ x
    4.png
    8 f; g7 f, a# o! j1 b3 y8 k2 S7 E
    & N, N. M9 v+ x2 d1 m% c7 y) d3 C% z使用中值滤波3滤波后的椒盐噪声图
    6 U! e$ m+ d% J 5.png
    , w6 R9 k" S" d# z2 c. W' Z7 p2 |. Z1 ?
    改用中值滤波5 滤波滤波后的高斯噪声图
    ' e5 r% N' b0 f6 i/ @
    5 H% b9 ]( K: z' g 6.png
    ; z! Y2 S" O& w6 l1 G% m, |& b" x
    - [1 B& ^& F8 T0 S7 S# l滤波后的椒盐噪声图- L. q6 Y. t' r

    " `) Z: r3 G* d& Y. [% P  q 7.png 1 |0 K1 j# x1 M
    ; ?  y* w2 C9 Q3 z8 K! y2 _
    结论:7 _* n& m3 J7 _5 R: W% g; q. W
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。5 Q7 a( L5 F) [5 S9 ?: N6 F
    * `# o& \" x4 v2 b4 H% a
    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-4-15 00:43 , Processed in 0.416298 second(s), 54 queries .

    回顶部