QQ登录

只需要一步,快速开始

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

    5 c/ K2 E) B/ z图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    ' l1 c1 Y# S7 l" f0 B; O# N
      Q0 S+ h7 G  Z$ z! \! B1 D) R5 ]: w- D/ l#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    , }- g) A* ]2 S# G) z6 ?6 I: `- Mimport cv2 as cv        #导入openCV库( W. a% ^  P! [$ C' e+ N
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。2 I& u  ^  d( v: V
                            #必须首先安装numpy,scipy,matplotlib. F1 B/ E6 F4 `1 ^6 X6 L. x6 M6 Z
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。1 B* }& Z: G# O) I" C& c, v3 Z

    # G3 \( k( ^+ G% P8 V9 h, P5 Q3 g
    - v  m" f8 H) z( r& adef boxBlur(img):5 z$ i0 G6 o. g& L* L& f& v$ h0 s
        # 使用5x5的滤波核进行平滑/ ]6 A4 o2 X  G# H  y3 V
        blur = cv.boxFilter(img,-1,(5, 5))   
    5 t& F* N* Y# |: g$ f    return blur
    % ~- t& m2 E: e
    ! j- M- j% |+ W+ h6 }5 x( S0 ?: M. I
    6 A! w5 A; j0 N$ Vdef gaussianBlur(img):7 S2 {9 ]; G6 T$ Z2 S
        #     使用高斯核进行平滑  z+ n4 `% P. t8 {. }5 [
        blur = cv.GaussianBlur(img,(5, 5),1.5)
    . Q/ B  `& q0 M: ]9 o- C, L1 U    return blur; y( j$ D% |' S, H" _4 n+ K* x. Y& p
    & d7 m3 |; E6 [4 B4 ^
    ( ?4 r9 }" R+ M: ~% ]! n7 F& T
    def main():) h$ w+ M4 Z+ `. I
        # 2. 定义图片类img8 B) K( W9 U' H$ G4 f" ^
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    , Z( u8 {5 W) u. d& M# g/ z. {7 J8 ^" F    img = cv.imread(path); e; c% S8 v, P" b2 w; q
        start_t = cv.getTickCount()3 R2 Z2 Z. v6 x* N
        # 5. 加噪声,绘图
    3 K' b/ E* C# W0 [* I    ##############################################3
    2 n" o: L3 z" v. c$ n, H% u    # add gaussian noise9 C. B( ~9 B) N+ H  c5 K, L

    3 t+ F! P3 j" M  l" b+ c* I. M$ ]    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声" l$ D" d- k  }2 ^& j7 `5 A
        gauss_noiseImg=gauss_noiseImg$ b9 q/ ?" K; ^( i% g. s, i
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声7 R8 A' [$ G; c( l' A% c8 G  R

    $ y8 [! F7 D0 [% l( Z7 X* T    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    & M4 |1 I" i- c3 ^7 a  A
    ( W. d+ H: S4 f" v4 [- s( e- V  t    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    7 h; q8 }5 D6 x8 r    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释" ?. [! j! z5 u
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释5 f' [. x0 Y2 H1 i

    . K0 N3 D/ z5 i2 h6 x' }    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    % U" e5 H' ^- D  h: d    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    - `* a( f- b" \4 [( k
    8 y, T! R$ ~" c2 p  }1 Z5 A$ r% M  f7 {/ ~  ?8 f
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    0 C3 {; f+ A) L/ }; L- A    cv.imshow('Original Image', img)#输出原图片: _1 ?& ]: q  W9 q9 E
    2 f! A& M, Y% t1 i- {9 G
        # Gaussian noisy image
    6 w! t6 S+ V4 h: K3 b  [  f    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    2 d" x% F% W' @: U2 e! r    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片2 F; X9 i2 h, b* m5 I6 |

    3 `4 \5 q9 d# Y" @    # Salt noisy image
    ( V4 T$ {: J$ E& m2 \4 T% K3 Q    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题% ^& h9 Y) }( w, ~; p/ X& I% M) r
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    2 R; F  I! \! j8 t/ {" B. k7 j  v) u' P" {
        #滤波后的图像
    2 E, Z( S3 K1 D/ A: C    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    0 v( Z) G* `+ a+ ]! T    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    $ S- h! p" O* l! O$ @    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题4 V; }; P  V/ }" z# G  ^1 j
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    ) l# _* A9 u# j0 t  J9 A1 P
    ) c3 e) A4 T: i2 ?4 S5 _    #####################################################. t2 n# `: t: p$ {8 J. f
    7 O& h: Q9 ^9 A6 _% |
        stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间. n- p& R3 w, Y5 d3 I- s1 c

    / z" y; ]) l, }, p    print(stop_t, "ms")#输出时间并加上单位. X1 i% h, T& k6 u
      }0 r# i3 g+ T+ ?
        cv.waitKey(0)
    6 y, N. L" |9 r# a7 M    cv.destroyAllWindows()- o# n# n4 r9 T

    8 ~' Q) @- a5 L. `% ~' o& u
    0 ^& Z, X; U. H- b0 f" qif __name__ == "__main__":" L1 I2 R* G! Y  y$ T
        main()7 f$ i  \; v2 h% Q. p3 x

    : }" j; b( a. T- q6 b, z" m原图如下
    4 h9 H% O! O) u! w+ v3 k$ q, o
    1 x$ @0 L/ C, m! \+ K4 T 1.png 7 @0 Z$ I  X2 L6 F# f
    ' L( p. ~. u- L$ |  C3 `* y! y

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

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

    2.png
    " A) x  I; ?  T3 l9 k
    * h; v6 W7 C0 r5 O4 @/ t添加椒盐后的图片
    5 ], L/ A2 A; Y) G1 T1 E* M) G7 o  U1 V2 S' a* d$ q
    3.png & L4 M3 \3 k5 ~, i& [* y$ I9 M9 {2 \
      D' ^6 i. P* m. D6 B' E6 t( l
    使用中值滤波3滤波后的高斯噪声图
    5 {. Q% n4 L9 M$ { 4.png
    1 `' z9 d+ I! m; x& A8 \' j7 K; m
    使用中值滤波3滤波后的椒盐噪声图# r0 z8 g: T6 l
    5.png ; `2 d; o6 j7 m$ L0 u! L
    9 \$ b3 H& ], R- p+ B, l$ d8 z3 B1 \
    改用中值滤波5 滤波滤波后的高斯噪声图
    3 K$ Y! m% |' r9 Y
    * a* K; c4 E* K: j+ ^/ b4 M- Z( Q 6.png - b$ P2 j! f0 H: n% \9 L

    , I; ?$ a: C0 T滤波后的椒盐噪声图
    % E6 z- K* B& W/ ?4 ?! F
    ) v' n: }$ W( x8 D7 P! L; N! R 7.png
    , F* u: v, G, |" P" F' p; y* M
    0 n+ M. Y. _) N. y! b结论:
    ( O) [' P* ]' g# i  d! L0 b3 c4 ?经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    + O0 u0 ], Y) Z' P; U( C0 H& }$ W4 d
    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-9-12 08:19 , Processed in 0.345191 second(s), 54 queries .

    回顶部