数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-12-9 17:16
标题: MATLAB实现图像去噪 滤波 锐化 边缘检测
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
! I6 S, Y# O! M- _- G9 E& U" S# N VeryCapture_20231209165431.jpg 6 H$ U- j9 S2 T% ~! I3 }4 o
1.读取图像:
  1.    I=imread('1.jpg');( s  q+ ^4 _: X! _, D* l
  2. . W- A$ @4 D: U$ U+ s) X7 x$ r
  3.    try/ ~* J; r1 Y9 h$ M2 G  F

  4. / V  g' s4 s2 T* I
  5.        I=rgb2gray(I);
    8 P! U& s" ^; g
  6. 9 E% r( T' Z6 y& X* ~% h  I8 m4 N
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
8 l$ ~: [9 P4 P4 I
! }+ `, g  B* W, I7 S. a; i% n4 S" W2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。# l3 t. y8 w) N) t" I

$ c% e0 B/ e0 L. A1 H3.显示原始图像:
  1.    figure
    0 E  A( u: R+ C% Z, w# u4 g
  2. # t0 t( U; G" z$ [  p3 c
  3.    imshow(I)$ G1 y% J* B* [! g7 {  J" Q* b  m

  4. : r( f  r/ L( Y4 R, O, C2 ~
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。" Q4 T/ \9 u$ G$ E

3 g$ Z% a0 U( Y4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。2 i4 {! [" ]7 j0 ^" q) `
. ]  h( N& D" b8 u1 H# n
5.图像锐化:
  1.   [M,N]=size(I);
    $ Z# N+ \) B0 S
  2. ' m) b3 L% ~; [" _7 Z9 s
  3.    f=double(I);
    1 s. |( c3 B- k" V" x  k3 L9 E( O
  4. * ?& t$ [/ i" ~  l# V# D
  5.    g=fft2(f);
    4 s6 s  ^7 C! b  A6 O3 V# O

  6. - v! ?  D6 F4 O" O" N& {
  7.    g=fftshift(g);4 C6 g) u- X3 ~, {. Y

  8. $ h4 a+ s" p4 M8 Z0 m( S* z
  9.    n=2;
    . X0 d  e2 ~* J- I; E0 d7 ?

  10. # b7 ^& Y! t& A  ^
  11.    D0=3;3 b  }+ ?7 S  n! W0 s
  12. 1 L. ]0 S9 W- y# W7 ~. e
  13.    for i=1:M) ~3 h* s: G. q

  14. * B& K4 W% I+ e
  15.        for j=1:N
    " M' r$ C- T) C+ z9 N

  16. - ?% e& k, A6 q2 `
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作" F. ~$ W8 D# l% C5 y; i+ ^

  18. 4 L1 T8 G" b3 a! U) F9 n! x
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化6 d3 X4 j( {; g1 t8 k* g

  20. " `3 z9 t5 r  E& r" J1 ^. K% T
  21.        end
    6 F6 v+ j0 y  h3 R6 w
  22. ; j8 Z! v1 S. k; B# k4 }
  23.    end
    ) G7 z+ g: m' M
  24. & D& h" [  ~9 Q) n/ p: O' x
  25.    result=ifftshift(output);
    4 C& q; ~% {5 x- D& X
  26. . F1 N4 t5 r8 t
  27.    I=ifft2(result);
    9 t0 l9 D0 `0 Q/ r2 o

  28. " L* l" f* e* F: I- c  r& J6 J
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。
9 @6 |2 \; }* ?) Q2 R' P: x1 A) {5 J4 L8 l( G4 [
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。
! v% W; R' a: Q) O( }. q) W5 Q( C5 `$ M* U0 d1 C2 x
7.边缘检测:
  1.    I1=edge(I,'prewitt');: _; Y2 T2 x6 U( ]. j# x1 S

  2. . H1 w, \4 W- p' p$ P. u& j
  3.    I2=edge(I,'roberts');
    - ^& W  @8 R6 k1 c; x
  4. ! R9 c7 U; `1 X! ]* W5 @& i
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。
  Q% c9 L, b0 U6 r3 c# f3 K6 _; g, C这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。
" |* j% ]$ V' P: L: ?5 U" {" g# ^/ H0 D5 b
2 d: E7 d) Y/ T

6 j6 B. x. {/ b3 B7 T/ \! `

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

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

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






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