数学建模社区-数学中国

标题: MATLAB实现图像去噪 滤波 锐化 边缘检测 [打印本页]

作者: 2744557306    时间: 2023-12-9 17:16
标题: MATLAB实现图像去噪 滤波 锐化 边缘检测
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。7 \* v( V2 P) d5 D3 ^
VeryCapture_20231209165431.jpg + `+ E; n  p" t4 Q+ m+ j/ O  \
1.读取图像:
  1.    I=imread('1.jpg');
    4 }; f( K. n  t) \2 _3 b* t
  2.   k3 q4 r0 O, @" X. F) z2 }$ Y
  3.    try$ t9 M2 z9 d1 ?& _' \" `+ K

  4. $ t/ U) K& A" J" a) U' i* p0 y1 Q
  5.        I=rgb2gray(I);
    7 \/ ~7 {0 W* f& w5 @7 y3 c

  6. 7 b9 ~2 J" B8 P  k+ V; k# H" P7 h
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。1 M- r& g- T8 d) J  F% \
+ P# l. C2 ?8 i# b8 h% e4 i- u. J
2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。) c6 v3 B+ R1 z% z

3 t  T( z0 v" S, z9 i! V3.显示原始图像:
  1.    figure, X+ {+ @3 }! c9 l4 J9 f& g( q3 a
  2. 9 b2 X& q/ h0 @, Q, X5 E9 t
  3.    imshow(I)* d3 j$ {, O  W

  4. + }' E: M2 l0 @/ _4 @
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。
5 {& r" ^- V0 c1 c7 a& P+ z6 g1 T+ y* H. ]
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。5 i8 |$ R6 ^/ x4 C, C  n6 V

1 c- x. n2 I& n' F' D8 u5.图像锐化:
  1.   [M,N]=size(I);1 v5 K( T2 t! K6 Q( F
  2. ! J4 @. c. T/ v5 f1 P
  3.    f=double(I);9 ?4 V: @0 _& \; D, n
  4. . u) z% Z& F9 ^# N
  5.    g=fft2(f);
    5 R4 s2 g/ X4 }1 G7 i

  6. 1 F  z, {: p8 V1 [6 l
  7.    g=fftshift(g);
    ' e" L* s8 `& n9 J' n% K
  8. 7 _3 s& K: M6 X. K+ r
  9.    n=2;
    " A# |; K& n/ S. c% \
  10. 0 k3 m6 @3 x( w  Y( [3 l5 @& v
  11.    D0=3;
    ! \/ H( S; ]' m  w( T
  12. * u3 |& q7 j% F* P; X" ~3 a
  13.    for i=1:M) Y) Q* J8 V, Z; }
  14. 1 i. w* f6 R: g7 ^8 g5 c
  15.        for j=1:N: R* V5 ~, {; q1 y2 R

  16. . t$ y* ]8 r& v) p: z3 X, N' f( P, ]7 s
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作: ?; H: L8 |6 b" T1 X. s( X4 c
  18. $ v! _  q6 s$ B( l- o2 F5 Q! ]5 n
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化
    1 Y& E2 n. l' p4 u/ Q- n! U

  20. # Q. }; }" x! K2 G5 U
  21.        end
    - j; r; `! P4 h* L
  22. ' c# I( L0 ~/ f
  23.    end, P/ {7 b! o6 T% E8 W' f

  24. ! m- T3 F, q# ?; n6 O3 S
  25.    result=ifftshift(output);  g5 p+ }6 l+ C3 U2 [% y( u
  26. + E1 ^! c8 R* T. `& d
  27.    I=ifft2(result);
    9 r1 \4 |9 T. R- F5 d7 v  Z6 ]& M
  28. % g4 H, H# \" I9 K$ n3 A
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。
4 r0 q# m# J; C, ~9 r1 A. \- t5 y5 Q8 k- h- P6 I
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。* ]% M' \5 U! d& x3 z* m, z- X; O
% R2 [$ h' ]3 j5 F* h
7.边缘检测:
  1.    I1=edge(I,'prewitt');
    / }! S6 A9 D7 A, l& N
  2. 6 v; e* B! F" h9 d8 V# v3 |
  3.    I2=edge(I,'roberts');; L" t" m5 B; T, ]) V. W

  4. . a1 t# @+ C, i  V
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。& Z7 O+ P# E9 D! H. ^9 ~! F  r
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。) u! D5 N/ m8 A% F. d2 h, [9 z+ d
+ Y/ ?5 @' B! e% ?6 s

) C$ p# H/ {7 G  F0 v9 _: X; J$ P9 x- e  b4 E

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

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

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






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5