QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4423|回复: 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
    : r# Q9 n9 N' Q3 D& g1 ^
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    ' v  ~8 e/ I  n$ N4 p  y, D; w- [, |1 t8 O  a. J' e3 j5 |
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置9 Z/ [/ u' P7 n
    import cv2 as cv        #导入openCV库# d, J  e' y" L( V; c" [
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。- f# \" r1 Y. x% ~9 l% L4 O) u
                            #必须首先安装numpy,scipy,matplotlib
    4 s' N. }0 m# a( `: fimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
      R! A# O. {8 U! u* l
    , ]' `" T2 X% @+ z9 O! ^
    $ v2 d5 ^/ F* `- A+ z% }5 X9 \def boxBlur(img):
      n: e+ V: c( x" W* B  ~    # 使用5x5的滤波核进行平滑6 Z: J2 i+ e! i$ c6 m
        blur = cv.boxFilter(img,-1,(5, 5))   
    " f; {8 q* X2 o/ p+ D% D    return blur
    1 E; T  R% j( k0 U
      z/ `$ f+ x" m  ^) ~* R6 }, S+ o/ y9 y( o( t/ F0 M0 D
    def gaussianBlur(img):
    ; z! ?! T0 v; `3 G. q" W    #     使用高斯核进行平滑. z4 I1 w5 Q6 ]" H. b  x7 x
        blur = cv.GaussianBlur(img,(5, 5),1.5)2 _1 m1 Z7 O4 _" `
        return blur6 _5 ]3 L8 Q+ w, p3 Q
    8 N6 S( B" j: G5 P8 R9 O7 ^
    - ~. @8 C9 p9 c" R4 l* D
    def main():- s' d2 H  V" _3 ~* T
        # 2. 定义图片类img
    0 N' z) d1 `5 T( Q# y; C9 ]6 _7 j    path = r"C:\Users\98238\Desktop\Lenna.jpg"5 I; q0 Y' \4 ~4 F! @
        img = cv.imread(path)/ H* |8 T8 s& U1 O# ~
        start_t = cv.getTickCount()
    1 \8 L/ C" `9 V. B# j    # 5. 加噪声,绘图
    , @3 a$ Z* e4 [7 E2 n' S% q& ?    ##############################################30 K) H9 }2 \  ~' X# l- A
        # add gaussian noise
    ) A& y  ~% P: ?
    ! r8 \2 a3 ]2 n# O  H4 t% l3 |# O; G$ s    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声( D7 Y" d. d. `1 g( h1 `
        gauss_noiseImg=gauss_noiseImg
    ! z, g8 M( r& ?' f/ }! W    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    8 X3 V2 D7 c! Z+ j( D- l2 v0 h8 ^
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波) a4 l# F" K/ u* ]
    1 A3 T. |3 U3 p4 q
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波$ z2 v+ X0 H. ~
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    ( C' `- m1 Q, T7 w* D) O    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    : A. R) e0 C/ ~. J0 U
    2 Y. K4 D" G5 S8 K! }8 B2 N' O! q    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    & c" B% R: `) j- T( d; i    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释  \7 X: k( b! |1 l9 E9 {
    ) @$ S5 R$ _5 {" E$ x# e
    ' J2 X/ ]3 \1 t# x2 p
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题2 L# L( I1 K: p6 W8 @1 x) a
        cv.imshow('Original Image', img)#输出原图片+ t  j* @, z% C- k- I5 [. m
    & O; q. s! @2 g& c
        # Gaussian noisy image: z. {5 p3 j1 n5 R7 w1 s* I
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    * S0 ~$ y; J$ k# J( \1 W    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片' E/ h; J( k1 g9 N, l' E' M. C

    2 r, [5 P# L. m2 J& O6 G9 }% S& v8 m7 j    # Salt noisy image
    5 y# |! Y7 z( d& M4 x" P( r2 t    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    , _3 Z0 [; X5 }    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    , m2 f* I: p8 B* E! q9 C; T
    ! r# L# O& Q6 D- p% J* [9 P# [    #滤波后的图像, q1 T: r. h9 i- b# z
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    1 v  D3 W+ I+ i    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片# w; [/ S* \  V! y" A
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    9 [  o2 K/ l- F5 _- E    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片; H5 c6 Z; P: Y" ?
    " r" y# `; z; e4 T
        #####################################################
    " \  d& h* B1 ^( h
    6 s$ C) c; {/ P9 H4 l    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    3 J. L4 m" e) F: P8 T$ g* Q
    + R* y1 x1 l  d    print(stop_t, "ms")#输出时间并加上单位- S+ t3 v& N4 m. r& H: l
    7 O1 N- V8 |. t0 f, \* a  U; o0 D
        cv.waitKey(0)
    : C) b" T& c* w. r. K2 K# A    cv.destroyAllWindows()- _  b  n: w4 p

    ' j7 L6 Z6 R; ^: M  r* u0 `- K0 V$ R2 Y, P7 ^8 _
    if __name__ == "__main__":
    7 c1 k; M5 g! O7 b; A    main()
    7 p* l4 T9 s/ y' r# r& X8 z* h1 F9 [3 \/ e! [
    原图如下
    ' w" F+ c* h: h( h+ @$ q: H: Y, O) c
    1.png
      ]: J1 M# ?7 ~
    , ]) u( V6 E$ d. x7 f

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

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

    2.png 3 P; n6 Q( L* \6 c2 U! ~* J
    ' {6 f3 s, f+ |: l
    添加椒盐后的图片
    " g* _! p" X& }( O; l' v- j. y2 r# N$ c3 o- x# ~
    3.png
    $ R. x# ^- e6 H3 c. i6 B9 z1 @, R
    使用中值滤波3滤波后的高斯噪声图
    $ B* i: F# Y% C. m+ g" E# ~3 t3 O 4.png ( y" L4 y9 w  H( u& N" N! n

    3 f! S( g9 n! W使用中值滤波3滤波后的椒盐噪声图" A# V! i$ q" ~2 t9 P4 E
    5.png
    ) Q7 V+ `  A" Z% d* D2 K8 l2 F' a5 e" l9 v, `9 Z7 N
    改用中值滤波5 滤波滤波后的高斯噪声图, i' L, g* [  m. J
    % ?% z' H$ _( u# l) n
    6.png
    ) e" |/ i. b4 }
    3 b4 S0 O; n% A; E5 V, l8 v0 u; T滤波后的椒盐噪声图
    * e% m: D' W2 v" C- ]& G- Q/ }$ U. i5 A% R
    7.png
    9 I7 b% _- R. |( Q
    8 o6 {( b- z) Z9 N, A: H结论:' S1 L1 q8 X8 Z; N+ P: Z
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    0 G1 S8 |# e/ K* |5 A& U5 R, I& N" c3 {
    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-8-26 17:10 , Processed in 0.466706 second(s), 54 queries .

    回顶部