数学建模社区-数学中国

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

作者: 2744557306    时间: 2023-12-9 17:16
标题: MATLAB实现图像去噪 滤波 锐化 边缘检测
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
4 r4 u: G/ B, ] VeryCapture_20231209165431.jpg
5 |6 b. C' D( {1.读取图像:
  1.    I=imread('1.jpg');, P2 \! l$ `9 R) B
  2. 4 S5 _' L' o% x9 G
  3.    try4 Q/ N; c* Y0 o
  4. + B% D( c& u( d) e+ P' l
  5.        I=rgb2gray(I);
    6 k9 I/ d1 f3 ^; @
  6. $ Y( |/ k( ?+ L8 ]
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。' c' o6 Y7 h( I, F

6 s1 H5 ^5 o" Q  ^2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。
; L, _+ _% p0 M2 r6 A1 M, ^( C& `2 B8 {' ]0 U: D
3.显示原始图像:
  1.    figure
    ' F7 U& A7 Q7 o; z: K4 m3 P3 |7 |

  2. ! Y/ ], u* s% \0 S, |+ D9 Q8 v( c
  3.    imshow(I)
    2 ?6 ?: ]! j* Z$ Z: V+ _

  4. " U# o* c% \# p' i: B$ _( |
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。) {1 z/ ^6 B, W

  u4 m3 I# K4 `- F+ y! c4 d4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。
7 T* v) C3 w* X  U
% L8 D9 i! E& y! }/ ]5.图像锐化:
  1.   [M,N]=size(I);
    ) O# y. q) b7 u9 Q8 ]
  2. : t0 K3 n, ]% Q" \
  3.    f=double(I);) _" Q; U% L) g" t7 O) Z; v$ G( w
  4. & Y# p* @. k! b% l6 o9 E+ ?
  5.    g=fft2(f);' N5 {& Q4 q) j2 d, N8 ~
  6. 7 H: g& }+ v6 K1 S/ Q
  7.    g=fftshift(g);
    % M( l  e2 j6 d3 Q

  8. * D1 Y# x7 K2 }+ X
  9.    n=2;
    " _! e% P2 ]  N- G( m( U' M. n9 Q/ Z
  10. 6 n* q5 F; H- s* @# |
  11.    D0=3;
    / L! y" s& H# Z& q) V$ V* P/ K
  12. 3 {* U$ E: g! D$ O6 ?, \+ K. Q
  13.    for i=1:M
    , {0 R/ Y& i. P3 I, B

  14. 1 r* N0 R" b6 z3 Q  s
  15.        for j=1:N6 M8 c  D, f/ }5 A
  16. 2 L* h' ~' m& E* |; n' \
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作" J; C( o' t' {7 {

  18. 3 l5 \" e& _  v9 B
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化
    % f/ g* f+ B1 x+ u5 M) \7 r

  20. + `6 l$ ~9 C7 F2 U) y+ |! f
  21.        end; b6 F: y7 H% P8 Y

  22. 0 B; R0 U3 Q# G6 t# H
  23.    end4 {: {5 b8 L2 P1 W: n
  24. $ U% s" \; I* a6 `# F0 `4 A# s- a
  25.    result=ifftshift(output);
    ) |4 P* V- V8 D. ?' x) `

  26.   [0 S4 V* @& M
  27.    I=ifft2(result);
    1 R7 H" `! F# ^
  28. ! j4 U6 Y4 C( q2 ]$ o
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。9 ~) _% m8 o1 J# d

6 n7 p6 v6 {% U0 i- D- R0 o6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。) R( ~! X9 }; {1 a9 ~
( d8 V# w: c2 y5 l* E& V3 N4 l' g
7.边缘检测:
  1.    I1=edge(I,'prewitt');# I  T! e. s' @* z- o: a
  2. 8 T& [/ ~' t$ D: R" U; |* @
  3.    I2=edge(I,'roberts');
    . e0 C  U# m; H" l
  4. * F; |% m8 L& }& y! l7 L
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。% Z: c* X' ]9 }
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。
2 N# b! d: m' _- w
: X. H3 A5 N. x+ {- V2 S4 q8 a. B
0 U1 p* u5 k. @+ W
2 i9 I) g5 e: v% X7 H3 M8 T

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

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

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






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