QQ登录

只需要一步,快速开始

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

    5 p. w1 M: V/ L% Z. j8 e" z& r图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。3 s* p  P' d) }' f% J
    ( T& T! o7 k+ _5 h& C
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置- G# a. D, k+ p
    import cv2 as cv        #导入openCV库
    5 ]9 C5 t4 }* Z, h/ y, J+ vimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    9 d# g. t/ j. \2 M# }+ \3 V                        #必须首先安装numpy,scipy,matplotlib# c/ @3 w' J/ X. M! J, p; Q
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    5 v8 M# G7 d8 x6 H) q' F# x
    . ]$ E" z, t; p5 m3 C3 A  N/ |6 O: P- |" l) _  i7 B
    def boxBlur(img):- ~: z- u7 x! L! E0 s
        # 使用5x5的滤波核进行平滑
    ) P5 |; F6 A; l( T1 Z# |8 l    blur = cv.boxFilter(img,-1,(5, 5))    ' m' |5 c8 I7 J: Q+ [% ^" c
        return blur
    8 S4 k( R. D4 {* x- `0 G9 o
    - O# i: a, Y- m" c% A, u
    ! H7 c8 L/ C2 N9 \. @def gaussianBlur(img):; Z! y, w) _4 s' ?
        #     使用高斯核进行平滑: p  j1 [" U3 ]; ~
        blur = cv.GaussianBlur(img,(5, 5),1.5)
    " y: F  u, W. |5 o    return blur. s* k8 b. `' d# K" U% f4 A

    / d- O4 Q( r/ m+ v, N
    8 Q2 Y- b4 U) h! w, Q3 j8 idef main():
    $ V# _9 Z' W2 }& J) q, R    # 2. 定义图片类img0 |- d. b4 c( f% t5 Y
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    # ?0 R$ I5 P* s) s    img = cv.imread(path)* e6 v% j" Z, K
        start_t = cv.getTickCount()
    * Y" x( c5 ~( {; `4 m" V    # 5. 加噪声,绘图, {& V+ ?9 l2 R. V& v8 K
        ##############################################3
    $ S6 G$ G' T7 {/ j  \    # add gaussian noise
    ' L7 e  M$ i9 L2 m% M; D) L- h. I" F' f
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    $ {- H5 a7 [' K9 a) w, k0 k) l    gauss_noiseImg=gauss_noiseImg9 h% y+ E% c4 M6 L) m
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    ( a' B. T. V- v7 ]. b( Q/ M" Q% m. U% R( a8 }
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    . @5 m# o/ ]  H0 f5 C2 Y4 ]
    6 T* b3 q$ e' m% J4 z    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波- l# q" P6 m% B' N
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释) @7 E6 @8 |6 f1 Q, u9 k
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释/ Q* {; t( }2 b$ L& {

    : m% Q% ^1 o, E9 ?    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    ) |2 k! \: N0 l    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释% R' D. t+ J+ W0 \: D" V5 I9 W
    4 T- m1 b2 `0 \' D

    % @  u1 e- ]& i5 ?' z    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    9 H( Y6 l& }3 \* z    cv.imshow('Original Image', img)#输出原图片  p$ t; _8 s& D! N; {

    " N8 O0 p/ X# p: ]. y% T) N- A    # Gaussian noisy image
    - _6 K. \4 R5 a2 ^+ _8 l    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    % y# \- }: o$ y7 t    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    $ k- r: n6 H/ v% t& @, A8 T* [- D
      j4 W* m4 s+ \* l    # Salt noisy image; f; H- q$ i- f) B
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题! t7 m) d# v( @5 d1 X0 L6 M2 ?
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    : {% V) ^7 [- W) T( |
    ; u9 r, |3 G* R/ H( g& _' R' n    #滤波后的图像8 A. F1 ?7 k4 _
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题2 q: \4 B/ |6 T' |$ ?! F
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    ' t' v$ D4 _& C3 j/ o3 c    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题3 {; F+ |+ a; B9 W1 K, z2 m. @
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片0 r! G) B4 l( S$ c* h2 N
    ; I9 `) f. h. g7 K* ^& N( }7 L5 B
        #####################################################/ k" o' o0 H7 x. ], T/ U6 q# Y

    $ [: W( N& G* J    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间6 x% i( O2 F& s, r/ d6 L* n/ V- B

    ! M/ l, l, l6 K" W( C7 D    print(stop_t, "ms")#输出时间并加上单位
    0 x6 w3 |: L9 m, q2 H6 j9 @6 z# s, G/ `. O
        cv.waitKey(0)
    8 S4 i- ]4 v5 v& y. l- I3 c    cv.destroyAllWindows()5 ~1 Y9 n$ M/ i0 _% v0 H' l

    ! q4 i% b8 i+ C
    . N9 A% A+ |: kif __name__ == "__main__":
    - Z4 w+ g4 L  D& {4 I! u, ]    main()) |* f. H2 @5 O9 b) o- `1 \
    4 N" n7 W6 x" X3 n
    原图如下% D! [& r2 M( K; a1 C. v

    4 ~0 k; Q4 g2 v- x1 i+ @0 G9 A 1.png ( D7 L4 ^' R: g- d% U* u# }! Q
    , o, @4 X- W7 R# a: }8 t

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

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

    2.png , s  A  j$ Y! v5 B" c6 o( n
    , i4 Y8 l7 i" l: G1 g+ T
    添加椒盐后的图片
    ) b* R1 M4 p! y: H; r( _2 r! R; I* }; f1 ~
    3.png / W* [$ T0 E3 O' k4 C, C9 g
    $ }- ^3 `, e; ]3 t; m8 i# I4 F
    使用中值滤波3滤波后的高斯噪声图
      F; R) s4 s) ?1 m9 B8 O. f 4.png
    & |" b/ v! ?" p# W4 F2 u
    9 \: Z* _! ^* V4 a使用中值滤波3滤波后的椒盐噪声图
    : u* R) R" c7 o. x& F 5.png ' L) u9 e, v5 R5 F  u
    0 I8 ^2 N( H0 P1 d: P& d; d
    改用中值滤波5 滤波滤波后的高斯噪声图2 B% Q( e/ u8 e3 b- ^' K

    9 [& U3 E4 l+ m0 m9 u 6.png 7 x; ?5 v$ M' q, H* x" m" R  o3 y

    ( U* h: i/ Q* B3 b滤波后的椒盐噪声图
    ) a% m% \& y. Y& q" f2 K1 a7 J. ]% R' ~0 `0 d1 B+ l" g, j
    7.png - n' p- Y: B% X) D, ~; C! Q$ ]9 N8 E' Y
    0 U8 Q( [) h" y8 p: t+ T6 f
    结论:, P! w9 H# e! k: W4 G- r, g# Q- G
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    6 ]5 o) K8 \+ ^% S- |* Z/ z
    8 _; }/ ]9 |& Q: ?" d  f" u" Y
    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-12 10:10 , Processed in 0.410298 second(s), 54 queries .

    回顶部