QQ登录

只需要一步,快速开始

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

    ' z1 u8 l1 K1 f9 h图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    7 w7 x9 y/ p  X
    : r8 i" I0 `4 B+ P& y#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    ' ]4 s; @* q& h! g" Z: G$ Oimport cv2 as cv        #导入openCV库
    , Z& T7 n% P7 Z: i  a. Yimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    , e; D  i9 j" k6 V# r% X& ]                        #必须首先安装numpy,scipy,matplotlib
    0 J* E! }& ?# m) Eimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。, S$ c% x9 ]2 y8 ?8 v

    " H  I) j5 w& ]! f! y4 P( |# ]* _2 s* o2 J
    def boxBlur(img):! C+ K8 c  t* h
        # 使用5x5的滤波核进行平滑
    ) R1 M$ p4 Z4 Z! i    blur = cv.boxFilter(img,-1,(5, 5))   
    ! @8 L% z7 ^+ ]  ]. a* e    return blur. u+ b0 O8 [; |' y+ S+ E

    / m. Z5 b# v! U6 Y
    / a  K: F+ u9 T2 Z* }def gaussianBlur(img):+ W2 O: n! a" J: ~: s
        #     使用高斯核进行平滑
    $ |, k8 [5 d+ N6 }7 F    blur = cv.GaussianBlur(img,(5, 5),1.5)
    ; b! E& D- e3 k6 I2 I! \* ]% z    return blur
    1 ^8 l8 v2 A  X8 w8 K
    6 f, s0 H0 k5 s  l
    3 H- F9 `0 {8 bdef main():
    / }) a; |# k$ j3 ^) i% O    # 2. 定义图片类img& p3 E* f9 j1 ~
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    * u/ @% t3 z$ B9 n1 k% Y7 X    img = cv.imread(path)
    # o- z  G8 J0 |/ c: u" Z    start_t = cv.getTickCount()* H9 V  r) g8 u
        # 5. 加噪声,绘图. {5 t+ ~1 W9 F
        ##############################################3
    4 C' C, `5 E( M7 x' L& ^7 q    # add gaussian noise
    8 k7 y0 N2 l. o/ J+ J4 ]* x$ r
    4 F1 E+ ?0 X! J/ b4 o4 l    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    1 I9 l$ }" b6 i* ~- {; |5 x    gauss_noiseImg=gauss_noiseImg
    1 e! K! e3 L3 `( I* w    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    " k- l! C2 n$ U
    4 ^, g  g0 I; L5 w! @+ G8 H    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波; H1 ]2 n, Q7 R- K% W

    5 g7 ^/ c6 |4 x" d* ^$ A+ x: g2 H    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    & g5 V: J2 S2 h* j    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    ; M4 z3 x) T& ]( e7 q    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释5 [7 V" l. d4 ~; e& F4 {
    , ?" }( X! k8 v% g/ ~
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释, K* A7 O! [9 y# F5 o4 A8 }
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    ( F9 Q( _% u% J  y+ @4 w5 k7 H. l
    " D; \% @2 ?6 l6 H
    ; J4 }( v& J! H+ ~2 q    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题$ ?& _! }/ K$ Q% Q1 W$ {5 s' Z
        cv.imshow('Original Image', img)#输出原图片
    ) _/ n/ s" o6 r# R1 L" T5 R4 o) g, g, y# `
        # Gaussian noisy image
    ( C. L% _7 m) `+ B4 W    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    3 X- G1 j  H8 j    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    5 a( U7 _& [" U7 E- p& r( Q$ X
    ' L- A: d' T  A! @1 I$ ~6 e! X    # Salt noisy image. s7 w+ ^- ~6 N! S
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    2 ?# z3 h0 R# h$ {    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片( a% o. o3 p3 L4 h; P" h- F
    7 p9 e1 U' y0 l! R; o  ^0 @6 o' D: B# z, ^
        #滤波后的图像
    8 H5 N0 j6 W: b- `0 X& j  j* S, C% s    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题, g+ S  D4 c2 L9 X+ R
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片$ p5 k3 J7 X* {
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题0 G4 Y4 }9 e! F( r6 T
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片. v' v( X+ w) D2 g" _

    : t4 m6 ?: }; M2 K1 Y: I: A    #####################################################/ O& j4 F. s' t9 f) ?

    4 z* U. l/ R2 _' N. A( G    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间6 _! E% d) Y$ i) ?6 t. _% ?
    ! f, h# M. Z' K& V0 q- b
        print(stop_t, "ms")#输出时间并加上单位" m6 X1 }. d$ s6 a8 J
    8 J! Y" K  N' ?; b9 k; W4 z
        cv.waitKey(0)
    3 _  M2 J% J) S) K* m+ S+ z    cv.destroyAllWindows()
      |2 c6 n, ?3 ^* m/ i, `* P8 U: T
    / t+ t3 `3 j  P! d
    ' ~) E" @& z( b# [; A' C0 b& L5 _1 aif __name__ == "__main__":
    . t: c7 u! T) s3 s1 r4 b/ I# _& g    main()5 q8 e$ _& q! S' g! Y( X

      \! H) P. X. A2 M1 w# T# [4 ?原图如下
    1 |: M) d: z  L3 ~# o6 ^4 j7 |! N
    ! v9 Z. J) ~! v5 v6 v3 [2 H" o 1.png
    " V6 ]; K. C: N2 c+ G
    , \1 `, ~; R* G! t! s8 z  M& l) j

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

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

    2.png ' V4 c! F; ?7 Z  \# k

    . r/ }# r: V% o* H" J添加椒盐后的图片
    / Y4 U, ]9 r3 o8 d3 K6 `0 D- Y, j" d/ e  J3 T0 @4 G5 L
    3.png 8 D9 X' `; e6 U8 f- G  b  L

    # E0 `1 u0 }- p, D. n, `' h3 p使用中值滤波3滤波后的高斯噪声图7 _; }) D; |5 v  Z0 k9 E
    4.png % l' P. {1 X: ~
    0 ^8 J9 p$ R5 H, }1 X5 h4 q+ F
    使用中值滤波3滤波后的椒盐噪声图6 u0 `+ t; }  [; Q
    5.png
    7 `: o6 `* y+ t) B. B+ B3 t( u
    ; ^$ i  |1 |( ^4 R+ `! g+ a- y改用中值滤波5 滤波滤波后的高斯噪声图; x* s" ]6 v1 Q/ {/ {& {5 ?
    # F' {/ h) g) }8 O& J- U2 H
    6.png 1 P7 v& S9 O! n6 E0 s

    ; p# `# _1 u! c: ]% F% n- Z滤波后的椒盐噪声图/ e4 x& R6 g! \; k$ @1 S; @

    $ {+ E* _" j, d. `, n 7.png
    1 a9 Z/ L: C1 u+ m+ ?8 W4 F) {/ p- O: a; ~4 U$ O) i
    结论:5 [  h- F) R4 I3 ?
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    8 R' D9 g8 j( \! F) A4 Z/ D7 {2 ^( o+ {* J
    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-13 12:20 , Processed in 0.442258 second(s), 55 queries .

    回顶部