QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4329|回复: 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
    $ Z# n" u: s* y/ f/ T7 s7 R
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    ; q5 C6 T+ B9 g) ]$ `
    9 `0 z; |3 `  B: a* j1 D' P#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置0 l, w! ^0 Z6 ^# v7 z- R- p
    import cv2 as cv        #导入openCV库& n5 }& k7 H" ]
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    ! S% b0 N7 P( ^* }( y! ^/ P                        #必须首先安装numpy,scipy,matplotlib' }/ Z0 }# V. y' G) s1 Y2 A
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。. F$ L/ ]$ M4 L* T3 n2 }1 [$ t

    * p0 [" q% x. t& t
    ! w: g# R0 n6 ]def boxBlur(img):
    / w% Z+ |# V( j7 x5 ?, Y' y6 J    # 使用5x5的滤波核进行平滑; d* D0 K$ |" R! e/ Q- r6 b
        blur = cv.boxFilter(img,-1,(5, 5))   
    ' q6 ^* Y, b, R. u& t  ?3 i8 c. ]    return blur* `9 Y) I8 y" `, J

    # O- a( {. y1 O, f' r% W5 f9 i! X4 F  W2 Z+ e; i, W
    def gaussianBlur(img):* t) Y! i" a) S3 }
        #     使用高斯核进行平滑3 y( ^$ d7 C; L$ k
        blur = cv.GaussianBlur(img,(5, 5),1.5)
    1 O5 d' t' Q' U' E    return blur  F1 {, L! X  U* L

    . I4 Z9 H  a& h! L- H0 v) m+ D3 j, K) @# D/ j& Q1 v& f
    def main():3 P- O( g9 {  o- q
        # 2. 定义图片类img. X! e1 f: R4 Z/ E
        path = r"C:\Users\98238\Desktop\Lenna.jpg", L3 j- C) V* j
        img = cv.imread(path)
    ' c1 J3 t' C0 o/ _+ N, o6 r+ Z    start_t = cv.getTickCount()5 V6 q9 X2 b& v! z( E
        # 5. 加噪声,绘图# r; T, J: X# e
        ##############################################35 x& _, K& @3 t/ C& g
        # add gaussian noise5 C$ \; G7 b; p" ?1 y( F( [
    : r+ h( D0 ~  }/ k
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声; B8 ]. u* D# Q+ \' k, n) W
        gauss_noiseImg=gauss_noiseImg
    - U1 I- e! E, R) V0 b9 v& h    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    + A% w+ Y- x5 X' ~- p/ K3 }$ g$ C* |* J9 h' a' v9 e
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波0 B6 e, g5 X; _4 J' c( }: q
    . |" A; Y, r, D6 d9 N! _
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波+ ^) ~1 A! O+ e$ n3 b
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释* [% ~8 z) Y4 M, j* j9 x  r- Y
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    ! ], o  E8 ?9 t; U6 q, w$ S) E8 \
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释) Y) g% f! c1 l* i
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释  v( q7 i/ h# Z3 M8 h

    2 Z0 y, ^0 A1 Y/ ^2 v
    - `7 D1 F& g( m4 c: w  Y8 w4 W    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    6 o! {- P5 N9 _& Y    cv.imshow('Original Image', img)#输出原图片# S. I% D, K# u0 T' J" z4 S
    8 g" j: f- e$ G: I
        # Gaussian noisy image
    2 [* p3 ^6 _) G0 y+ A    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题1 x$ P! x& }$ O7 v
        cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片0 I  w: J5 L) P, v. `' X* _
    9 z& u) S: @# a% @' ^1 b9 l; _' K
        # Salt noisy image
      I' ?( D" D5 d) `; A$ Y4 x4 P6 m% w    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    5 U: r) z6 @4 {9 L    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    4 P. n0 f4 w/ i' Y
    ' n8 L7 g: F9 ?* c9 ^    #滤波后的图像
    - k# B* u. k  l' @( P9 o3 |% H    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题* M" z9 ]! n( q3 X& w
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    , ]( W0 T# s& T9 ~6 _! h  U5 o' [0 ~    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    * I7 Q5 b7 D/ {% P8 r1 h    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片3 }! P6 W4 h( T& C
    . f* e6 D4 @. C) {( G7 m
        #####################################################4 b" S4 |2 z& F. g
    9 m* C* q6 u" l5 k6 J) d/ I
        stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间& J4 H: _8 w" j( ~% ?

    ; F1 C7 G  v" r! S( W: `& c    print(stop_t, "ms")#输出时间并加上单位1 X" V0 |: q& S. x6 e! e! }
    : _$ @/ ~" ?8 y% K4 X# x2 U
        cv.waitKey(0)
    + N' ^! D8 a: h( c1 z2 N% P5 q    cv.destroyAllWindows()7 U3 @2 }* `- p  h/ e
      ]" P5 V( J# ]
    3 Y' f2 I- V9 P- s9 e
    if __name__ == "__main__":
    ; ^- y6 w5 _5 L8 ?) _    main()" G' C; ~* Z; O
    9 d& \% d1 v4 f. ^- W
    原图如下
    0 x- {9 N& @1 @" }0 b
    & z& g& ?5 p& y' u 1.png
    + e" u7 K3 ^! |$ F# N4 |9 ^& g
      `. j8 D- p( S2 X3 c

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

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

    2.png $ j# O9 Z( g" j$ z$ j9 _

    , u9 [% T: f0 |1 Y; l添加椒盐后的图片
      l6 C& P/ L. ~: B( P7 e. J' z
    ! {& ?5 E1 k3 v: p' W( f/ J% V5 h 3.png ) t7 N8 V4 ?4 C. ?$ a

      ^- o# R3 N% g使用中值滤波3滤波后的高斯噪声图
    4 a$ O; z8 R( F9 J+ L+ d 4.png
    6 Q  X+ |% d! y0 V* c- m3 q( D( V7 U' M. R
    使用中值滤波3滤波后的椒盐噪声图
    9 L8 N6 D& ^% ?3 j. S& y 5.png
    ( K, N% @) Z8 H! ~
    3 o2 i8 r& d6 h6 w; [) |改用中值滤波5 滤波滤波后的高斯噪声图
    : W, T/ x# l1 [, j$ X3 k/ V& O% A9 U2 r$ d
    6.png + w5 r" u% F. |, [
    - S/ g; D- T/ H
    滤波后的椒盐噪声图" g9 i' y  @. y/ ~

    0 A( {' J) q) p" b 7.png $ h% a0 {5 y( q- u. r& z. z1 Q4 ~4 b: U

    8 j) `$ k- _% b# p2 w/ d& G7 E% y结论:
    4 l8 t: D5 t& n* G4 M6 F经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    6 m  b4 Y# g& j( o- Q6 ]" k
    $ C4 E! @- E' U: q! i/ W
    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-10 12:13 , Processed in 0.468397 second(s), 53 queries .

    回顶部