QQ登录

只需要一步,快速开始

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

    4 {% y/ @' ~. v2 [% e图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    . I( A$ p3 P) M5 F- C3 k& @* j- U" V% |1 C$ Y; V4 _
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
      n. `6 @, ]  X  Q- }4 P- Zimport cv2 as cv        #导入openCV库
    1 S* n& d/ Q* h6 |* Dimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    2 \+ A0 z2 S+ s& X                        #必须首先安装numpy,scipy,matplotlib6 {) h. b5 d9 a
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    / y! j& t( ]0 G" \8 c1 p3 t! r3 A$ b0 }# V+ s  R; z

    " K2 ~% y, ^- u. @& tdef boxBlur(img):- V: @; E8 O6 |! j' V
        # 使用5x5的滤波核进行平滑2 E2 c3 a5 b$ a9 g' Q/ j* ~
        blur = cv.boxFilter(img,-1,(5, 5))    $ w9 X" k2 T3 E9 k8 R9 \1 k) r
        return blur
    5 N2 Q$ |$ t0 [
    - V3 C' C( O2 Q9 \& U( T7 ~% x4 V8 K/ V8 I! f( A/ H, I& E$ `
    def gaussianBlur(img):/ f3 m$ `+ ~' W. f9 y
        #     使用高斯核进行平滑
    - G  M5 r) W* m( H6 F) T* N' r    blur = cv.GaussianBlur(img,(5, 5),1.5)
    ( G7 n  A3 }9 R# f4 P! x    return blur
    6 C4 o) J3 E$ h6 U3 w; |5 ^& i5 C0 @& S8 n6 P5 N; X* `
    * g, ~. m- R+ {5 T1 T
    def main():- }' X! I5 V+ v; u. P1 B& {& g
        # 2. 定义图片类img
    " _% E" J( _6 F1 _  g0 S    path = r"C:\Users\98238\Desktop\Lenna.jpg"
    : m% S; c0 H4 }- W! z; q8 X& K! l8 {/ p    img = cv.imread(path)+ q* r% k. r. W! c: F) t
        start_t = cv.getTickCount()4 i0 C2 f8 ^: z9 W* F0 {- H
        # 5. 加噪声,绘图
    ! _- N0 ]3 D7 t$ w. ]" K+ K    ##############################################31 V) T+ a4 d  B/ u. v: L. F
        # add gaussian noise( g' p& `* \( w) l( R1 ^% |& G
    + E1 d/ X( F, R, T+ r7 w$ X
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    8 O7 O% y: T  Y' A3 y& e    gauss_noiseImg=gauss_noiseImg+ ?6 C2 Y5 {5 z8 Q
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声, u* g' \. j5 e. B7 R

    ! X% o" _  u+ b! X8 a1 z2 U    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    - P: E0 [5 I2 }$ _- [1 E7 Q1 L# i% s6 J
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波# q; [. V" |2 `( d5 X  p
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    2 Q0 t( {' f+ u! y  w: a    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    ; r! X6 P1 O. ?- R7 I# A: W# }8 q
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    - A$ }" c/ b6 d3 V    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    / n6 O- L. V! L/ u, P% L
    8 _5 D! A' O. p, m
    ( C+ R9 B% }$ N3 l/ Q( [# x    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    & n- {% F: {! H    cv.imshow('Original Image', img)#输出原图片
    $ \& B0 l9 z" t8 z) H- n% E
    / o7 t; `/ y* G: i1 q9 J    # Gaussian noisy image
    ( |) E+ ?9 v7 P) _: t5 ?) ^+ |    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题  G6 F* h9 o, O3 B# }
        cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片( o6 |! ]( R2 e: n, h) \" m
    , A$ w) j6 h& R3 v  l
        # Salt noisy image7 |1 V+ k& n+ v. j5 \
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    7 h# }+ K5 @# a    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片6 y5 p7 p; g- R) A8 z; l" d+ J. D
    2 i) M; ~% p$ a+ ]
        #滤波后的图像
    5 k8 i" r# C9 H; V8 v& w    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    0 v3 J7 I+ P1 f" |    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    3 m2 Q9 r" w! J& j7 V7 C    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    , k- F; o8 k% A! B    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    0 e  p4 u( q) V" ~3 O/ D
    - K) m9 d1 k: I2 {+ m) Q- t8 ~    #####################################################. A. y7 e, D' F& _9 Y

    + c) r+ r1 ^& F* @7 m    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间( ^$ |# p( v3 I1 w0 s* ~

    * B- z0 ~& P) G) u7 ^    print(stop_t, "ms")#输出时间并加上单位
    3 S: `0 D; q! z! t# Q  @
    $ y+ o; ], _3 q  i' y$ W- ?0 ~    cv.waitKey(0)
    - u6 |, T3 p* V( }    cv.destroyAllWindows()/ k1 V$ e" I8 C) D

    9 u1 D/ N" M. q; }# ^8 k$ P6 W/ c
    if __name__ == "__main__":7 `! A* F5 D1 s7 D0 J
        main()& _& P: E4 Q$ V3 E; A( ^

    * W3 _* d; J# v! [# S( d: c9 m原图如下- T& @- Q3 l& W4 Z8 W5 @
    ) s; u# `7 U1 [5 ]; o; `
    1.png
      \# y2 q3 I+ \9 L: a$ z3 ^8 d+ `# }& j

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

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

    2.png 5 p+ E4 z. H& Z, Q( d

    6 J, `( o) ]( ~# w- ]添加椒盐后的图片
    8 y' N* E: J2 Y% T) w% u
    6 r& I& |( ?- s4 \+ D. Q4 x$ r( j 3.png
    & e% j9 [! \' L2 I) t! p4 f( b* q9 V: l5 {, s( j$ d( `$ P
    使用中值滤波3滤波后的高斯噪声图) h) F# _/ c3 A( V. v7 g4 L0 G
    4.png ; e- f( d/ w" y6 |6 R  B8 p5 `
    - T3 I6 R% F" n& r1 y7 }
    使用中值滤波3滤波后的椒盐噪声图1 F; n4 W) i: v9 r$ L; m
    5.png
      f8 \3 f/ i& f5 s$ f7 x' z: s
    6 y5 ]) U/ \3 [4 F5 m  o1 F: u. l改用中值滤波5 滤波滤波后的高斯噪声图% `4 S% S3 w) t1 {1 ^; h
    + \! F: Z9 C, Q$ u  g* R2 A" M5 [/ g
    6.png / s  Q/ c) m$ B, h; Z
    9 T6 }8 p+ J( w  i- _+ J
    滤波后的椒盐噪声图: |1 A- p" _8 n0 O7 I

    2 g# f; E3 j! R' w( ^. v6 X 7.png
    $ f5 R: |  [6 n! F. N( u, y8 m
    ; O; D) M. O( ]! v" Y结论:3 f9 e; c2 l1 H6 O6 Q2 [6 ?9 o
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。' Y5 Q. E, g9 W8 C' N

    0 P( c3 `) F( [
    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-14 17:32 , Processed in 0.423655 second(s), 54 queries .

    回顶部