QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4494|回复: 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
    7 s  v$ t7 g8 }7 N
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。/ f2 N* @/ o" p. ?
    6 a9 g9 T2 _$ ]9 A: \
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    9 b: Y) d/ b% m. A8 ]' Iimport cv2 as cv        #导入openCV库9 ]& V' Q! @/ K! s
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    9 R0 `/ M" U. l" G' M1 q                        #必须首先安装numpy,scipy,matplotlib
    " `( K% z- g6 u; F, Y/ X3 Timport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
      @# g8 `# E" e+ F* g8 L# G4 S& V/ f* M9 A7 e  s5 J8 O

    " z# A: w5 H9 {) d- m+ j, w: V: `. Pdef boxBlur(img):  c4 [6 g1 x: d2 z1 x
        # 使用5x5的滤波核进行平滑
    6 t5 B$ J: [" x/ i    blur = cv.boxFilter(img,-1,(5, 5))   
    $ ~; j8 @; R6 G+ |' k- U    return blur  X( t; l7 b, Y3 H8 |9 |) y9 D' l0 E5 |
    - T( c: O) ^& I1 Z

    6 i: \, }- ^# t& s6 a5 odef gaussianBlur(img):
    ! b/ s4 \/ v& M! L' Q* x    #     使用高斯核进行平滑
    ! C" ^3 L5 U* T    blur = cv.GaussianBlur(img,(5, 5),1.5)
    5 i3 t$ J0 b( h# K) ^! f* j    return blur7 i+ a" [; c, J6 T8 p7 B1 T$ C
    6 ]& T2 L& R5 z& v( {, ?

    3 z; Y4 D5 _) x& p2 ~def main():5 K8 T( D# M/ t& Z" ^; A
        # 2. 定义图片类img2 N! t% _: R. D' x7 [# r
        path = r"C:\Users\98238\Desktop\Lenna.jpg"0 a* i! v% a1 o8 B! c* s1 z
        img = cv.imread(path)
    7 |2 n" D" T! K+ x* |. o    start_t = cv.getTickCount()! y9 o% A. U" r- |; }" a% s- Q
        # 5. 加噪声,绘图6 j$ Q# x. m8 p
        ##############################################3
    7 u2 ]& m+ j# V+ W+ a6 ^    # add gaussian noise
    / X3 K% D$ l8 p
    : x5 z% k# P7 k$ ^: B    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    3 ?$ r$ f$ ~% i' \0 v: s9 v    gauss_noiseImg=gauss_noiseImg
    5 P/ M3 ^0 `7 G) M% Y    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声. l, [6 e5 b$ B: d
    5 T- R) y4 r* J4 y& Y
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波: p" ?5 w* i/ p& d# l- D
    3 l! I2 h8 u1 [8 p5 y% O% ~' S
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波  P  q6 _6 |: \% `6 H& ?: F
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    : i, j: z4 t& i! L    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释. c1 K! @/ B1 ^  a+ F: X
    6 z+ [) v9 p: m- z) y
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    $ E5 e+ w; ]) c/ r- i4 S% @    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    & I3 Y3 ]4 P3 q& Z7 P
    / r6 D: F$ v4 z4 N6 T! m" M1 h% f; |  f+ s$ w
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    7 |2 f( v4 q* B3 E    cv.imshow('Original Image', img)#输出原图片) }8 v, n1 p( u% m* Z" y: C6 A
    & Q" j" z# t0 @
        # Gaussian noisy image
    - v) C) M7 y4 V7 b: w8 X    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题, W+ ~/ O" b( R  x
        cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    ; o: Z6 D) ~; A, U) k) y, i  g! Q$ W3 n$ i! A3 {
        # Salt noisy image. n( S3 C, g7 \
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题  N9 C8 Q( ]% H8 h
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    9 [7 {5 ~; r, v3 c( p. E
    9 a, A: X: W" b, B! {    #滤波后的图像
    & u* R$ L8 W( W# {    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题8 e# P$ S5 ^9 s4 C5 \* U
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    5 S. S' f  V1 l7 w    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题& p0 ^! R/ {# k/ l1 m- B
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    # ^  @7 z+ Z1 E% b' q3 o  a$ \3 e" u5 k* P  M  O$ I
        #####################################################
    7 ]6 N0 C0 _, z( L+ E- _
    + K/ N# h; v) n3 v  J4 c    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间* g6 p4 z- H* u% X( E! t6 T

    # k/ B* w# @  ~    print(stop_t, "ms")#输出时间并加上单位$ U+ h' j( \5 K8 H0 j

    - o* L+ H! h* ?0 ?% D    cv.waitKey(0)" N) u$ @8 o+ C  ~! C
        cv.destroyAllWindows()
    / C4 s2 \0 v; d+ W: v  g% ?% j, W6 f2 t

    , Z; P" N- u( J! ^! Nif __name__ == "__main__":7 B, Q0 ?- u* y% R; I
        main()
    7 r, L! @$ K# P- l. d" j1 [/ D
    原图如下
    ' K+ M4 J, S# ^6 y
    & z' M, Z) _  T' b) v 1.png   w6 e+ }. T5 c1 m. M- u) r
    * F2 d4 i) U" ]* _

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

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

    2.png
    ! T3 s9 k+ F$ v$ b* E9 x7 B( X8 [4 b; O
    添加椒盐后的图片' e: n9 r9 T' b  p1 t( p5 V0 W
    6 X3 L; Q: s" A. O
    3.png
    ) ]% z5 G! C& y( M2 {
    ; k4 L! M: @. m& i; s使用中值滤波3滤波后的高斯噪声图
    2 y$ U" W8 c) c$ \" G* j 4.png . l2 _' P2 n5 w' H! X/ A
    $ c" g. W: J- s6 V8 Z
    使用中值滤波3滤波后的椒盐噪声图
    8 a7 X, V, q- h' N 5.png
    9 J* P$ P; Z2 o$ J+ x# R: l. k; d* J* a8 K4 ~5 r
    改用中值滤波5 滤波滤波后的高斯噪声图
    " {: _' l2 ^# a2 d. o1 t2 |
    ; ?# }4 g( S7 I7 U1 \! L 6.png
    % V% n6 l4 L. u8 N- Q
      J! D% `6 g* g) w滤波后的椒盐噪声图
    / D' ?  |2 M/ r5 J0 {; W* p& P8 y9 Y6 d- k
    7.png
    & L& Z4 N3 }4 \$ T) p
    3 P% m& |: l/ a! Z8 b) k0 v结论:, H, Z" B$ }7 b5 D
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。* \( m& q$ F% i1 S, m
      ?% y: L6 z$ R1 y  v$ m
    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-10-15 06:03 , Processed in 1.148563 second(s), 54 queries .

    回顶部