数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-12-9 17:16
标题: MATLAB实现图像去噪 滤波 锐化 边缘检测
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
4 I- Y: _* S. @, G0 t VeryCapture_20231209165431.jpg
( j! Y4 Z6 a. t+ c* s+ @6 ]1.读取图像:
  1.    I=imread('1.jpg');
    + m6 h+ \$ k1 s- J( V. M& H  u

  2. 5 R6 Z- Q. _% H- L% g' f* f
  3.    try
    / f4 R, E. V9 ?; t  u& e
  4. % o4 ]  e  A$ O, Z  j+ O+ p2 B
  5.        I=rgb2gray(I);
    ' B. ?# E- T0 t- x/ f8 a

  6. - ?% ^& W: r& R9 O3 e. S
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
* g, s8 C7 s1 v  e- j
( e) W7 z) x3 O! N2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。/ A4 C' d8 e- t% o  e

- w3 ]$ a0 f" h* }8 O$ H3.显示原始图像:
  1.    figure$ ^* ~3 S2 Y+ \& Q! i% @: S" Q

  2. / f0 E5 b& U6 V, t& S4 k
  3.    imshow(I)
    5 L7 M) \# ~0 d5 W* x% Z7 Z! g
  4. ; q5 v/ r/ m9 L3 s
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。
; [) ?0 w5 F( H4 Z8 v0 @+ ^, ^2 R5 F3 ?7 i( H8 R- ?( O
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。
" w# \- f* a% Q, h9 [2 e5 [0 A9 G! x5 Q0 y- g$ h
5.图像锐化:
  1.   [M,N]=size(I);8 x0 n- l4 \8 t: P6 p: E* X/ D/ X

  2. ! z& Q3 c4 v1 `1 q4 P4 ~
  3.    f=double(I);5 R) B# Q  y* D! C: `
  4. 8 c4 l, M6 k! i
  5.    g=fft2(f);- z* N( y9 D* @% l' ?  ?

  6. ; D1 W$ b0 z) \7 ]+ h
  7.    g=fftshift(g);3 A/ B7 E) W7 P! S$ j

  8. " y7 o4 Y: l& {$ Q8 H! l$ y3 d
  9.    n=2;
    0 }+ y4 [9 r- M: Z1 N! ~/ e
  10. + b* m! R4 b9 m) I& `
  11.    D0=3;6 M) t% R& W, O% Y& k. R3 v

  12. 8 t; T- R; _# Z  D
  13.    for i=1:M
    . r% G, t" C9 U9 Z3 D  L
  14. ! U0 K2 v  c. v7 C6 C
  15.        for j=1:N
    ) p$ ~; N, p1 r% p  [4 O4 b1 Q4 N

  16. 0 K% {9 c8 j+ ~& i4 Q% F
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作
    * z3 s6 S8 j; K! R9 n) r! G

  18. ; z2 Y& m/ P. j8 l4 _& `
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化2 w9 \3 j% ]0 M/ I' j% _3 o$ o, L; q

  20. & R: K. c6 Y) M/ N- j
  21.        end
    + d) p8 D4 g4 b3 y
  22. ( D- K# F1 J9 W- ]: z
  23.    end+ ?& x& z# l0 h0 i8 [

  24. 9 I1 N$ U7 n/ D
  25.    result=ifftshift(output);; e& O1 {  K( P0 U
  26. # a6 t. @% h" z; N/ Q
  27.    I=ifft2(result);
    ! V$ R  Z7 w: ~) ~6 k; T# X
  28. 7 B6 U- x( Z4 Z4 {7 k
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。
. L7 K% m: i/ Q3 u: S: E# _
6 N2 O9 \& `+ o% V1 i  |6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。
% [3 ^8 u1 M0 _& T# i& R& k$ N5 ]$ s
7.边缘检测:
  1.    I1=edge(I,'prewitt');$ U5 U* P  |8 r/ N0 @: a4 D, g# Z
  2. ( q/ r* U/ v/ d3 i2 `
  3.    I2=edge(I,'roberts');
    / ?8 y' v! w5 ^. }$ p! I2 F
  4.   F' W( |+ l# f& Q2 h
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。8 G# h7 j' ^: `. j* {
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。
$ v* m4 X3 Y/ S: R# Q6 K, E4 C; [' ]6 ]8 u3 j& O, B

$ B5 A& A* `, W
% z" w0 O; `6 w. B. I2 L; K5 F9 ~/ q

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

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

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






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