QQ登录

只需要一步,快速开始

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

    & ^  o) p- c# g/ e) _2 R; ]图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。) h& ?5 W& S$ Q

    . {+ O4 q" X- S3 y#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置. ?1 ^% v4 w9 U9 e9 N8 L) D2 @
    import cv2 as cv        #导入openCV库0 H: m" j  V5 c# r1 E- \. g# w4 N: u
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    1 v; v0 P- q! `6 i2 |4 m! F7 }                        #必须首先安装numpy,scipy,matplotlib* N( T. n' R( r6 [0 }" P
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    % p$ ?0 k; n+ F& K. Z# b* {$ N4 L# K! E, {' {) E; v" Y. c

    - x& |/ S) _: w/ B" A( w8 I& tdef boxBlur(img):- F2 b- f3 |8 r3 |7 p
        # 使用5x5的滤波核进行平滑/ x0 S/ r. [2 g/ R7 E
        blur = cv.boxFilter(img,-1,(5, 5))   
    / M" t5 D' l; h6 ?9 A8 y/ l0 `* T, G. w    return blur
    " I' z9 o  J7 a# ~
    / @, q) S: x, `  {
    ' b" x+ w3 K$ w+ s# h0 fdef gaussianBlur(img):
    ! Z: B) m0 G- Y2 A- ^' P" [    #     使用高斯核进行平滑
    2 h5 C; l% j7 M8 t3 m    blur = cv.GaussianBlur(img,(5, 5),1.5)
    % X& c- G! N8 Y! q: C6 C2 r% ?    return blur
    # t) w: K: n; d0 A# u1 E( l( P' F. _0 U4 d9 l5 B

    6 n: `' e: \. e% Bdef main():
      @$ ~$ z0 S( r1 Q- o' O2 U    # 2. 定义图片类img
    ; d( B, h: i+ F+ F- ^+ ?    path = r"C:\Users\98238\Desktop\Lenna.jpg"; V5 t& W1 C" [. j7 o) @7 J
        img = cv.imread(path)
    ' J/ m* K4 b. ?    start_t = cv.getTickCount()
    ' r- s, w/ `1 N: B    # 5. 加噪声,绘图
    4 M8 r6 H* H1 v- N6 B    ##############################################3
    " t) W+ v) Q# G+ u    # add gaussian noise
    $ t* C9 H# D1 X6 O4 A' m
    . [5 g- Y( ?* e* h! ^8 i- @7 |    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声. o& I. F$ z% T
        gauss_noiseImg=gauss_noiseImg
    ) N2 E2 v/ a' n1 o! h    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    ; ~6 F& l2 Y7 A7 z: B  j" `  H6 a' ~4 I! j, ]; }/ a* N
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    3 Z. T& N6 V8 H! n, I* ~4 n. V
    ' N$ d7 ^% v# v9 Z% k' V  s/ M& g    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    1 y: f& M1 `$ I3 U; e    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    ) Q1 n  L$ Y  k2 [    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    5 a+ A% a/ u* }  _; l
    # P; F0 b" \! b    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释5 |9 {# \8 I' ]! }" R; V
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    1 b) Q) k0 A" j; j
    ' p/ X# f9 ^/ C. |+ q3 P. _4 G! n" b+ W/ E
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    2 A! f% g+ X, D+ n* E7 O, X/ k/ |    cv.imshow('Original Image', img)#输出原图片3 f$ j) O& v( P" Z( l( e

    ! }) I" Y: g- G  j  Z/ u    # Gaussian noisy image2 n6 f% A# @' Y/ i) U; D! [
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    , J' Y8 b1 t7 \7 O) H    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    . y7 P' s. f: G* V+ [! a
    $ A( U0 K7 v& w( ^2 n    # Salt noisy image
    : N1 ^- ?' E6 K- |( [# D    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    1 b+ Z9 Y  W( B6 k2 B* p    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片8 N% N' o& l8 V5 U$ A  C
    ' f! x1 G4 [* D5 I. v
        #滤波后的图像
    ( i8 y2 e, {- p/ U# _    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题& G/ S+ S$ i0 @8 L/ g0 @% C- r
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    0 w' U" J7 J  R% J* I    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    $ D7 _! R: C* M2 D/ K) J4 a    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    ! B" M6 w/ m0 p9 A1 X$ ~. E+ F0 T% d( a9 ~0 S3 W
        #####################################################
    6 v5 a5 Q+ E, ~; M& d. f% s6 a
    : r' E& {8 T7 D5 k  J0 k9 J9 `% `    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    4 s. T; j. |6 [) l- V3 T
    2 U9 |# p* T* r- x  s    print(stop_t, "ms")#输出时间并加上单位
    * ]1 P& T; A% f& {- K' E& q4 y( d2 ]/ P
        cv.waitKey(0)' a4 }/ y3 R; l5 F6 J! }% ~7 \
        cv.destroyAllWindows()) ~* Y, |/ o  W1 i7 x3 u" R) R5 F

    # ^  M8 S9 _$ l1 Q8 s, l% o5 N6 R& z. f9 d. ^
    if __name__ == "__main__":
    + V% w9 |; P! [  c. @    main()
    4 @5 c5 u" n+ H* f: A0 n! j- ?7 r& c, i
    原图如下
    ' K- O( `1 n8 _9 B6 T0 k$ s7 o
    ; D9 U' s' T) @5 f2 l 1.png
    4 I" u, ]* x3 z+ Y0 f, t! W" z% F: l  C) W5 \

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

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

    2.png
    : P0 c0 v. q; J$ g3 v4 ^  E" R, }- X( ~; _+ w' W4 f$ u- ~
    添加椒盐后的图片
    , ^4 \' P* Q1 v! X; t
    $ _9 f  i; S3 ]4 |3 T 3.png
    % ]) R  A# `1 C! i, i( r  J7 ~/ v% h) y2 Y+ |
    使用中值滤波3滤波后的高斯噪声图  G+ w: S: m, Q* k
    4.png
    $ l* I  `$ Z( R' ]& W" c9 s, |& V: @9 F! \
    使用中值滤波3滤波后的椒盐噪声图2 r- ]: X& U* v/ S
    5.png
    ' A: `5 m; e' a/ K- x. B; [9 d- A3 ]# _3 ~
    改用中值滤波5 滤波滤波后的高斯噪声图) m0 e8 [8 g% J( }. m
    ) G4 B: B+ v$ P6 I+ [0 \+ A
    6.png   Y2 M- v9 S  K7 G8 ?7 ?' h

    % H; }+ d+ J6 }; ~7 W! j3 q  P滤波后的椒盐噪声图/ b$ R6 d( N- F4 Z9 c& P
    ; D+ h+ O0 E' W% ?! C
    7.png 1 z% _0 ~) D$ _2 s3 H4 ]
    , P9 I( t# [* \  |5 E" f% i& U7 T% j2 R
    结论:4 K+ y* x0 N$ F0 J/ y& ^6 L
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    / K6 y4 g9 j- i$ z- K. O* }' |: ]) A, {8 S. T
    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-4-16 13:57 , Processed in 0.339271 second(s), 54 queries .

    回顶部