QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4398|回复: 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
    # ?0 U9 g8 w5 Z
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。0 k" e7 ?5 a! D. E% g

    6 e( j' Z. c1 ~7 Z#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置; ~6 `: M# C2 d3 F: \' I5 P
    import cv2 as cv        #导入openCV库
    & @( X& F7 v" W, F5 vimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。  h9 n9 q; U5 J+ j; O8 ]: F; d
                            #必须首先安装numpy,scipy,matplotlib! Y" q0 J8 j& Y2 e
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    , J2 U4 X9 P* x* D( u: M# \$ I( X' o
    $ L% e2 m: F2 x9 L4 b: c& p; g5 P  c8 g* g" J: |5 [) y# r. M
    def boxBlur(img):& X) w" s  S4 |4 ]
        # 使用5x5的滤波核进行平滑
    4 l. q  M9 X! P0 k  `7 J    blur = cv.boxFilter(img,-1,(5, 5))    # I, e1 u9 y5 |3 H7 V2 H
        return blur4 @: D, w2 ]2 w  G

    $ W9 ?/ W% |) M0 ?9 {/ U% k2 G) t6 m
    3 v  X* x" S/ O/ b+ kdef gaussianBlur(img):* Z* |+ r; Q$ \4 l4 n; B
        #     使用高斯核进行平滑7 R( _& M8 X) v: }5 b& x
        blur = cv.GaussianBlur(img,(5, 5),1.5): q2 \5 Q- F1 }8 ?( Z9 D" N
        return blur/ b! T" e, q; a7 a9 ^0 t" ~

    : @8 F' X. u$ A: V+ D4 q+ k0 e1 q1 _% h4 z. u7 u
    def main():5 w$ L. l  e9 |+ e& \
        # 2. 定义图片类img/ ^; D  P2 G& D& s2 S
        path = r"C:\Users\98238\Desktop\Lenna.jpg". Q9 Y2 [" |) g& j9 A5 s3 X
        img = cv.imread(path)
    $ Z7 a( p. x; P    start_t = cv.getTickCount()- O( p0 k; e* ]' }) m5 j
        # 5. 加噪声,绘图" U7 W& u4 G2 }9 i
        ##############################################3: O' T0 `/ P# U  N" c* w$ V
        # add gaussian noise5 u5 `. b6 R' k5 S! C( z8 F$ f/ T

    / p6 |) `. Z: y6 k    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声. n" B# G' c, z  d9 r: A3 t
        gauss_noiseImg=gauss_noiseImg4 ]( R4 n. N; g# k/ e! v8 o; R' H
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声+ b, u% N& s. s$ ~, Z: r# q
    * I% R% M& h" r! o4 u, j, ~5 V
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波7 T1 e( r! f+ l! {& W% i

    : c6 y2 g8 B; I    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波, W# m& `, {: ?9 Z  {
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    & m& f) S( s" o. z* T- ?    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释$ D0 `0 [8 e+ p" w
    * f( X, ^: N: c& n- h% w, z1 y9 V8 ^
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    1 D6 S. u! A1 Z+ `+ y( ~" F( r: {    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    8 X0 l, r& Z8 m" [  P" o: B6 x7 I: @8 \8 I! n- c

      \8 y; l0 `1 U2 x5 i3 K6 L  j    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    0 y4 ?0 f$ s' Y& _/ L" ^% r    cv.imshow('Original Image', img)#输出原图片
    & s$ Z6 u6 }9 p/ Y" K; {! Y
    * I9 D- R1 P* X/ b    # Gaussian noisy image
    ! [, I7 @6 P' V3 @    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    3 B5 y, B* Y' l- x9 E    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    2 [% \: f' ?5 n6 z" L$ u- N, M; X  b8 s2 L  E# g
        # Salt noisy image
    ) G2 {. s/ N1 B! w    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题0 I0 d. X  ^- r& o) v+ j
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    / x, L7 j3 x& V0 k: x7 k( q
    ( e' R* g8 O: Y( ~    #滤波后的图像( }1 a; ?% X; `' W+ |; r- o
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题9 t8 u: Y' N+ Z+ J# c
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    8 H& U1 a0 M$ y/ X: X    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    # h9 D: `  B2 J* G+ e    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    6 y* C* G9 x$ p3 x/ g- k
    . U& C% n; z0 |" j" N. P    #####################################################1 ^8 Q3 y! i; J) z, L
    8 v) Q/ N0 [; D6 j, \1 ]% _
        stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    . ^* p, h4 B  Z" I7 ~& W# _' W$ z0 v
        print(stop_t, "ms")#输出时间并加上单位/ _: }& r' E0 O& Z7 C  k1 l* Z* O5 M

    0 v" l. a% Q4 o8 R3 f7 P; v& D3 c4 a    cv.waitKey(0)
    ; }( j! L1 d8 u+ a8 Q8 p% Q* c. b7 @    cv.destroyAllWindows()# A$ E) }9 ~/ Y
    " R' \' r; R. Q: t+ r( C0 o+ y
    ) N# e- I. u! t: K5 @
    if __name__ == "__main__":8 l: T  w0 w0 p! e
        main()
    ( e$ B' I9 }6 ]9 |$ e$ x
    4 E% P3 A3 y+ U3 A; Z原图如下2 q' O. P& G: m% Q5 E
    4 F2 C$ b$ B/ o! L3 D7 K, e
    1.png / D. _) H1 D2 s$ Z6 t2 a

    8 Z; |( N; S4 n' K$ M

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

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

    2.png 9 o. z" v$ X/ H. D

    ; [& a+ o/ i! K5 }- f5 u添加椒盐后的图片3 l5 M, O2 a  T7 x- z; Y

    . u3 Q  {/ O' Y 3.png
    $ |. ?+ l' y) y. h# ]! A6 w- K6 C% q9 B4 @, z4 G0 I5 U5 k3 \
    使用中值滤波3滤波后的高斯噪声图* j3 K( h& g& B7 l0 y" s
    4.png ' p5 N: p3 r" o* b* a2 t

      K# {! F8 K- [7 @使用中值滤波3滤波后的椒盐噪声图' h$ e/ |) v5 w1 I: b2 D8 ~1 v5 ~4 U
    5.png
    2 D4 V7 Q7 L  a; b
    * J* W* z# s$ B$ B' ]改用中值滤波5 滤波滤波后的高斯噪声图
    , G/ B" T9 t  l5 M
    # L0 U3 }" Y) u9 p5 E' s 6.png / F, m) n4 m8 d

    9 k. `, }5 d6 D4 T; a滤波后的椒盐噪声图
    & T( `2 p5 I% S- A' |( B3 D. y6 |( b2 @7 }" B
    7.png ) k& X$ f) z) ]& H7 h) U4 M& @" c
    % T% t$ H* E0 M2 T) |
    结论:& ~& V% i+ D9 j  l) K1 X$ q# b
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。( G* f( x/ I0 V7 J

    2 o' V; \$ r/ u" \
    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-7-29 03:05 , Processed in 0.619069 second(s), 54 queries .

    回顶部