QQ登录

只需要一步,快速开始

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

    : i( _& H; j$ I. f6 n, g图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    9 p& V0 U* Z2 O8 f7 `+ T; R; W& C7 M+ C+ {1 z- ^8 B
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置+ ?8 Z& C6 U8 f1 O
    import cv2 as cv        #导入openCV库1 G4 y: ^4 ~. L2 s0 |+ A% l
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。- m: y$ `. J( j! {4 {$ T" W5 i8 i
                            #必须首先安装numpy,scipy,matplotlib
    $ A" R$ E6 P6 L5 dimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
      a1 f. E- {% y2 a9 n$ D' `# x: h
    & d8 |) a$ \# [# k3 S7 X; f
    ' g# `5 c3 w! N) J: F1 Q; L* Mdef boxBlur(img):0 g; N2 t" P  A$ ]! y$ ^
        # 使用5x5的滤波核进行平滑
    7 a7 O* J# U9 y+ h3 C8 U; |0 v    blur = cv.boxFilter(img,-1,(5, 5))   
    ) j- j7 k: p- h7 F5 z( x2 P    return blur
    ' R1 K! _; @4 G3 _- J2 \- u7 h0 x# |8 d) `7 m; A! O, E, B8 Z
    / y) [' [+ W) \  z
    def gaussianBlur(img):% o# o* f4 `- t
        #     使用高斯核进行平滑4 @! O, v+ G% @7 Y
        blur = cv.GaussianBlur(img,(5, 5),1.5)
    % Y9 n9 q+ F* {+ S$ G    return blur
    : {, R9 |; c9 @1 F1 D; d  O& P! T
    + v$ `% g( K6 x
    def main():
    - y% C- x* b' j6 H  _    # 2. 定义图片类img3 D: W( \8 [$ e" [. a9 Y# |
        path = r"C:\Users\98238\Desktop\Lenna.jpg"( g' }3 s  L9 I. k0 x; w8 Z
        img = cv.imread(path)1 a7 _3 R2 |' o
        start_t = cv.getTickCount()
    - r+ i# o; D# O/ f+ u+ k    # 5. 加噪声,绘图
    , l0 P+ _" \7 i' M* \    ##############################################3
    0 |* @. G, J) F    # add gaussian noise$ r- P/ ]0 T) \1 v) O
    9 y  G0 o4 R6 q+ p
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    - O- D8 Z* N" H9 N    gauss_noiseImg=gauss_noiseImg
    ) o' H5 }, ]4 J' [    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    ! j# _3 `) D0 I8 Y, a# G6 J
    8 w$ g; @! m+ X0 O2 N; ^* n    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波5 l' C( J7 o" \: c  R$ J
    * v: S* P- c7 H6 E- B9 K8 y: V
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波* {  Z  T& l4 c9 |: ]
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释" O; \2 s/ H5 N
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释' E) J( q* Y% |* B- _

    ) c& X7 L3 F, m    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释. O3 O, {+ |4 }( \' g! E/ x
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释! I6 d! [5 G% D; o2 `8 L$ ~
    3 B. f3 a3 g3 I  O3 \
    3 ]& G* Z. L: ~' h- D% ^- ?
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    9 f$ l: C* O7 ]5 P    cv.imshow('Original Image', img)#输出原图片
    $ [% Z# v- Z6 m1 |8 }3 R  c" U. G
    9 Q# w; C. O* r3 M3 X1 @9 L9 Y    # Gaussian noisy image' {4 d" E. c7 g+ e6 u
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    ! J& E" z: G8 \7 z# _    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    8 @' {( G6 X, v, Y; J) K
    1 e4 n4 A: Y' a1 `% P: p4 `    # Salt noisy image
    # r. M+ \& N/ N    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题4 O3 o" ^, }0 J  v+ M
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片2 p8 u! n( x1 Z- I2 b
    + O1 }$ r2 Q- y
        #滤波后的图像3 [" q7 Z" P" o- v9 K, p% @
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题1 Z% s' C7 O) F% f* J; W# n) m
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    + g- s! R, N$ y1 _/ k9 z# o    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题4 M4 ~& k# N; d( Y/ T7 B" a
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    " ?- A& P9 a  M+ |4 H. k2 q! V. K" w3 l  l/ _' T1 f
        #####################################################
    . ?/ P* r% h* K# }$ A
    ' I) z( b; A3 J/ F3 o    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    ' Y8 U( G% Y/ ?, L( T6 X& e. S! f1 }& ^- M/ c% x% d( g4 o) E
        print(stop_t, "ms")#输出时间并加上单位
    " }% D+ q6 I' q: j
    2 S. ~& j/ d( Z    cv.waitKey(0)& K' p5 a# E1 g5 A, I
        cv.destroyAllWindows()
    - b5 ]$ G3 \) \+ Y7 u
    / U2 z) |% i% l8 d6 L+ o. f  W3 v  R1 v, i' b% g" o" n
    if __name__ == "__main__":8 ], c' h$ ]' L" d" J6 S
        main()
    ! x/ X$ O; `1 a& t5 Y1 H, l& V" N( M, H% V) E6 M' {. J
    原图如下5 M' j) P( H0 _: s: `, X
    5 p5 T0 I8 E" s# M& J9 c3 Q
    1.png
    5 o* ]# w; @( R8 q+ }
    - {  ]$ i, D* r) J

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

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

    2.png & o$ }* B/ y0 o. Y6 n. \

      s" _& M% P6 Y' |( u8 e+ M+ D7 \添加椒盐后的图片
    ; M! h8 n  P! M1 n9 ~0 y& s! z2 F' d6 r" Q- l  U* Q
    3.png ' Y1 P: ~; A+ g3 `
    6 `. C, q3 t- Q1 ?, V0 f! [% N
    使用中值滤波3滤波后的高斯噪声图
    0 _) K, l- Y+ R/ g 4.png
    " L: t7 \6 T) J3 v
    9 J% d0 W8 _2 C4 D使用中值滤波3滤波后的椒盐噪声图
    ' H% L% f+ C2 O) Q 5.png
    6 p; a# r! t+ K, `* M8 k  x4 m- F1 k: H
    改用中值滤波5 滤波滤波后的高斯噪声图, Y2 }2 D" s5 L: z3 O; c% V' F

    " y5 h, Q. C0 g7 o5 o1 G4 \5 `" Z7 M 6.png
    0 B! s7 T+ e! j) w4 b; U- o
    - t) a! i* b' Y& I+ b8 Z滤波后的椒盐噪声图; e" Y2 H5 ^4 q$ p' H

    0 d  B8 i5 y3 L  _1 }. h5 K 7.png , {9 r- D3 ~' v% r
    0 n: Z) w' f+ d9 f, f
    结论:0 [8 G/ h' d5 y) p# O
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    ; D8 q$ X5 I6 w& ]. ~* Z+ `- I9 ~
    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-6-12 05:35 , Processed in 0.419657 second(s), 55 queries .

    回顶部