QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4384|回复: 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
    1 j( h' B& m. [$ F' I! c
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    % ?) R5 i) H, K7 P9 X( ]
    * i  V: ^4 U: Y6 a, E; |#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置, D2 e3 S6 u/ q$ q- P
    import cv2 as cv        #导入openCV库
    ; @* v$ i6 w( L2 m/ r+ Jimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    + E( }3 |0 A, j- i                        #必须首先安装numpy,scipy,matplotlib
    & j( X" L1 D% Cimport numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    % y) S1 {) F7 n* L+ W" ]6 N0 s( ]- ^* w9 j5 c0 y! O

      A& @, ~/ I" Wdef boxBlur(img):
    # n1 U& C7 w) ^) R1 S6 k' P, ~" N4 V    # 使用5x5的滤波核进行平滑/ e% _5 [4 Y6 Z: [0 q- ^
        blur = cv.boxFilter(img,-1,(5, 5))    6 q2 d* C) o& I4 N3 ^% b, w
        return blur
    ! M% [$ K6 ]& Q5 }$ m
    & y, L8 ^8 I( y# Q2 E, f
    * T4 X* h( d! z. x$ zdef gaussianBlur(img):
    / d  U4 q$ v' k# b$ ]- Z* v) o    #     使用高斯核进行平滑
    3 ~" c) @% h% ]: P( E) h. Q* M    blur = cv.GaussianBlur(img,(5, 5),1.5)7 \9 \9 h2 c5 i  D+ q$ L! \7 d
        return blur# C3 ~; y8 r5 c5 o

    ' b; L( p& }. }! k$ D% \% D5 ?* ~( I  W; ?
    def main():; |0 y$ _# L2 c$ F- w+ Y
        # 2. 定义图片类img
    ) l% n5 R9 W& f& Q: z    path = r"C:\Users\98238\Desktop\Lenna.jpg"
    7 p& I! K% c% ~3 e0 ]4 j& f    img = cv.imread(path)
    * ~8 n) X( b' S  S7 r0 Y    start_t = cv.getTickCount()2 m6 K* J# [. k. G) ]" d) A, y
        # 5. 加噪声,绘图: u7 j4 C3 i* z
        ##############################################3. l; C5 y( i2 ]! l9 l! \
        # add gaussian noise
    , |# [/ z( z& i  c% ?( u
    ; G; A) r! ~" R3 H    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声& E5 D: j( N2 P/ m+ Z% H
        gauss_noiseImg=gauss_noiseImg1 o" l' d% [$ B& M6 H5 F
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声$ S0 I; N2 n& i6 B$ i: m
    ! A" X% `7 R# l8 f8 L+ }
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波  e/ _% z  @# K( j* J; o& ?

    1 x* u" W# S- v8 R7 E    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    9 K3 g% p& Z- t9 G* U4 U" z: h    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    $ }/ u) B5 b1 y) l: y    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释4 s! {8 I# f" s, n2 h8 S  O

    5 P8 i/ E" \( i  |    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释; ]# V+ d0 T# t" V/ J
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释% f5 w; }2 ]3 O- _0 w! M% ]
    ; |+ ?" m6 Q7 q) x5 N. }

    " G/ H# |/ N1 B5 v( W    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    / V. A  T. G5 M6 H! E, ~5 b    cv.imshow('Original Image', img)#输出原图片
    + ^( B2 A0 m, d2 a& c. f
    / L" K9 c8 p0 @9 M/ o  L/ X    # Gaussian noisy image7 Z% Y7 N" P2 L
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    - _# H+ L% o+ G# b    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片1 e  C& m( x) B; `4 ?

    % Y/ @& K) L5 {  Q( d! e    # Salt noisy image
    5 H3 t8 {% w+ t    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题% R9 r: u- g$ M# @* D3 e# L7 \+ B
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片/ Z% L/ n$ J* L
    8 D% Y0 `" W" c
        #滤波后的图像0 ]9 `' I9 W# b
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    7 l  P7 z3 u" ?5 Z0 k* Q    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片
    : q9 J- L' S# w/ U) V    cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题- {0 c# S9 s) m% @1 m
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    $ Y# Z  V3 `% S- a) C
    2 M' X: ]  r4 C4 _! f) x    #####################################################
    6 X" y3 I7 J1 `, ^! ^* G. ^& C( l" _, c
        stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间* j3 h8 e1 T- O! B6 G
    / E5 Y/ ?; E0 \4 u
        print(stop_t, "ms")#输出时间并加上单位( s0 Y0 I# J6 G* T) a

    5 ]9 F( K1 g- Z( U7 W1 [1 [/ t+ j    cv.waitKey(0)& B; K8 v# Y0 z* j/ I) ?- o
        cv.destroyAllWindows()
    ) P: z+ `6 m" Q4 C* j
    ( U. l: O* @0 [. ?! ]) P1 [: |& \  M7 g; B: b
    if __name__ == "__main__":
    8 C  w! k4 R8 }6 Q0 \    main()
    - b! T0 c2 d& T6 k3 R; }" D1 j) |9 b9 u" z8 ]. h% s
    原图如下
    ( E+ n: Y1 Y* d) i
    2 T0 ~% [; F0 i0 I2 e; m 1.png 4 u  b" F% o; E7 n. D! m9 D$ c
    , Y5 z0 w$ w0 g( I# J4 m

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

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

    2.png % p. ?. l. u- q- |: A) H

    7 G" h* k- ]( W) R) M6 c7 G9 ^添加椒盐后的图片) Z' B- C& I5 E& t
    2 ?0 A+ o/ X6 T* y' l
    3.png 7 o- w3 p9 \) |/ [" h; R, l
    / W' o( ]. w+ W" M7 f6 \+ q
    使用中值滤波3滤波后的高斯噪声图- L, b% a( f4 M+ h
    4.png
    7 }  ]  [, [- J" g8 M" a
    # N' H8 j* O6 r: l使用中值滤波3滤波后的椒盐噪声图" A3 J; B) j+ h7 M
    5.png ' M7 _- V8 o2 ~/ N2 I& t% ^8 `# K

    , o% Z+ f- Z" o5 e! u1 p( S改用中值滤波5 滤波滤波后的高斯噪声图
    ; h* z9 |1 j- F  c
    ! E/ E0 ?& f4 G6 H) d' t4 W  f 6.png
    ' F! u7 e% ~" @7 @- _  I3 _6 k+ q4 `& T' i  s! ~
    滤波后的椒盐噪声图% @' |1 `9 p+ o9 g, U1 R

    9 n; Z' m9 |: J3 _% a6 | 7.png
    2 s; |) {9 v! V, Q
    , H5 r! s6 S. i, |结论:$ |/ b9 a8 n+ d& e: X6 I
    经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    1 @5 }. T0 V8 F/ b# V6 _' `3 A/ @& r& E- L! j9 F
    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-9 21:27 , Processed in 0.420830 second(s), 53 queries .

    回顶部