QQ登录

只需要一步,快速开始

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

    ) X6 j- L8 ?& D* o' A图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    8 L+ j7 e. g0 v
    9 a- |6 c3 d; J& t#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    $ P% W% V2 _  {! _  P, Y. v# Rimport cv2 as cv        #导入openCV库) t% c2 _. R2 y3 ^4 C/ F. j
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    / d7 [; `$ U$ S2 H/ V! m/ Z                        #必须首先安装numpy,scipy,matplotlib
    ! Y7 N8 [  A' H5 y/ L4 aimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。$ C' h9 L7 n% t- d* r
    , f; b( }$ g0 d" O- z0 X  [5 u

    $ L% M4 R1 |) Xdef boxBlur(img):
    ( |2 Z& n* G9 Z# i7 n5 }    # 使用5x5的滤波核进行平滑2 M& n$ x/ C' ?4 J- O/ c
        blur = cv.boxFilter(img,-1,(5, 5))   
    7 U2 o* _" Q0 U( M    return blur
    , B+ K2 a; D) Y: Y) l) P( h+ I

    9 n; N+ Q; Z" p1 c& n3 udef gaussianBlur(img):: s9 z/ V; N$ r6 E1 R/ X  A. K; l
        #     使用高斯核进行平滑/ l/ K; q0 R% M; \1 J
        blur = cv.GaussianBlur(img,(5, 5),1.5)5 `! b5 Y8 ~. D
        return blur
      {7 J' z. F% q7 k( d) G& Q  T4 i% f  C, d( A! m- a. @4 Z/ W

    " V: D; l$ J( c( E& c8 u# @def main():
    ; ?/ O' ]+ z  f7 |  ^0 g9 [0 x    # 2. 定义图片类img
    $ T8 P* C7 Q& ]& x- B$ I    path = r"C:\Users\98238\Desktop\Lenna.jpg"% B0 N9 Q, K1 l+ L: U9 o9 H: l  O
        img = cv.imread(path)) |+ l' f# ?7 H2 s* M7 H
        start_t = cv.getTickCount()
      l" ^1 e! i% q  n3 q& l    # 5. 加噪声,绘图
    8 m* p4 }- \3 j! {2 v% ?5 S4 J2 @    ##############################################3
    * j' U  b! j7 I1 m: b% N6 Y    # add gaussian noise5 Z6 |$ H1 d5 t; H! ]1 j

    8 }% B5 H* c* g4 D1 D! }, M    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    ) e% Y+ \& A7 ]) E& g4 A    gauss_noiseImg=gauss_noiseImg2 i; y/ |1 L9 [: M
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    6 C( y$ |4 I' Q; P: R& `4 X) Q2 N) S: C  b. K# ?5 n
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    * o  {" Q8 J; X8 H5 O
    / d! z" k9 @; l  J- Z3 _9 Y8 N    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波% y/ r; m6 E- D+ A% W
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释$ N0 ?3 ?+ T# ~3 i; m' f
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释# E" j" a9 D6 W6 a

    5 z$ x; \! H0 P& K" k3 I1 j+ L    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释- ^* p* h4 c% m! J
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    $ U# ]* @4 ^- K
    + z3 r: x; t9 o$ q1 j  `( i, z1 x* b9 R# {& m$ s% d  n. h
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    0 H7 X8 b  c, c: S4 z    cv.imshow('Original Image', img)#输出原图片
    - ?* E% K. T2 j4 Q% e/ R( @. X8 Y' t$ ?# c+ \2 N# I! _8 I
        # Gaussian noisy image9 C+ l: y2 r4 t
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题" L( `/ N, f% o' j" J9 G5 O
        cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片( S8 r7 E# H0 |) v: `
    + J  q- y2 P$ o! |8 a
        # Salt noisy image
    2 E) ?5 R% t6 R8 M' @: _    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题0 U! j! ^9 [6 T( x- f) [4 g
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    + s- A4 W1 z& ]3 l; \/ Y' ^+ H" H
    % O1 H) `0 v8 p" b5 Y0 T    #滤波后的图像+ A2 H/ H1 x2 b+ y# }4 W
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    % p; \, O5 g7 z) ^. s3 k    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
      B+ Z* L% B# J2 y* B8 b9 P, D    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题6 a5 x# N1 H* _0 F& `
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    2 l8 I8 G( |; W- F  O. d: q* p& Q9 g8 B, {8 e2 u8 R
        #####################################################
    7 a, ^/ r" v& B- b4 T' y2 j5 C, A7 s9 {+ g: W
        stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
      u+ P; ^# s6 \8 S3 n) c
    ( I) y/ d9 p" r1 q- f+ M    print(stop_t, "ms")#输出时间并加上单位6 S  V+ a4 ]3 ^  j# S: I

    4 U, p' k2 Z  M* ]' ]( Q5 [    cv.waitKey(0)
    3 a% R: c' r+ j2 p4 s/ Y    cv.destroyAllWindows()" w& p# d7 p8 i& L- }6 r1 P+ ~1 _

    ! u* `  L: ^7 x. g2 Y; B- g1 a# t0 w1 A" A( }
    if __name__ == "__main__":+ H' J# Q5 B8 Q) O
        main()6 O  h+ l2 M0 J4 \( Q

    1 q1 |- K2 `; |7 |9 j3 ]' {5 c, y原图如下7 k  S* `0 b! S( d. ?+ H4 `

    * W5 R! h. w$ w+ _! G: P 1.png
    ( E1 |/ u& S2 Y' A) w! P; N. m, e' O9 H6 `- K

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

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

    2.png , p; H% M, [3 u- s( J
    0 J. F5 B; J  D; S' h, t
    添加椒盐后的图片+ {- ~$ B! s! n6 h

    6 L9 f) P/ q( z 3.png ' I. W- ^' G# `9 |
    . b+ F( Y7 a& z+ g1 k; |. F
    使用中值滤波3滤波后的高斯噪声图) p$ x5 W, K  l$ W
    4.png 6 U8 o4 Z5 I$ V$ B; c7 k1 N
    & P5 }: r8 e+ Z' P9 @
    使用中值滤波3滤波后的椒盐噪声图
    ( \& A: Y# n: m  c4 h: k  @ 5.png * D7 z$ h; Y9 Z% @6 r/ Z
    ( J; H) o7 }1 q7 Q% x8 H. k* N# `
    改用中值滤波5 滤波滤波后的高斯噪声图. [4 f4 e, n, V
    ! @8 a0 t% G8 R4 R
    6.png
    / v2 Y% d) N& j0 O9 o& r2 Z8 b+ E/ Y! a1 n3 q
    滤波后的椒盐噪声图
    : `2 \7 F1 F3 c3 W' _$ Q3 \9 g0 r; p# k% U3 L9 P0 o, I
    7.png
    + N' P  K9 R  r+ q; R
    : `% j( @; g8 L+ c结论:
      F& r8 d: E+ B9 M& w) T经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    ) Z# V; e5 E) i6 v2 {' Q6 f7 O4 Q. m7 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-8-28 08:57 , Processed in 0.333492 second(s), 53 queries .

    回顶部