QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4434|回复: 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
    + ^. O  S* W9 M/ K- x# C- f
    图像的加噪与去噪(python)高斯噪声(Gaussiannoise)和椒盐噪声(salt-and-peppernoise)均可通过Python库:skimage实现。; s5 y$ A% S' n! I9 T+ u  X
    6 O; [9 p8 b, b& {( i
    #import os              #import语句的作用是用来导入模块,可以出现在程序任何位置* ~- P0 R" t$ w+ B
    import cv2 as cv        #导入openCV库& m  [6 |  q7 ]
    import skimage          #导入skimage模块.scikit-image是一个图像处理算法的集合。它是基于scipy的一款图像处理包,它将图片作为numpy数组进行处理,方便进行后续运算。
    1 T# w4 ^- M3 ?( S7 V                        #必须首先安装numpy,scipy,matplotlib0 S6 Y/ v5 o  F# m$ U
    import numpy as np      #导入numpy模块。numpy是python扩展程序库,支持数组和矩阵运算,针对数组运算提供大量数学函数库。
    . ^, |' B' @- b( T+ w7 y% `6 e2 ?  V* G

    ; F! {7 a7 Z1 d$ |8 Pdef boxBlur(img):5 ^; H5 D2 E6 I4 L+ {% ]. m5 T+ U% K+ }
        # 使用5x5的滤波核进行平滑
    3 L% D) p1 C" {4 \: O- k* B" Y1 q    blur = cv.boxFilter(img,-1,(5, 5))    7 |& r8 ?/ B7 Y: P! y" L; i
        return blur
    . N6 E* h! u% L
    % F4 n( s9 l6 A4 u
    0 |0 c( }; N- Hdef gaussianBlur(img):7 y: k1 v$ O- F! T0 S+ i- J. X
        #     使用高斯核进行平滑
    7 P! S) L1 E* J6 ^  h; @$ U* G" e    blur = cv.GaussianBlur(img,(5, 5),1.5)
    ( H7 p9 t$ ~% o* ~* s3 i  O    return blur
    ) t2 w% X! O; \$ R. E1 g8 _
    0 e. w4 ~. S5 L$ z" Z( S$ r. n) \
    def main():" f: O% ?# w/ a, g7 ]- v& O' Z
        # 2. 定义图片类img# `" b+ b; O( J; b
        path = r"C:\Users\98238\Desktop\Lenna.jpg"
    2 j, t6 n8 U3 B. ~' n    img = cv.imread(path)2 A$ ]+ M3 Z8 O, r0 h
        start_t = cv.getTickCount()& E! y( T8 {: c4 I
        # 5. 加噪声,绘图; \/ s' P( F/ O) c
        ##############################################3( x, G3 b& `2 K
        # add gaussian noise
    . l' h# ]# i- T8 s
    2 M7 `6 }# l4 u7 p8 f! i! P    gauss_noiseImg = skimage.util.random_noise(img, mode='gaussian')# 添加10%的高斯噪声1 V" G( d. ?, K. Y$ o
        gauss_noiseImg=gauss_noiseImg
    2 V% r6 n4 V$ Y3 V    salt_noiseImg = skimage.util.random_noise(img, mode='salt')  # 添加椒盐噪声
    8 |# A0 F) c5 ?. n+ i! _4 d9 {: ?* M8 i% c% m9 R( H
        lb_gauss=cv.medianBlur(gauss_noiseImg.astype('float32'), 1)#中值滤波( g; v1 t9 L8 {. s1 I) M

    $ K; x0 c2 o, U: f0 @1 O0 w7 a6 \    lb_salt=cv.medianBlur(salt_noiseImg.astype('float32'), 1)#中值滤波( n, q' g1 e" U( }
        print(gauss_noiseImg.dtype, "gaussian noisy image dtype")#输出一个注释
    % B: Y; c, ~2 r    print(gauss_noiseImg.shape, "gaussian noisy image shape")#输出一个注释- {+ a. B9 n5 v. a- W3 k. @
    5 b4 `7 X6 ~/ }1 |5 }. I
        print(salt_noiseImg.dtype, "salt noisy image dtype")#输出一个注释# g. S# [, H* L1 A
        print(salt_noiseImg.shape, "salt noisy image shape")#输出一个注释
    0 g; D) [3 G, S/ U/ {  S
    2 o- ?, F4 E2 [; ~
    ; s3 z  S" @+ m1 W+ N    cv.namedWindow("Original Image", cv.WINDOW_NORMAL)#输出原图片的标题2 A1 R) C5 j, A( l  W' J, o
        cv.imshow('Original Image', img)#输出原图片3 R3 `+ s' K0 K" T3 ~% W% x# a

    1 }5 N! h9 i; p8 q4 X6 ~/ f4 ?    # Gaussian noisy image
    * @! x+ |; O6 r2 N" P    cv.namedWindow("Added Gaussian Noise Image", cv.WINDOW_NORMAL)#输出高斯噪声图片的标题
    , Z" ^3 Z! @" N( G8 l    cv.imshow('Added Gaussian Noise Image', gauss_noiseImg)#输出高斯噪声图片1 _% t- T. P) y4 Z% J
    1 G! P0 X( |+ q1 r
        # Salt noisy image' h( w& \7 @9 Z
        cv.namedWindow("Added Salt Noise Image", cv.WINDOW_NORMAL)#输出椒盐噪声图片的标题
    . ~; P. E8 G! V  b( J9 G. p! l3 {, i# c3 y    cv.imshow('Added Salt Noise Image', salt_noiseImg)#输出椒盐噪声图片
    ' _% I. G% |7 W0 \6 [
    8 t) L, k8 T( X% _5 m6 D    #滤波后的图像
    " E- B7 ~7 ?( n! T5 C% d& X$ d    cv.namedWindow("lbguass Image", cv.WINDOW_NORMAL)#输出滤波后高斯噪声图片标题% Z6 _6 r& \- n6 ^' i$ h- z
        cv.imshow('lbguass Image', lb_gauss)#输出滤波后高斯噪声图片. {* k1 e6 {/ L$ l8 N
        cv.namedWindow("lbsalt Image", cv.WINDOW_NORMAL)#输出滤波后椒盐噪声图片标题
    7 X8 A2 h6 @7 ^! D4 h/ Z% ]    cv.imshow('lbsalt Image', lb_salt)#输出滤波后椒盐噪声图片
    7 I  O; j5 [- [8 v& E4 V9 ^7 d6 X3 \4 Z  r
        #####################################################' A* B4 u3 ?, m% v

    / v- F2 t7 M3 A  ?    stop_t = ((cv.getTickCount() - start_t) / cv.getTickFrequency()) * 1000#运行时间
    4 d7 k0 U9 ?* X- K9 Z" Y& L
    ' t6 \9 ?5 `/ y$ M; ?/ x    print(stop_t, "ms")#输出时间并加上单位  P! j' ^/ t, t; D" I" B8 i3 y

    5 R* g4 F, l1 O! N  c3 s, T    cv.waitKey(0)3 A4 f/ u  t3 U% n$ D
        cv.destroyAllWindows(); G8 R  m. M. L4 @1 d+ {# m

    1 U, p; l0 T9 n$ u; P% g1 U! f; B: b3 p( U
    if __name__ == "__main__":; L2 y+ f* Q/ E4 {' n. o
        main()' L# \* ~, F4 h3 ~) a. A! W
    ' y# ]6 V: N$ Z' I0 v# N% g! H/ t
    原图如下
    7 }7 c- w5 V. E2 Z! D7 c
      ?, u, A1 \9 i4 z8 d/ E1 h( E 1.png
    . T6 f& C9 k# \& s% L* Q9 R4 u! n. W" d4 K

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

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

    2.png ( }3 C! c+ U( y# x
    % D; ~6 a$ g# Y. Q8 h. A: A
    添加椒盐后的图片
    # _# y* A$ ~( R5 g) i# j) u7 C
    - ?% W% D( x3 ?1 l9 J 3.png
    , i" g, p" i2 E) L8 z3 x
      r5 u8 Z8 P' W) `4 Z3 N8 i使用中值滤波3滤波后的高斯噪声图
    ) i- y' Z: \. m 4.png 0 v! o7 D0 y( K# E/ O/ x

    - C! \) j& t3 v2 {使用中值滤波3滤波后的椒盐噪声图9 A6 y) U7 H" c# p, @+ k" O: ^# i3 d5 T
    5.png
    0 `. c6 `7 T! ~. Y: b: V
      s& ~" B; t! ?  k' T/ B, c; z改用中值滤波5 滤波滤波后的高斯噪声图
    2 r1 _6 g8 h" V0 \' Z  p. |, M! k# k# m# T7 T
    6.png
    % f$ T. E" Q9 T4 G1 E" V/ T2 a) A( e) U: D, w6 k, n
    滤波后的椒盐噪声图$ j8 a" @) A. Z! l. y  M
      L1 i9 I0 j! a3 P
    7.png
    5 y. j( w! M9 j$ Y! I! z1 i% Z
    ; _# \! u; l) ?% d7 ^! s+ {8 d: v" C结论:
    5 j  p  e8 Y2 T2 b) G$ P( \" R- @5 j经过中值滤波5的滤波后噪声比中值滤波3滤波后的图像少,但是图像也更模糊一些。
    ' `5 k. B& u% L% d" r/ s4 M, ?( _' E; ~7 r1 t* G6 f% _! p
    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-9-12 08:08 , Processed in 0.691030 second(s), 53 queries .

    回顶部