QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4332|回复: 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
    ! Q  G  M/ b0 Y, X- ^
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。/ N$ F* Y  Z0 R% y7 E: q6 i, g

    " V: V8 A; `! @9 @( ^) Q* }4 q#import os              #import语句的作用是用来导入模块,可以出现在程序任何位置# H) L9 w; t  L; m8 W
    import cv2 as cv        #导入openCV库' j. S, i* g& y6 g, K9 }2 l; y, n
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    9 R# B- ?! y- M) \) v: B/ E                        #必须首先安装numpy,scipy,matplotlib
    ; v; Y' |. b; \: i4 u$ U9 U9 a( [import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    # l( \# H. {7 C8 Z6 Y* ~( }6 e" _1 X6 e8 h. b6 ?! H- [

    9 s, @+ ~. l! V  b) zdef boxBlur(img):% w3 X1 `# i8 A+ j7 T4 P6 w2 Y
        # 使用5x5的滤波核进行平滑4 x+ z3 G* x) D
        blur = cv.boxFilter(img,-1,(5, 5))   
    . H" a& B1 o. u" m    return blur
    % \; Z: U1 o# F) ~2 S9 t2 z  X% H# A9 j0 C
    $ u0 [8 U- ~0 i5 M
    def gaussianBlur(img):, D' |! }# `5 j. a4 X! i- J
        #     使用高斯核进行平滑
    + h  X5 w. X4 f0 q    blur = cv.GaussianBlur(img,(5, 5),1.5)1 x3 _+ j# G4 L, I3 \
        return blur
    * o" b) O! W) ?# V) y- ~/ G9 p9 G9 I2 z; B
    ' O- G' d3 S. k: t9 ^$ {/ B0 X* B  ]  b
    def main():( A+ E! y( o5 X' h
        # 2. 定义图片类img
    # y; F3 F3 N7 z; D    path = r"C:\Users\98238\Desktop\Lenna.jpg"
      q1 D  c9 y9 X& f8 u    img = cv.imread(path)
    7 Y6 v1 c( u8 I& ?' B/ p# E    start_t = cv.getTickCount()2 e! M) V5 O8 Z, ~1 c% x1 l
        # 5. 加噪声,绘图
    6 v' d' L* ]$ a4 R$ p  R( M    ##############################################36 D* W* y7 ]+ _' g7 m
        # add gaussian noise
    6 D: }1 H2 j  ?8 D$ }. o4 p, t( E& O: s' t$ {
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    $ N3 {# U: d/ N# G5 _* W/ P    gauss_noiseImg=gauss_noiseImg
    ! X( X/ G, F0 e, n    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声7 D) u! k& `. p0 C/ d: l/ g/ L
    / ]: c' S9 j* c
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波4 y  E! y" p9 n' c2 X7 A1 C

    . s: }1 {& N4 A0 k# B- {    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波; a( i% h* i* N% n
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    ! a6 `  `: g. t4 O    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    0 b, g( L8 Q  U0 r2 F) u! {
    7 D5 Q; v0 [) Q/ H2 B    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    ( X: Q1 I2 I0 x    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    . F2 m# R& L# J' J3 W' }
    2 f( x$ _0 U6 K* T' s: J- N' K; y, E% H+ {3 G' r; I+ c
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题" `; S/ @5 X  T) X6 I) }2 D+ W
        cv.imshow('Original Image', img)#输出原图片
    $ B$ i3 W9 T& _6 ^7 Z# n0 D
    , q2 }1 M& X1 P1 t    # Gaussian noisy image" _/ j9 C2 J$ h- `4 W
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    ' e! ]' A# v" F( T8 G0 o    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    ! O% h3 |2 V: T, m6 ~1 S7 Y, K9 j4 h& n! H* h# p, D+ @. Z
        # Salt noisy image
    6 ~" E( }" y( i    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题9 D: f- V& c; O8 N6 V3 M- A2 I9 y8 i$ `9 o
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    , l+ `/ g' q, D) ^. r" ?  a/ z
    0 C; I2 }. X' x2 D    #滤波后的图像
    2 ?7 h5 v/ n4 i. Z$ i1 Z# H    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    4 m* F9 u% t7 B" |3 f3 H3 X    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片/ n6 g( C: T5 B# x% n* }
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题0 `; ^# ^- X' _/ N: l' X( t. k
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片7 v$ k, y2 V' \9 E* x! p2 n' h- j
    8 E' o, n- |: O$ L/ w/ S+ c
        #####################################################$ w+ R9 Y/ @* {) Z3 B2 M$ {

    ) D2 `! N! g6 H8 V6 D/ b  _" W    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间7 I/ ?$ d# B# x: K) `9 Z$ y2 f" p
    4 t0 c5 L. p  t& b
        print(stop_t, "ms")#输出时间并加上单位9 ^. X& [/ Q5 |. Z8 E, C

    5 f; ~5 \5 O8 u. f+ c    cv.waitKey(0)
    6 D1 B8 P# n4 X' @/ K9 k' D    cv.destroyAllWindows()- O% x9 \$ z  N# T$ O: R
    - d& c$ n: W6 @/ _0 j3 P! k; b9 A

    6 h% \0 e. H9 R% [if __name__ == "__main__":8 t" a. t, M9 n; e# c* M- p
        main()
    " `; X3 o! m" E6 M0 r
    1 M7 Z) d' V6 L% U2 M原图如下
    + |' \* Y6 x* r% l, b* [0 F' ]3 T6 H& v9 b
    1.png 5 h% T: [. l2 y; i+ u
    8 G' u$ W; W( {+ n

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

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

    2.png 8 r) K) m# s' v7 v
    . g- K6 _: a9 y  I* A2 j: i
    添加椒盐后的图片! Z) m$ W5 `2 E! ]9 [9 A1 G: d

    ! C, j* [6 z- n6 N- {  h& J3 d+ b 3.png
    6 [* ~- I0 u0 b$ u$ H7 R7 }: H3 J& Q0 E' ~1 x) t' `9 Z! ^& a* ]
    使用中值滤波3滤波后的高斯噪声图/ }' E; f+ f3 Y9 u
    4.png 5 |+ i: Z7 h( [, A; o
    0 u6 i3 y- A9 \
    使用中值滤波3滤波后的椒盐噪声图
    6 C5 n* S" E0 R 5.png
    / R+ {; Q6 y: F" g  m/ L+ g' S- w' r
    ; J- z5 \+ H% t( {+ }  @1 T0 \改用中值滤波5 滤波滤波后的高斯噪声图
    . p6 X5 r$ G5 x7 K& V% d: G7 s+ R7 j$ z" ^" x' ], ^; H9 {
    6.png
    ' u& h7 T4 o+ ~( t$ f) ~4 b: G, O" ?
    滤波后的椒盐噪声图
    3 x0 u" M+ ^7 Y# f! y( E5 l3 }7 i2 s* K: N* q
    7.png ' s7 d2 t/ E2 w7 a
    * F: X- }( l3 L* B# c
    结论:
    0 n! ^) M1 U, u4 L' H经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。1 r" b0 m. l0 ^5 m

    4 E! z3 Q& y4 R
    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 01:17 , Processed in 0.436214 second(s), 54 queries .

    回顶部