QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3995|回复: 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
    4 `. V1 s5 F! z' e, E$ o, P
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    $ d4 {" G- K9 }
    , G. C; i( B1 Z% V5 p5 X#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置  p3 K, X  Z$ o( U
    import cv2 as cv        #导入openCV库" @# d3 J9 h5 ~/ a, @9 N
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。& s, ]& L! x' d4 O4 q. F% a
                            #必须首先安装numpy,scipy,matplotlib5 V0 m6 V1 N  R/ ?/ S' d5 q
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。  }9 v0 I! r4 w$ K0 _& ]4 {

    2 o3 s8 v0 b9 g" m! @1 x7 ]: Z6 ?+ O# E! Z  Q; J4 |2 Q; Y) I* f6 B
    def boxBlur(img):
    $ c# R  @& T  e- U; y4 L; W. E    # 使用5x5的滤波核进行平滑+ V" K3 b! D* w+ v6 g2 `6 R# a
        blur = cv.boxFilter(img,-1,(5, 5))    4 |8 D1 |" X9 x, o. e* |
        return blur
    * i2 i% o% J1 J/ C1 N( f2 d% v9 w" R& L3 R3 y- T4 W$ S6 Q4 E
    0 H# _7 v( B: X% x
    def gaussianBlur(img):2 K6 |" m+ y( x
        #     使用高斯核进行平滑9 e+ K. G) {9 F/ b  Q
        blur = cv.GaussianBlur(img,(5, 5),1.5)8 U' F" q) C" b9 i+ C$ v
        return blur+ t) |* r+ T. G. \# F4 f
    4 I* ]  @$ P- p3 O/ h
    5 n% Y) P; N% w8 W4 e  v
    def main():& |+ c/ Z% g' l1 q
        # 2. 定义图片类img7 J6 @' z) k: Y, B; y
        path = r"C:\Users\98238\Desktop\Lenna.jpg") V$ `  Z  p0 I) k# l+ _
        img = cv.imread(path)! t3 K& M7 k# q+ G* E8 R" g
        start_t = cv.getTickCount(): [8 y4 K8 P/ M6 ~9 I# F; U7 b
        # 5. 加噪声,绘图
    9 D- o0 z! M/ g% [/ D4 O$ V    ##############################################3
    " q2 I& t0 i( [, c/ B; E- A/ g' c    # add gaussian noise$ l# k( Q& |5 {1 N0 ]3 J

    : {% q. w% Q- M0 N  E/ g7 @    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
      |4 c- q% T3 T9 I4 p! ^- \2 L6 [  R  h    gauss_noiseImg=gauss_noiseImg
    9 l. d5 @: e2 X& ^+ o% v    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声" \, M0 }2 _6 T; d: r- ^6 o8 H' b

    9 n# i1 J- g& {% `( B, r5 C5 x    lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波  F9 W) j3 v7 R

    4 W2 J( D. t7 N- p2 \6 K# Y2 s    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    7 A: l; h! w. ^0 z# h% U+ W2 C    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释& Z+ o5 c( _  i6 m* q' h9 J
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    8 s6 k" Y$ y+ P" _" `/ ?
    + E% N) d9 U6 b  F3 ~    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释' [7 N+ K  @8 p" M9 a
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释. A, F* r" ]. Q$ w6 ?9 P0 \9 G

    % l8 S, ]# e9 E1 K, I
    : d6 W3 Y* a  N" l- {    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    " G& D2 X' G, K, a: A7 I% P    cv.imshow('Original Image', img)#输出原图片; E4 X% M# _- A* m& U' a3 }: ]
    / p& @  v! S" y* U! f, I
        # Gaussian noisy image
    ! N6 a/ |5 Q. ^: s: @1 S9 ]    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    8 j% Z9 ?# n" ]  M5 \    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    ) x7 S" g* g" \4 f8 G$ ?+ |
    3 O1 x1 ?+ [8 `5 V1 ]9 I+ d. f    # Salt noisy image
    " _/ l1 b8 e5 l! i& w4 I    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题& T' L) \* J% m' ?' e, `. `
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    9 V' }- Z* R. X1 x, R% t4 Z6 b  r/ ~5 ~1 x$ R5 o
        #滤波后的图像
    ; U4 b! j: U/ e    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题( A- a! ^5 @, J
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    ' x/ S% d( M. Z# [5 b9 c& J8 L    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题& v: G7 c1 ?6 G, B1 Y$ g
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片9 P' Q. O6 _- y- b3 G! n2 u  F, y
    & u, ~6 u' B( M$ K- c5 [
        #####################################################7 ^- c6 ]2 l# [$ C' j* H5 N' _
    7 j. Q5 r& Q& }/ A" v
        stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    % k/ z& c1 P; k8 h8 l$ @
    1 |6 _: m! q3 F6 i! O) D7 h    print(stop_t, "ms")#输出时间并加上单位( m; w, y1 |8 z9 n
    & V* y+ {+ [  [+ t
        cv.waitKey(0)' }, s& F5 e! ?2 d! L& g
        cv.destroyAllWindows()
    6 [; I" n) C* c
    : R7 y9 X. l  P) v$ f* e& \5 e9 H! E. }2 c$ o1 [5 Y
    if __name__ == "__main__":
    4 Z5 u8 Z' ^) m  ^& Q6 F    main()  S, R) w* @! d% b( Q+ m! H
    " w% v) {& O) y' v; u$ h
    原图如下
    0 O5 v& ?) W/ T, O1 |& M; K* ]
    1.png % j( d0 w/ z, X5 B8 y4 Y! g
    6 f" `8 c! F, L9 @9 w% X

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

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

    2.png # m/ p. ]  ^: y6 \7 B/ k/ `" U

    ; U* Z- u; d  l添加椒盐后的图片
    ) V& V3 Q+ R5 f' A! X
    . S* V8 ]2 R0 z 3.png
    7 ~  T7 }' J8 n7 s& u6 _  `, q! f
    使用中值滤波3滤波后的高斯噪声图
    ; A3 J! E1 T& c7 r6 v$ @ 4.png
    " `( q8 L$ |2 \( ?9 [/ l& u% M3 Y6 _- |
    使用中值滤波3滤波后的椒盐噪声图
    ( F9 `' i! h0 f* E* V4 S8 J$ ~ 5.png   @% X( H8 ^7 I8 G5 b& v4 L6 ]

    ' k3 I# `/ Q. s) q改用中值滤波5 滤波滤波后的高斯噪声图& t* d! |  ~$ X2 a* M9 @. o5 U
    ' u! ?$ y8 O0 A% s/ _
    6.png
    ( V% G2 x" X* e  ?5 ?3 T" O' j. J8 M
    滤波后的椒盐噪声图
    5 t) X" R) v- E) \6 `# s$ G; o8 v$ Z8 `* K! ?
    7.png ; x! Q* i9 u  E: S! |

    ' s) b8 w9 v+ e( X4 A5 D结论:7 A  n8 @; M/ @# _
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。( O  G- N/ x: A7 I' l/ n
    3 ]# f9 F$ k1 h; B+ N; Q. S3 O
    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, 2025-9-7 06:05 , Processed in 0.417169 second(s), 54 queries .

    回顶部