QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2831|回复: 0
打印 上一主题 下一主题

MATLAB实现图像去噪 滤波 锐化 边缘检测

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。  {/ A, p" n( \5 |9 `
VeryCapture_20231209165431.jpg
9 s. c0 B: c) Y6 `7 j  j* T6 V  K. B# Q1.读取图像:
  1.    I=imread('1.jpg');
    - e% |; g% d% B6 x
  2.   n) r9 }( e5 g1 y+ Y
  3.    try5 v1 }. C  }6 }, o\" `% P
  4. ! L. V0 z: {( T$ B8 O8 C
  5.        I=rgb2gray(I);
    5 b! \# m$ i0 D+ x
  6. 4 E4 N2 |2 K/ N; j4 l8 V: b& {; N
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。' P0 a' |4 \: X
' W; T2 J! Y( q2 b$ Q
2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。0 u, @0 d9 Y$ ]$ V  i; O+ P
, S: ]# Z, \7 p9 S! d5 f
3.显示原始图像:
  1.    figure) J) c2 t; Y7 l. O' N) v' f+ ]

  2.   Q: g% H) d. Z( [% ]  t& C
  3.    imshow(I)% E$ {# f  [$ s1 p) C, ?) k1 Q
  4. / K/ s6 w6 m+ j
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。( a' i  w9 v2 a

9 K/ ]* A6 j2 e$ m4 o+ f4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。9 W) b1 g: l5 h4 z* Y: _$ Z

8 O% F1 U, Z7 F5 J; M5.图像锐化:
  1.   [M,N]=size(I);. O$ o; k9 e( k# B! U6 Y

  2. ) ^0 e# ^+ l  f, ]* A# g5 A# {
  3.    f=double(I);& B) i- X3 {$ ~4 |
  4. 0 ^8 H* q4 u6 @) i8 v9 t7 f
  5.    g=fft2(f);
    - C; Y$ Z3 i9 |, H

  6. 9 d# d- e2 T6 V! B% B( Q& H8 _
  7.    g=fftshift(g);0 H% s0 x0 W& I+ M0 P, J' X9 w# q8 e
  8. / g0 a8 h6 t9 P% L5 M
  9.    n=2;6 `# `9 x- W# @2 X\" y  ]
  10. # T; D6 R5 k( S5 r. n  `2 q
  11.    D0=3;: `& E' ~' [' }$ k, U+ j# @, _

  12. ! F1 s& q2 c- J: u9 [9 ^6 r3 `- h
  13.    for i=1:M2 `/ M- y  [2 F2 S5 J7 T% h
  14. 8 E: u% D. t& j
  15.        for j=1:N
    7 J: P! y; s4 N) J\" W2 X  s

  16. # q. S% l7 o: E& M5 }3 h8 O+ ~( Z
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作1 a! {/ a5 E% S4 i0 ~( J
  18. . N; d* H9 W! ]! G
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化
    , i/ ~  n8 M; q

  20. ) a2 A8 m' c& Y- o5 ]# o& T& o
  21.        end
    # O; @% g0 y4 x: v

  22. 5 y$ v/ @, A) ^3 r2 K- S) g: J
  23.    end
    / b# c8 e/ r: z) ?+ }

  24.   }5 H7 [3 A' J6 ^# W3 r  J; q
  25.    result=ifftshift(output);' A& H* \  j* `- g5 x- d
  26. ( g\" B\" s+ s1 _% s+ c+ w# i
  27.    I=ifft2(result);
    \" U/ u5 o# y  v; d6 \2 E0 C
  28. , ^8 ?7 y: D\" b\" I
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。
& F) x- _' C* U# Y3 a, Y% w/ I6 `; f& G9 g- a$ Q% n
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。0 Z1 n' I: }2 a

# T6 x- ?# c) G8 j: p5 @- l7.边缘检测:
  1.    I1=edge(I,'prewitt');
    + e$ \+ J4 x9 }! [1 w( m/ y. ~8 i+ U
  2. 0 P7 \+ c' ?) @  ]8 w' d. R1 `2 r
  3.    I2=edge(I,'roberts');3 N4 J0 p* _) P
  4. 8 c! a1 c4 ?* Y+ e5 }, a1 I9 d
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。
' l! o; m) o/ N, `这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。% r' Y' F6 Y8 G& q) l5 Y

" v9 S  [5 X0 B$ `, S* S) C/ T
1 ~  v$ J6 Q" Z5 l: \2 \5 {
  Z# M- }% u" e* T

MATLAB实现图像去噪 滤波 锐化 边缘检测 源程序代码.rar

6.65 KB, 下载次数: 0, 下载积分: 体力 -2 点

售价: 2 点体力  [记录]  [购买]

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-6-13 12:10 , Processed in 0.386022 second(s), 55 queries .

回顶部