数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-12-9 17:16
标题: MATLAB实现图像去噪 滤波 锐化 边缘检测
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。+ W7 S" e7 |2 f
VeryCapture_20231209165431.jpg * v. e7 y9 Y3 b1 U9 _8 W: C; ]
1.读取图像:
  1.    I=imread('1.jpg');3 [* g% H" ]9 \! V, S, g
  2. 2 [+ E& V, v) b. U
  3.    try
    , r& F6 v( R  X
  4. . g2 Y1 _- X0 j  x' J! w
  5.        I=rgb2gray(I);
    " V6 c3 _( o  A. q& W4 J% G6 I

  6. ; b2 S+ S- h' u  r* R
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
" j( d2 `9 n& f% W2 h1 E1 p9 u" R4 I
2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。. B' {* ^& h6 t
- N7 f9 F- e# e7 }, x
3.显示原始图像:
  1.    figure0 h: N  C' g. f. F

  2. 6 J5 w* r3 h3 Z' J& |* [
  3.    imshow(I)
    2 q% d- t9 l' p3 u+ i

  4. 7 X7 F" r" h& A, K: O0 Y
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。
5 E! u* N- e1 N4 j& a8 V- `" {) j- n2 d! K: g7 i
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。- c8 _# P7 H. D0 f6 J
- n1 Y7 I% T' ^
5.图像锐化:
  1.   [M,N]=size(I);
    9 [/ L" K3 D" q
  2. ' O! P5 h! w2 V) \
  3.    f=double(I);
    " s( I& T: k7 v! ~
  4. 3 U0 J  ]+ Q5 `
  5.    g=fft2(f);* ?3 Q! l1 D4 H  Q% ]9 C3 G. m+ y

  6. 1 E3 L% B# v: `' I+ V
  7.    g=fftshift(g);, D& f; v; V, Z5 ?

  8. , g. O- S+ W6 }4 w
  9.    n=2;8 |+ V' r- g  C& T
  10. 6 \" X# I3 c3 S- Q5 ~
  11.    D0=3;- L9 q% T$ j. H
  12. 9 H) F! H% P: @" o. Y* T
  13.    for i=1:M
    ! e( i# A! r+ K( r: N

  14. " w! m5 ~: N( H% h, y4 K
  15.        for j=1:N1 H* n8 l- C; I

  16. " m, c2 N. @$ V0 {, a) H
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作
    : h1 P* z: {- W" J% Z) t
  18. . ^2 x' D, Y# H
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化/ ^1 j& `. X% b( t9 H+ A1 E) N- A
  20. + u( U7 o9 T4 }& P- N
  21.        end$ D/ x8 w- |; F! g1 B/ c, a
  22. " D" f6 R7 k3 Y# E
  23.    end' j$ I7 _' T/ P( i# I

  24. % W6 o. C0 l# Z& c- W7 @
  25.    result=ifftshift(output);5 b4 l5 n0 x1 q4 }! C
  26. 5 S  f2 D" o1 D# C3 F' g/ I
  27.    I=ifft2(result);- f4 G' n  d4 k4 d# ^

  28. ( e+ N2 a: j: ?3 h' V% L: N
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。, M. k. g6 q, ?( Y8 U* ~

" k3 o- F! r3 M, Z  v$ p# G( ?8 D6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。: i% z7 L" z, E( q0 C

  R2 [% B: [: A/ @' y0 h2 j7.边缘检测:
  1.    I1=edge(I,'prewitt');# ?: Q4 E" q% l2 n$ W- z; z+ p- N
  2. ( C* N' c9 o+ D+ O& F
  3.    I2=edge(I,'roberts');) k! Q/ _) Y9 L4 B# m
  4. 4 X* S4 u% [$ e7 y+ W- h7 n
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。, I  v- \6 H9 M. f! x; B1 c! I) d
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。* @% K0 h* @6 f6 h6 w) s

+ S& r+ c2 v+ ^* i/ M5 W0 r5 l6 A; B. |! v

/ Q" K0 P+ o3 j0 A2 ?4 }

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

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

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






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