QQ登录

只需要一步,快速开始

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

    2 C" U% y* F. G$ p! ~图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    8 I- C% R! z" ?$ p* Z) z( f! T" v6 j; q
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置5 G2 H4 u% m1 s' x0 X
    import cv2 as cv        #导入openCV库5 ]2 o  L, _5 j- d
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    , P6 p; D  ^. Y% [6 q                        #必须首先安装numpy,scipy,matplotlib
    - @; }$ j6 _8 g3 ~import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    7 H1 r8 Z: T4 h$ x, |  M- n
    0 e4 _6 `2 M! B& o0 b! i8 q
    / {; M/ ]) {6 C# C/ bdef boxBlur(img):: ]  L/ T' ?4 ]" W; t
        # 使用5x5的滤波核进行平滑
    3 E  T- ?: k9 L$ j    blur = cv.boxFilter(img,-1,(5, 5))   
    ) A% r1 r8 ?. b, A) g    return blur
    ' u7 r6 x* z4 e" l( c0 R$ K: ]( T6 w4 o) G) n

    # \9 _6 G7 w8 S" rdef gaussianBlur(img):; R. Q$ C+ e5 e& k
        #     使用高斯核进行平滑
    / F: Z, ]3 G8 d4 N: n; U, \$ J0 J    blur = cv.GaussianBlur(img,(5, 5),1.5)# V4 ^, e. ^/ s" S% L  k3 K
        return blur0 [) A6 i( ^3 i4 ]" s

    4 e8 K0 m* c3 v- C- T, L7 }$ `6 t' @: A' ?
    def main():+ ]3 F, b* `6 W
        # 2. 定义图片类img
    # I6 S( N5 p: g6 C    path = r"C:\Users\98238\Desktop\Lenna.jpg"
    , W& @% P$ r, F* [2 t    img = cv.imread(path)
    ( s* o, e# e& T2 {" c( g% F6 \4 G' X" X    start_t = cv.getTickCount(): z! B! J# M7 M2 {) o
        # 5. 加噪声,绘图, R+ f; r5 D7 }& V5 C
        ##############################################3# W, K- T* d: W  x" J6 n2 J
        # add gaussian noise( N9 T9 P5 \1 G6 u! u

    , B: [- q6 p8 A& V% E7 ?2 t1 w; J1 O    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    0 E0 h, G# y5 ~4 c% z    gauss_noiseImg=gauss_noiseImg
    % T& g% Y  a3 h( o# h4 t    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声( R7 k8 |8 h* b" U
    * ~/ h1 k! L) ?- B4 M: A
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波! Z" a. y! J$ p' M
    6 H$ W! L+ f0 X0 U: L- ~( q  B
        lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波. h! l0 {, [$ r" B/ l+ H
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释+ @1 h' y! N, H  P' x8 j2 M
        print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释: q: ]5 Y2 Y' L- B! E

    # e. H: s$ v" v    print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    3 B: S( x, l9 o) O0 ]5 w! A    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释9 x! i8 R0 q. l$ y

    & v8 n7 F/ c! D( I
    " B& Q5 h4 O0 V7 X, \2 K7 v9 Q    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    9 ]9 B" a3 _% B, v( V) a) D    cv.imshow('Original Image', img)#输出原图片6 \1 u1 l& ]4 K- B& N

    5 y. x( C; O3 O. A9 J    # Gaussian noisy image  a! F9 H& {1 H" k" p" D
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    3 x5 @- V* X' [" N$ i, }    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片2 K5 @  h1 ^8 |+ R; j* |$ U
    9 |/ l8 }7 p1 ~1 m* D8 |' e0 I
        # Salt noisy image# `9 C+ k  [  P
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
      ^- F# w8 F7 S: X2 |) @    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片: y( N: r. X% S7 B  k

    " v6 i2 W4 J' P: H9 N) q    #滤波后的图像
    , n5 f* d% |" z$ }. I; @* M* I    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    ( T1 V! D& g* @    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片- E. F+ R2 e: |" h
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题( u) J) c7 b! c  H- X
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    6 m+ S6 O/ ~# O0 Z8 O+ f9 L+ l; g. D5 R: m. G& W" P8 T7 w
        #####################################################
    3 M( n) a: s- B
    0 Y2 z! W0 I# F0 `2 ^7 f9 [5 S    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间$ ]$ z% Y/ U/ g1 S) v3 v( n: D0 H
    2 F3 o/ k8 G, y
        print(stop_t, "ms")#输出时间并加上单位' n' G* B2 \9 N
    : o2 K3 y# j0 h1 D" o7 `
        cv.waitKey(0)- m  u! _6 c- h8 q# B# L, R9 P
        cv.destroyAllWindows()
    " N$ f2 E" s0 X9 ~. `! l2 z! x1 f7 D% ]1 E  U

    & u: }' z/ t$ J# z! V, cif __name__ == "__main__":6 e8 o" o/ [' V/ \8 O
        main()
      g: B, g: @4 ?# l3 `* w" ~$ ?
    1 |- @9 a. `, X原图如下
    & Q0 O- b0 W3 A5 V6 G1 v) P( V, `; T& X) _
    1.png
    7 N( C' A, I* A: q: y8 t. e6 }% F7 P6 d8 G5 M  Z( N8 I/ Y

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

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

    2.png ) p/ c7 f5 o' B* N+ N2 C6 V2 P3 X
    + e4 K7 O7 H: u2 u% x9 m* s  M' _) B
    添加椒盐后的图片3 m0 @' u2 a9 p' I
    9 Q: {( C; y* D
    3.png   E' l" @! P+ @3 x0 R8 {
    ; `9 j0 E; g9 G1 |
    使用中值滤波3滤波后的高斯噪声图
    7 A) ]% K6 j6 ?' C/ q7 U 4.png : V4 R. S5 \$ T

    ) Z: V% j9 Q% C) T& i; B7 n使用中值滤波3滤波后的椒盐噪声图
    7 \# K2 C4 \' z6 Y: Z- ` 5.png
    0 V6 Y6 d- X- r8 m1 R3 F
    5 P6 y8 Y) @. n; I4 [改用中值滤波5 滤波滤波后的高斯噪声图
    & @& p+ E8 y1 B+ s. a( X
    # @' X; x' S& g4 N0 n. f* G# u 6.png ; Y7 J8 [3 A5 E& i) j4 f- G2 L4 I: u

    + T5 [& ]( Z  R( q滤波后的椒盐噪声图
    5 C  Z5 r/ E5 B2 \* d: n$ t9 ]2 D: n
    7.png
    ; T+ D3 E2 \# ?$ v& o
    7 H& M0 P! {9 z结论:
    ; [5 U" H2 r; C* k! f经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。9 x  E0 E8 O! {" e# v/ N
    7 Y# z8 o3 O" t
    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-11 23:24 , Processed in 0.311957 second(s), 53 queries .

    回顶部