QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4120|回复: 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
    2 I$ \. b. u5 P! @6 F% v( x
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。( G  g& j0 d* A+ y$ }/ q

    # R* B: y& n" D$ G8 x1 ^#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    ' F5 q; P) Z* |import cv2 as cv        #导入openCV库+ t. L7 T" g& y, r) e5 P
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。% c8 n# j* q% y4 {" V
                            #必须首先安装numpy,scipy,matplotlib2 ~2 [+ j2 w$ m4 V3 ?4 }
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    / e8 R. Q/ a/ T8 H4 k2 J& J
    0 r7 C+ k) a" l. Y  r; z% s6 u5 A% l5 e' b% [1 m6 k$ O5 F
    def boxBlur(img):
    # j! \! j1 t) A3 W# p* h1 D7 y2 [+ C    # 使用5x5的滤波核进行平滑
    " B4 b4 S# i! [9 u+ t    blur = cv.boxFilter(img,-1,(5, 5))    $ A) _& U! }# R, G) h% w
        return blur# ]* P# h7 Z3 z, L, y) t
    ' i3 s/ \  n1 X
    5 t& y( [) K1 h5 M3 `* V
    def gaussianBlur(img):
    " a  N: t) M$ @: G' X8 m    #     使用高斯核进行平滑+ l; {3 h( b7 Z2 s
        blur = cv.GaussianBlur(img,(5, 5),1.5); s2 A% `# s3 t! v1 O
        return blur& V6 w7 r( ^6 h3 E! r; h7 J: ^

    ! U; w- S0 p& q- X( S3 l6 q8 X# v. Z' U, K+ L! d% h
    def main():% ~2 ~! M6 Y4 i  c( z% v/ p
        # 2. 定义图片类img( m7 c, K0 h) N1 I. ^  z
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    ' F0 T% g! x+ @    img = cv.imread(path)) Q6 y4 G6 i1 w1 v& B! L
        start_t = cv.getTickCount()
    : W9 m( r# @# M& }! Q$ C' J    # 5. 加噪声,绘图
    / v6 w$ x% u+ X% g' T. ^3 K; d/ S    ##############################################3
    4 O( W* D/ t% s. ?% H; [; |    # add gaussian noise0 D+ D- x8 C( I/ A% F+ Q7 J

    / X& }0 e7 N  k) o) K9 |+ K    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声. h: g- {6 t) T, Y% a
        gauss_noiseImg=gauss_noiseImg. j$ L7 P8 F: b, H0 s$ t5 h' X4 R1 M9 [
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声5 P: Y  [. P* i8 q2 w

    8 }& v8 H+ j$ p$ J: P& g& [    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波& Q1 N8 i* ~! a# ?/ C4 C$ z
    * c* ^- e' Z/ e
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波# Q! b! b9 n, H0 d; W! X$ h
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    , u$ C/ ^! f0 D' z% i# O' k2 i    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释- E+ B7 r. w5 e6 u3 d- h+ H3 S
    * a+ t$ S6 x' k4 U4 L. I7 d/ B
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释4 q9 I* W( P3 c" ?
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释4 x# j! g. B0 [9 x

    1 M$ o( J- Z: e6 x/ T9 f0 T$ _/ g  I* ~% f" G- J  ~& A
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题) I; X2 J  ]' P5 ]9 i+ m3 W
        cv.imshow('Original Image', img)#输出原图片8 w( }: f) h% ]& s- _: h- o4 p
    # Z. _. L! Z" o/ \5 {  d
        # Gaussian noisy image: b9 G% A1 @1 N; e$ g
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    % [! r) ?2 F- Y0 e    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    ; ^0 Z; f& Y6 _0 w- W9 ]4 h
    2 G2 P! ?2 a5 H7 T6 L- J/ j    # Salt noisy image
    * t4 R) I$ Z8 B4 \  L- ~0 m& J    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题7 r% n6 W! g& |; g+ S! _: Q1 ]
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片& ?- u  F9 F6 ?. x$ i' g* U

    % i2 ]. x1 X: I( Q4 V7 Q- d    #滤波后的图像# K: V0 Y* O: ~, {
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题0 _; [3 C/ M. b0 k; b4 q+ M) H3 u
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片, S" O! L" J1 E6 \
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题  k' e4 J- T$ R) V; w
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    $ i, K2 T1 o' ?3 J1 b0 E4 @: f8 t
    7 p9 |! U/ R, O3 @, `" m6 J( V# U    #####################################################/ \) [. x3 Y3 ?* |8 X

    * o. |1 d2 K7 B$ J: \    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间* I1 C7 I3 P0 d2 n
    # S: H, G% c$ w, ~7 |- I
        print(stop_t, "ms")#输出时间并加上单位: T2 ]6 W8 V; @7 Z

    - _- O4 p$ _1 M) b    cv.waitKey(0)8 d; g5 C6 D1 C7 I( x$ m
        cv.destroyAllWindows()0 R; |# ?  u8 [0 U

    * N: T" c0 v8 o, V- Q" A
    & ^8 G# U/ a+ R$ c0 [if __name__ == "__main__":
      y' X! E7 r' a" f7 r    main()
    9 L. y1 o$ Y% [/ B6 [1 P
    . ~) T% i9 a7 Q  J; w原图如下
    - G8 W: x/ }' |2 c# S
    7 S) q# D2 }. _" y  b0 y3 w& S  }! ] 1.png
    3 Q9 G: G5 x/ w% v2 N4 M6 r
    $ J4 v- A( O: r4 @8 H( C

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

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

    2.png 8 ^" |( Z( [" _$ V4 N! Q
    ) `3 f# v  s# x$ Q# z; ?0 _& b- D$ ?& W
    添加椒盐后的图片' K! t4 @) G3 h' v

    $ U# K, F9 B# t6 Z+ H1 X 3.png
    # k# i5 _7 G5 J8 x
    # n7 c9 ?  A* w: l+ m! i: f# Q+ u使用中值滤波3滤波后的高斯噪声图
    % _. I; w% y2 s 4.png % Q  D, u5 ]0 k, S2 y6 R
    ! H. a! f! g* {/ K
    使用中值滤波3滤波后的椒盐噪声图/ Y, u9 }& s0 r  w: Q" t
    5.png
    4 I, k8 n: b' X' v3 A: k' m. U, M: ^* K4 A
    改用中值滤波5 滤波滤波后的高斯噪声图; F& M1 G% r9 r6 y8 I9 f9 l& d9 }  [

    2 M+ s, ?! j" H$ X6 A# J 6.png
    6 `, \" H: e# a+ G  m) s, ^# K' U1 T% N% j% a
    滤波后的椒盐噪声图: s$ u4 c( z/ O; f! X" ]
    2 Z2 E: I5 r- q% Z- D( _
    7.png 7 [& w5 P% y: N
    ) H+ ~6 I! p( _+ d! S
    结论:8 ?! z8 s8 u1 t* j1 E0 g
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    7 M5 K; f: U+ _8 b) E! f0 V- M
    4 Q$ B2 }5 U1 }; g7 {- |
    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, 2025-11-16 20:35 , Processed in 0.397083 second(s), 53 queries .

    回顶部