QQ登录

只需要一步,快速开始

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

    * g6 W- I5 d' s  g4 ?0 k图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。
    - m/ n1 j7 I4 z7 O* w. C/ c+ }0 J0 G
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置
    . M& Z3 p, b+ l2 K5 C9 g4 Y+ cimport cv2 as cv        #导入openCV库% e* w& v* ~- s( G
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    % l8 l5 e' t2 a, T( p- K  k                        #必须首先安装numpy,scipy,matplotlib
    . D1 I* e2 A; _import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    9 x' I6 Q- A; ?8 e. j) U0 j3 C2 G3 J4 V9 }; k0 L
    ! @% j/ N3 Q; {, L- C
    def boxBlur(img):) Z9 l' C/ n) U" U
        # 使用5x5的滤波核进行平滑
    4 P' L  x: I  ?6 x    blur = cv.boxFilter(img,-1,(5, 5))   
    ! Y+ Q2 Y* v8 o- V/ m$ G- G7 T; b    return blur3 \3 s3 }. [, z5 l% M2 j

      U) s0 r. v& ^' v. V) k) z6 X* a8 B) G0 [  {* B8 n
    def gaussianBlur(img):/ j# P1 ]  B4 O" x8 {- u
        #     使用高斯核进行平滑5 U# r, M# M# F0 W. z9 w
        blur = cv.GaussianBlur(img,(5, 5),1.5)
    8 U8 O" y  b" S+ v    return blur- t9 l" o+ r/ |. b/ ~/ M# p

    4 ~7 a, l; P: f( n5 ]4 Y" j! E4 T: b5 Z/ E" t! ^
    def main():
    - J% l4 o5 ~. p, g" W1 P3 F) {  g* x    # 2. 定义图片类img# N# i& H; i. S+ C; x7 n
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    1 U/ p' }/ q/ W. F, G    img = cv.imread(path)0 W7 n8 V/ S! J1 f& p
        start_t = cv.getTickCount()/ @/ |' [( n2 W% G1 W4 k
        # 5. 加噪声,绘图. ^8 L  r$ F$ F0 N# t1 u
        ##############################################3
    7 u4 ?7 m0 p/ M4 q3 N' C    # add gaussian noise/ G/ ^5 T# H! o' T5 f2 S
    : z' \& |3 ?8 ^+ Y0 u% J
        gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声  D! t, J% a8 J) g. g; j$ z
        gauss_noiseImg=gauss_noiseImg' f- z; ]) v, J. |4 i7 T
        salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    8 K0 h$ u2 g; G" B7 x( f, _  d, X, g& @, f: N) j$ o, o% }
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波
    ' e, b2 A$ A+ n
    + J# i1 q0 F1 H" @4 }# g    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波
    ! r/ ?# r+ i4 o# }7 L6 T  U, p7 e* F    print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    % k$ x1 ]3 [9 w' n' I    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释
    ( I# H" c7 A! C( n' p9 r: @$ K3 l! [4 K8 o% C# H, I) c; V/ n
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释
    7 g1 L2 L& i8 k1 z" S6 v    print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释/ n& G- {7 l: n+ |! d3 A, |

    . H& m0 F3 q' G* j, X+ S1 b. U1 l3 M+ \  n+ G
        cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题
    . |3 V2 C; s% m    cv.imshow('Original Image', img)#输出原图片2 m9 h+ A! y0 E+ M5 N0 M  X

    ( g- H4 V4 E8 G6 y8 [    # Gaussian noisy image( [, r$ ^* P( _4 q# |2 ~
        cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    ) x9 ^. r6 a7 ]: t    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片' M. o! B0 G+ }# Q$ y. [/ R9 k" q

    3 j+ |2 M6 b* g5 \: A9 {; N( u    # Salt noisy image
    0 {7 {: ]& `  t9 J1 `. g$ w    cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    / ?) ^0 ]' I5 }. S    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    , _, m$ b! e: p/ n( [
    , {( C$ `! C% i% }    #滤波后的图像$ e5 @( S! q1 j3 r& |/ f" Q# X& {
        cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题
    0 H& [/ c! i: E; C  O, k" i. P1 t    cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片: `7 d+ u6 M7 P1 {2 h
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题! l5 s' N' o# Y/ b! a
        cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片. I/ O( y  T: g; y

    ' I6 @" ^& a4 }$ e- C! \    #####################################################; z* }( U9 V# Z- l* ^

    / f' p0 `$ H6 P0 }+ [    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间1 m: e" r! p. i5 J0 d$ l3 h
    & B) S- H3 O% c
        print(stop_t, "ms")#输出时间并加上单位: _2 R1 m5 q" i& A# [" k

    & l, Y+ U; I( @9 Z- x3 e    cv.waitKey(0)# q- S; @8 R7 G% ^; F
        cv.destroyAllWindows()
    ! F! g; Y* T* o, W4 [: Y8 N; _' S' T1 S* H3 J

    ! t# Z. X3 J$ S- v; Sif __name__ == "__main__":, o  N! V5 L  L- A( j' g
        main()5 L. _7 K* v4 ^
    / M$ J( a3 B- y" d! _# a! Z3 Q- h
    原图如下* M3 ?5 V3 M6 p, r9 A: H
    / y1 l, W+ m  u2 Z
    1.png . b! Q- q1 H7 y$ X8 Q# O# `7 a7 h3 |
    ) y5 G% S4 S  p' U  S  f

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

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

    2.png
    ) r+ m9 F( B7 f) {0 p- D% A& H5 P; O5 E6 P2 L+ ^
    添加椒盐后的图片
    ; ?% ]1 B& q. I) H
    2 Y: ^- e0 u5 t# s1 X 3.png
    / y6 n$ c4 [" i$ l$ Q
    7 L0 L0 |2 V* P+ r6 z: ~. r使用中值滤波3滤波后的高斯噪声图
    , X& t% @7 i. B+ i8 F3 L 4.png
    $ H( Z; F/ x( t) [; I8 V& E. Z0 \2 t  I2 [  x- {
    使用中值滤波3滤波后的椒盐噪声图
    4 |; u6 U" }9 p# ? 5.png 3 ^- H6 g3 D# F1 e1 M5 J
    * N. C# y  a& V/ ?% F' n  T& k; R
    改用中值滤波5 滤波滤波后的高斯噪声图: ^- |% s/ k$ v- G' U8 e' ?) z
    0 B! k7 i$ w$ \# l- G8 [: Q8 f
    6.png
    2 i+ ]/ @5 ^* h' v
    6 n7 S6 ~0 R3 O1 Z+ b1 W' ^5 j滤波后的椒盐噪声图
    $ n/ T, }2 {9 H% m0 F* ?
    $ C7 ^2 D; {5 I3 J 7.png : B9 i( H$ B( V! u2 }
    2 Q+ z- e1 z; s/ G0 r
    结论:
    % A9 p( f0 S9 W$ b) Y& y经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。# E$ b, j$ d% p1 _3 f" e
    4 o9 s5 A  q8 `( ?( h. q8 E1 S
    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-28 13:23 , Processed in 0.366970 second(s), 54 queries .

    回顶部