QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4397|回复: 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
    * ^8 D* ^( j* G: T" {
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。; Z; d* S/ y% n0 J0 \2 K) X

    " I: L5 |# u. u( r: B% l  [2 T#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置! ]6 J7 O2 a3 t8 l1 t1 l# i0 W
    import cv2 as cv        #导入openCV库
    ! q2 t: {/ y5 n& e8 fimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。3 b( Y5 k2 z. P; U) G
                            #必须首先安装numpy,scipy,matplotlib
    8 }! @+ T' @) b6 Rimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。* e) a$ W/ _, w3 X

    ( i) ?0 `1 l3 q9 h& Y& n
    9 H8 w) S; s6 A+ A1 r8 N# Ddef boxBlur(img):- B1 z. B% D, ], w- R) H; z* Q
        # 使用5x5的滤波核进行平滑
    : V! U2 W0 K. s1 P& q* j- s    blur = cv.boxFilter(img,-1,(5, 5))   
    1 v7 O0 [- K, G" ]4 n* g    return blur
    + A! |# c4 x9 B$ s" l! s, n2 z* S" y7 B% E0 R
    2 u2 h3 B7 n7 T
    def gaussianBlur(img):
    6 z. c! u4 q' V) u1 H  Q: L    #     使用高斯核进行平滑
    8 f0 f; S% n& _$ W4 c    blur = cv.GaussianBlur(img,(5, 5),1.5)4 a: c: F  A3 u
        return blur0 L6 q1 Z0 @1 X  r# A

      i( h1 h- |2 S- j. _* a7 F
    % E6 y" B0 H8 S) E% _; a1 Fdef main():/ \, h! L5 |% i: n7 ^
        # 2. 定义图片类img+ L1 ~- ?, y+ S# r& l# F' O
        path = r"C:\Users\98238\Desktop\Lenna.jpg"6 @  a/ ~6 G4 R9 w; U
        img = cv.imread(path)
    ) P6 J" [# d, |  k! \/ {! B    start_t = cv.getTickCount()& A& @1 P5 u- }) H
        # 5. 加噪声,绘图
    : P( F9 z- Q+ H1 q5 `! S, N" }    ##############################################3- ^" P) I, k6 ~- \0 \
        # add gaussian noise$ x  S3 D; I2 P$ s

    ; }6 `* `% x) t    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声# ], w* w' y* s9 O, m
        gauss_noiseImg=gauss_noiseImg
    # _: L/ u* n5 m    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声" t$ k3 A" c. Q. |! `/ b
    + b, S: u) l  ]: g7 o
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    # @5 D1 \8 A; U5 o: i) `6 }! |& M! p, {) H+ l' [+ T
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波6 C( n: H/ w% F+ z
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释) u- P9 f) Z. j' c
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释$ ^# m* s5 W0 H

    3 A/ y* l$ \0 s! C/ w' ~    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    1 H* x5 v$ O: t3 N/ K, O; @* E    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    + F& T. Q& I  h9 R5 }/ f! M' l1 m; o3 v; Q) B0 i
    * M& ^* A  E% e/ l+ B6 n
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    . a7 a' I1 C4 ]    cv.imshow('Original Image', img)#输出原图片0 O7 Z* N1 G" W( L' v1 Y8 i& C+ J8 B
    6 l( W' P/ g2 b: ^4 k1 a
        # Gaussian noisy image
    ! U1 T" `  \: {" Y1 P: }0 t( v5 V    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    7 G$ o; @* B8 K0 Z: i    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    * G! ^2 q( \- v  F$ c  o
    3 j! R6 H) }# G& }$ [  [% \    # Salt noisy image/ [  |! U9 X" X- P* T- z2 ?+ Y! W
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题- f+ C. h" g! [0 `8 V' }
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片" T: j) H5 ], K2 \- a- ?

    + z- Q: k# r0 u0 O& t. B# w    #滤波后的图像6 n" G% _7 c. _2 V6 O5 z" k0 w
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    ! o8 F, K) a3 j) W, v# m: d) e# }    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片' s3 E: r2 @* F# T$ a+ S
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题0 t' p( [! C1 {1 [/ ], v
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片5 g3 n+ `( Y; W, d5 W3 {
    : X: a6 N5 u! n% ^  h) J
        #####################################################: m9 I3 w: N+ r9 c' R' |5 \5 v5 O

    9 u( a* |# F$ }( I" d$ V    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    , L3 b( n% Q6 m3 [4 d2 o, ?* m1 \' u. c8 L
        print(stop_t, "ms")#输出时间并加上单位$ E* E9 S4 k1 Q1 L

    " y! j0 j0 d& t; ?' V5 ^5 }0 H. R    cv.waitKey(0)
    * Y; G3 x6 j4 @    cv.destroyAllWindows()1 a# F+ m7 e; I3 q" A4 {0 M0 A

    - ~! z$ o/ A2 U# ~% U; N& a8 _' e
    0 t! a9 O' m: [0 e% J* I! W! O8 Gif __name__ == "__main__":$ ]& A: a0 y7 D$ N
        main()3 x6 i# h2 _; r9 K3 w
    - v& P) ?5 L* o
    原图如下
    + `6 K& Z- {! y) v! J5 q$ f0 \) \6 c# w
    4 E  a1 m5 `* L1 p( c& K 1.png 1 X1 }- N0 u% f* e3 E6 J/ P
    + N7 u& w3 W$ N+ L/ j) ^

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

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

    2.png * n2 D1 ]+ I2 L$ k

    ( l7 Q6 l4 g8 J# x& A添加椒盐后的图片
    # H4 o, K3 W4 e) Z- `; j
    ! r: L2 V5 `! J5 ^. a6 m0 m0 ~: E5 q5 j 3.png ; s% l: X# A1 @4 b9 u8 C, w8 _. @3 M
    % @) F6 G$ l! p" c7 ^1 M, G9 Y
    使用中值滤波3滤波后的高斯噪声图
    ; w) w* l  U- n1 G& y# _) E0 Q 4.png
    & T8 g+ A" h% f2 c8 h% N* e
    / \) S6 q( U$ n使用中值滤波3滤波后的椒盐噪声图
    - H2 ]% W- y6 ]( d 5.png
      _1 o# G* E" m* y1 d* D  v3 u7 b) ?
    改用中值滤波5 滤波滤波后的高斯噪声图1 h1 X8 \+ R6 c# B# Y. d, D! w: G
    ! [9 n$ d" x. v" s
    6.png
    / h4 c6 E4 k+ k( d. k# i
    9 ?: \. |3 Y6 b6 H滤波后的椒盐噪声图
    . c/ s/ o% m( ~: [
    : H* j+ K5 q2 [8 Y 7.png & |- ]% C7 [9 m/ {( h  E

    : C' y3 E0 c% T2 {1 @% U- w( t" U结论:
    % N$ S( T# _$ g  l0 T9 |经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。- n7 c) m2 Y& M& _% t, J+ ~- m

    ! ], x8 `; s% 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, 2026-7-29 01:52 , Processed in 0.557989 second(s), 54 queries .

    回顶部