QQ登录

只需要一步,快速开始

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

    * @  R0 e- |1 w4 Z0 \( r图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。! _0 a- ^& |6 g: _" }! h! g
    8 l( p4 I5 h6 v' p
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    / j- n" }+ l3 F3 Yimport cv2 as cv        #导入openCV库
    8 L2 [/ u7 j( Eimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。  T0 Q* Y0 D# g( e1 \$ E- ~3 E! j
                            #必须首先安装numpy,scipy,matplotlib
    2 ?, v) \5 n& \- T; O8 pimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。: i1 I3 R! I7 q
    1 y* R( G8 @+ ^8 w. u$ M" M
    % l$ C% q% a0 s. F* ^$ t* d
    def boxBlur(img):
    * `! h, a# m. J' c* ~& r    # 使用5x5的滤波核进行平滑
    ) R4 |# P* Z; H5 t& ~    blur = cv.boxFilter(img,-1,(5, 5))   
    ) c0 T4 g& H+ q    return blur' _& W$ K+ ^: G7 \( U# d- A5 B2 L
    # J+ Y& x' r7 o( F+ k( p1 u

    % t8 ^! j0 \! O+ q& h+ @0 P( {def gaussianBlur(img):. W( L' ]) F* z2 l' a- P" S
        #     使用高斯核进行平滑& g4 {3 S  T! c: j7 \) t; n2 M8 u* y3 g
        blur = cv.GaussianBlur(img,(5, 5),1.5)
    ' d1 _- b7 G* C2 F3 K; @% L    return blur7 a: Q5 F9 I' g& T+ Q( U

    2 n, Z( {% W: \% W: b" ~
    & y1 F3 p& n' [% ]6 @def main():* v' O- q- |7 I
        # 2. 定义图片类img
    8 ^, }& X4 x$ J; i; l    path = r"C:\Users\98238\Desktop\Lenna.jpg"% R) a4 [5 M/ G* n
        img = cv.imread(path)2 R( y: e5 T: K9 ~+ c1 E
        start_t = cv.getTickCount()
    ; @8 j5 P$ [4 b; ?    # 5. 加噪声,绘图
    , z+ e, `! ?% G    ##############################################3
    ; H* r  t& M% g    # add gaussian noise
    , Y; C! c& d9 c7 j! r
    $ B, l8 f9 d' j; g    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    , a0 n+ k2 y- L2 i3 W9 D    gauss_noiseImg=gauss_noiseImg; j; T1 E4 I5 R4 l- P' X4 R
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声8 ]! o! Y, U4 i8 n, i4 J3 I/ y

    8 g" n+ _. n! ]1 d! \    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波: A9 u7 R% l2 [6 V

    7 u# @5 @& U  }- i4 {8 w% Q4 r    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    ) X/ @4 }0 |0 L+ a8 E& G" l* O) Z8 s    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释1 O! C* u0 v, P0 {0 S
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    ! q' ]# G& g- u# N. ~0 V$ F4 j. `6 Q2 I4 R3 q9 a- f5 [4 j) s* d9 S
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释$ e) X; z. |: S& L# ^
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    5 Z, ?* f( f4 P% x9 {$ v5 R5 H4 G( z" g* e
    $ |5 h+ M* S( B- {) k* @
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题$ V: u7 p' O3 Z
        cv.imshow('Original Image', img)#输出原图片
    " V0 J/ _4 m" D5 g, R6 I
    , m( V9 ^' K& m7 Z    # Gaussian noisy image2 b2 P. l8 n7 i/ N8 n  P8 Z
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    * P2 {8 O% s1 z    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    * h3 T5 e" ^  \! U5 ^* x  R. n- T# F- C' T" q
        # Salt noisy image
    7 [1 G  y7 t/ T6 E6 o2 `    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题+ {' F( Z# |( ], c4 ^! o5 `3 F* B
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片' v3 C8 v$ V7 V1 L# _! o9 `( Z! K- Q

    2 |3 I6 V3 E3 d( f7 ?    #滤波后的图像; I  p) ]& ?; Q1 d; i
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    & r% d  N# u( @8 e    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    8 N7 [* F$ h. j  t    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    ' w) x7 ?) c$ x% f    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片/ n$ j$ c8 \, _" a6 M* k

      I- d+ l. E! @' v% |# T    #####################################################; \' z( g3 W; U) N+ a8 a7 w" K2 U

    ) ?) V. g# P# T! A- ^7 N    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    3 V6 B( F- |% s2 i* ?. ?* _5 w9 G' k; {2 o  v' y
        print(stop_t, "ms")#输出时间并加上单位
    % J  P# U- d2 O. V4 a' g8 ?; k. i4 ~/ {4 m% B
        cv.waitKey(0)4 y# J3 S* e  y! G8 y% s0 d4 w+ x
        cv.destroyAllWindows()
    ( r( K/ Y- \3 L7 k8 H( e, C
    " M( ]! y1 L& g, A: o' E. E
    3 C* X6 m& l+ [& b% H5 h! wif __name__ == "__main__":
    ) f+ ?: a* }- ]1 N* l7 l    main(). Z$ z7 Q: S, |$ u7 e

    % s! v! E% i# i- B3 j/ P原图如下
    & D7 ~9 ?2 u6 `3 V9 K+ k4 J9 |  {% Y
    1.png ; c% r# S7 r* R4 S

    " L: K; v9 V( O, B2 Y

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

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

    2.png
    6 \# o/ |3 C+ W; x, ?5 N" I* v5 _% h' E; k9 r- H
    添加椒盐后的图片: u9 [; U  v4 J/ O  A" M6 `
    , B6 N$ e0 v6 N5 d% L6 u; O+ A
    3.png ; F9 h6 b+ n; @  K: E( d( g  Q% b7 K% i

    & m0 ^2 H' d8 a! h& N1 ~! ^使用中值滤波3滤波后的高斯噪声图
    % G! r$ r# n6 M4 A 4.png " D8 U# o' Z. J6 N3 Z& e- [" W' Y+ \
    + a' y, M' V; @5 \1 g1 _) o2 S
    使用中值滤波3滤波后的椒盐噪声图, B1 }! Q9 y' w- G
    5.png , {& b# _) P$ ^1 C9 Q
    0 ^- R% |4 @, {0 B# |  U( [
    改用中值滤波5 滤波滤波后的高斯噪声图, @, Q) U' K8 H: r5 E2 r' O

      f- q/ v4 M( U7 u 6.png , v: i( b2 k+ I0 M+ O

    : X6 V3 r# a8 |3 z% v  ^滤波后的椒盐噪声图
    7 I+ @6 ?  G) ]
    , Y" u3 w- r/ c* Z( i 7.png
    7 Y, E  P7 e7 i) ]+ v+ X, i8 H
    ' U4 F5 Y- v+ j7 _5 \" b; ]结论:
    * Q! D- Q6 S8 k* e0 s经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    / k1 U0 z5 l. }. f# W  R  P, ]$ \9 M1 ~! R# \% n
    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 11:37 , Processed in 0.288363 second(s), 54 queries .

    回顶部