QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4127|回复: 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
    : X, O& p5 `+ u# ~
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。9 {$ _$ ]/ q9 D) I" [, Z1 l. Q

    1 n" _; n0 |+ U9 ]" j; \8 u#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    # W" P5 V' R, _! Z. vimport cv2 as cv        #导入openCV库
    . t, [9 A8 R9 z3 pimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    6 {8 U6 j2 x5 {: p' I4 ?                        #必须首先安装numpy,scipy,matplotlib9 W. J6 L. M: s3 n
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    3 Z0 S1 r& R% |& f# ^6 f
    ! a  {8 q  ?( V
    7 V) K& D9 T  L7 P! l% xdef boxBlur(img):
    ( Y: B- G; c6 x5 L. H3 }( u    # 使用5x5的滤波核进行平滑) Y( x6 |# a1 |+ M2 p4 M
        blur = cv.boxFilter(img,-1,(5, 5))    ) T8 d2 k) i: |7 [1 h; w, R
        return blur
    4 X3 V- o/ w$ D$ t* C8 l& Q1 ^" y0 q, E) B4 V
    6 j& b- W: d3 F) G) a8 s/ P( r' l8 L& A
    def gaussianBlur(img):+ _  Z' \1 n& [/ e1 w* z9 A$ E* }
        #     使用高斯核进行平滑. ?4 Y, i: s1 a5 _( `& V
        blur = cv.GaussianBlur(img,(5, 5),1.5)$ e+ [$ V, o( E7 E+ z. L; C* \
        return blur# v- @) k6 w$ {7 c  l0 A7 v

    5 Y1 o& [; q( d! x3 @4 I' F3 X* d( s" W$ j* y
    def main():1 \& ^( s: j- b+ h+ y; K/ ~
        # 2. 定义图片类img% X% W! X4 Z8 Z4 s3 s( [* @: m
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    1 l- s& v& L4 S% |( Q  }8 ~    img = cv.imread(path)# ~$ ]$ f# u  T( @$ }
        start_t = cv.getTickCount()
    6 r& r4 Y1 O. D/ u  ?! ~5 z, Q    # 5. 加噪声,绘图2 c5 D4 Y" I$ A7 p6 k# B! v6 k0 E! h
        ##############################################3
    . d/ U. J3 l- c) d& @- {( |% U* ]' p    # add gaussian noise
    ' y; R+ P9 T8 D* o' J- @
    0 D6 _1 Z% h: }2 l. L! }5 u. N# R    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声6 V, a* v/ e! \0 d( I
        gauss_noiseImg=gauss_noiseImg
    1 f$ V* W1 l- ]3 {4 g% j8 i" f4 s  X    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
      Y2 V/ c- ^" H* y8 ?. J# J8 m1 Q% Y
    4 L  H1 f0 I3 A7 I& e    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    & e0 p2 D$ O& D$ s  v9 }& o- `, @  W
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    , Z+ ^1 X, {$ p5 J$ G    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    + X3 j% v7 G5 b7 x' o3 L    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释% x) ]; ?. U) I4 H( c
    " b; n+ V% B7 p! J9 K8 V
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释7 `% d% M6 c' s# O1 y& |0 [
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    2 X* g8 W$ s2 p5 O, E2 R, y3 I' n6 @: W6 `- X8 b' A
    1 F, v; Z( S, k, G1 r
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题3 F% [! H' ~; W: K) D0 C" l1 z
        cv.imshow('Original Image', img)#输出原图片
    9 v; J8 C' i3 v- @
    " t, |" l$ G& z5 b  M: F    # Gaussian noisy image: X% q* G0 x6 Q* v5 D6 K: S/ i: v2 @. j
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    * l0 {% c( E4 X+ s4 K/ |3 W    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片. L9 ?. J+ Q9 t6 _, R/ `# U
    3 R( [6 z; @( g9 G$ f3 J! c' P
        # Salt noisy image9 p$ F% i- r* J4 e; o
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    4 ^" B$ w) y9 {) O. u    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片$ ?$ M/ w9 u# p+ D/ Q2 |# @

    : S6 Y' h, l5 {! G    #滤波后的图像
    " ?2 p2 Z, ^% W, h    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    4 q$ G' C, }& `* @. \  O    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片1 c' {  C( x/ |1 X1 A) ~
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    ) Q) I8 B# Z" D( ?1 W    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片, q% C. l( W$ w+ p) I
    8 k# e. y/ \+ X# B1 `
        #####################################################; H; ]7 j7 s, E2 O8 p2 r2 e

    ; Q* f: x' m# ]    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    5 y# \2 H- w% h0 I$ C! n5 X: K/ t8 }9 w1 ]8 }, y
        print(stop_t, "ms")#输出时间并加上单位
    , D8 Q+ L( g; X0 O6 R, @5 P1 L" l1 p% e# I7 X" h6 d
        cv.waitKey(0)
    : W  k9 K+ Y2 }+ _6 [4 Q3 p    cv.destroyAllWindows(): m" {; C  p; [! m

    6 E- }. c  n3 W$ Y+ z2 T" D  b' ^8 W2 Q
    if __name__ == "__main__":: e% p0 N" R; {5 n: Q! S- G
        main()
    . i9 h( r) K8 f9 n( x9 |5 M' p. D6 [% d" y" t4 [4 ^: k
    原图如下
    / V6 P. S2 `6 E7 t4 P, Y% X, e
    , V7 D# v: b% S4 S! r 1.png : y7 l: x# G0 {/ _2 C+ m: Z( g* p
    ' f7 i" l$ R) d

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

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

    2.png
    ' V% d( p# o3 P, I, v- a2 P+ l8 ]1 @. `# m" F
    添加椒盐后的图片3 H# K9 `" W7 ~& I1 o
      ]9 r: n; z% l# B% b5 B
    3.png
    9 p2 N; d; X& O6 Y* X+ c
    + S3 b, A7 M. w5 A% E: ^7 @' |使用中值滤波3滤波后的高斯噪声图/ D: `$ U. d2 _- k0 \
    4.png + [6 W7 d8 u) ?5 {! R( P. z$ Z9 n
    1 E+ @9 v$ }3 P3 |' z" h
    使用中值滤波3滤波后的椒盐噪声图7 s2 B! _5 a5 K# e$ \- M9 J
    5.png
    6 \! \# ?8 v1 H; r; P9 b
    , _& |6 p# A$ @! q; h. Z: R6 _改用中值滤波5 滤波滤波后的高斯噪声图/ o  y5 q/ y( Q8 x! W$ h% B
    6 n; F( W% l) m3 f2 Y
    6.png " p1 `$ C+ \) u- z9 @. O) j

    + Q6 u% G1 [8 t6 f# s- z; Q6 o5 P( G滤波后的椒盐噪声图; T  ~! Q6 H5 _+ _

    . u# C- p8 t5 k9 R9 Y, P7 {  @ 7.png   Z8 r2 C) k+ Q, A  @% S( G% Y7 c7 |
    ( o4 C8 h7 j. V" j) W
    结论:
    & [. P2 ~( E9 g& V) M2 c& f经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    ' {; ^" e8 N+ D1 A' S) C
    % X8 B' Y5 e3 e% m) M" ^- v' {1 i
    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-18 00:04 , Processed in 0.664067 second(s), 53 queries .

    回顶部