QQ登录

只需要一步,快速开始

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

    7 x! ^# I" {* A图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。: F1 z4 M: h; Z0 d  a7 O1 O
    - B1 Y5 P( J/ `
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置0 e' x0 S7 l1 \* O
    import cv2 as cv        #导入openCV库
    ) s3 ^( M( Q, v* b  wimport skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。) y7 p# K$ D2 p$ y
                            #必须首先安装numpy,scipy,matplotlib5 A' y( Y' V! A2 o7 M
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。- I, [& c9 I4 s- r

    : `/ d3 U+ n* E* F
    & b' V2 X' z2 F  }def boxBlur(img):7 u0 P8 |! |5 l2 A8 ?1 A. u
        # 使用5x5的滤波核进行平滑
    5 [8 G8 j, d" r- O    blur = cv.boxFilter(img,-1,(5, 5))   
      N4 h0 r8 \+ d$ P% y0 t( f# W    return blur
    & P! A) R! _! t
    2 y/ w) q. y) C( u/ b- W% K4 Y3 i
    . S3 c0 e) J- |9 O! sdef gaussianBlur(img):
    * a, w: N( x9 t& l- @8 P, Y  G7 V    #     使用高斯核进行平滑4 C1 e% ], X/ d4 [
        blur = cv.GaussianBlur(img,(5, 5),1.5)* D) ^  ?. X/ l7 F" ~7 O/ c
        return blur: Q- v  F% G/ J) U% l0 j

    . e8 a5 y- s+ K0 O4 e  E# r$ m6 R; `
    def main():
    6 f( O3 h# h" x" F9 N    # 2. 定义图片类img
    0 L" `  r9 i. S. p    path = r"C:\Users\98238\Desktop\Lenna.jpg"  v& D" q7 {# ~2 U
        img = cv.imread(path)- V* F( e- S3 q' g9 `7 u* |
        start_t = cv.getTickCount()
    - d# ?: v" Y$ x4 [8 H5 ?8 m    # 5. 加噪声,绘图
    ! e" t9 W% Q; ?$ C    ##############################################3
    : M9 l! m# K' H; y: v    # add gaussian noise
    5 S/ E2 O- M( ^  w% q2 d0 H! e& U/ w# m) l! D5 l* ?1 q
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声
    2 H' Y' u8 l, \) c- @    gauss_noiseImg=gauss_noiseImg
    # v" K3 e: {, Y( B9 n" V    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    4 N% w* U( `" r/ ^. I) ?! V1 S& G. i0 O3 i' r
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波; }3 I. N$ |, L9 l* W8 ?. u

    7 S5 c. y: d$ l' C    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波- ~$ a: O, f" P; p
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    / M1 X  U1 c, C1 J0 ]* I$ H    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释! ]3 d6 g# `& S- ]; n8 w+ v. t
    " d$ [- I$ Z) v
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    % ?" T& }7 m- K4 I$ w  b5 Z    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    " w+ k6 G# X1 d( A6 |0 d9 E: x8 t' s# @8 g, z

    : v3 S7 Q% P) b  `    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    * G8 T6 F% {7 n8 C8 T: {% X& _/ t    cv.imshow('Original Image', img)#输出原图片% h1 q: {7 V! r% j, j4 c/ W
    4 x* s+ p- g4 }% n
        # Gaussian noisy image
    7 K$ o# X6 ^4 Z% B9 z* K2 J; S# ?/ y    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    5 v+ [/ b+ A* I, i9 M6 r; Z' {, d    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片
    " w7 V# L9 M5 z. s
    & r4 W  j6 Y' R; B2 b    # Salt noisy image
    / ]& }$ l0 ~3 u) b2 K    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题& c6 F, x2 r( o9 `# d$ b6 j
        cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    ! f  c* q# O* n: z5 \% c4 S+ e. S( b. v- d2 d* P) i+ [6 n
        #滤波后的图像
    8 F; p6 J7 c* B& I$ g6 l    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题( Y. z7 x' L0 Q/ U1 J
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片0 m$ o: s  P8 D1 \; x' c
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    3 {9 z5 Y& H, Z! U. m$ e: r* w1 w: R    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片3 o+ W. p. M- O2 Y2 O: H" u2 o
    ( L. c) x2 |0 M7 f0 Q
        #####################################################
    4 k+ D0 \+ ?7 c$ J$ O6 D9 N0 N, e# e- {( S
        stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    ( y1 T/ C1 k( H
    # [/ D) ?) i/ T5 o; a7 Y# A. d    print(stop_t, "ms")#输出时间并加上单位
    5 C) N' F& ?4 Z- ^
    ' l; f1 z2 W& A& W: A    cv.waitKey(0)  t  p- ]0 l5 g5 E
        cv.destroyAllWindows()3 r# x( f2 d7 s2 x* m
    , N/ w% Z+ Z. G" E  g( N
    ! ]. E7 P2 N7 y2 R+ [3 K1 \5 H
    if __name__ == "__main__":
    & L$ g) X4 _' W  h% w3 D1 _, I+ q    main()
    ; d* O$ d/ W7 n  Z
    ; o! n6 s5 T  z- T- L8 ^9 R& u原图如下
    ) K" w* C) X+ D# M. h, s7 }( r4 {4 h' @
    1.png
    / Q( |  p/ o3 f: T* I3 w
    : w* S8 y6 q- ]

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

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

    2.png
    9 ?. f( n2 n! q* r; w6 S( H* D
    + u, v  w+ E7 p! o5 S添加椒盐后的图片
      E9 ?- F4 r) V- Y- ?( `5 Y* C8 ~+ l2 I8 U  a, Y1 }; m6 ?( X) }
    3.png
    . \4 F' f& v9 H: i
    % y7 H! z1 s( m$ x使用中值滤波3滤波后的高斯噪声图1 [5 O* S" i2 t, o# W) m+ E0 [
    4.png
    7 D* B! y; s% L; l% ]6 y4 g; M) I
    使用中值滤波3滤波后的椒盐噪声图) I& }" y4 f$ U
    5.png
    . z7 x# {9 ]% o: g1 u% ~3 u# g6 r+ X1 ]
    改用中值滤波5 滤波滤波后的高斯噪声图# S0 ?3 k( u4 }5 L/ t' Y

    " K; e6 H" g% f/ S 6.png
    : D1 O4 T% q- a; v) Z6 [! w. |! y
    滤波后的椒盐噪声图. J& n" P9 Z3 r+ t+ ]: R! X
    $ l! }, Y1 \: L5 ^& H
    7.png 8 ]4 M, w+ C. c1 ], E! y8 ]. ~
    9 ?5 [4 T8 B$ A
    结论:
    ) h' p" k- i, G& p6 j经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    1 \- W0 B% b$ f
    * ~; X7 S, S! n
    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-11-16 20:36 , Processed in 0.471770 second(s), 54 queries .

    回顶部