QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2875|回复: 0
打印 上一主题 下一主题

MATLAB实现图像去噪 滤波 锐化 边缘检测

[复制链接]
字体大小: 正常 放大

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
) q1 c8 }* b% g7 k" S6 v% e VeryCapture_20231209165431.jpg
. ?' X6 ]$ x& a3 Y% ~1.读取图像:
  1.    I=imread('1.jpg');
    7 j5 x. \* W8 K0 p5 P' A
  2.   X, n9 \) t: ]. C
  3.    try/ u. R5 ?/ W) Q2 T\" \# |

  4. * M' u  T# p$ {! {
  5.        I=rgb2gray(I);
    + c( I\" q, X3 D! ^1 f! G

  6. / d. i/ k  S. Q3 y, V* h6 r
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
) x/ x+ @& y+ f: D% a! D
$ r  b+ E6 w( U( J4 N. \2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。* |8 q" g: G* a0 w- X4 ^
# F# \/ ^7 l5 O+ V7 ^4 |1 H
3.显示原始图像:
  1.    figure
    ( I( A! e: x+ h* l; f5 o
  2. / i# I$ u8 s# U\" w# f/ o
  3.    imshow(I)
    2 K$ Z' W! P; h$ r3 J$ Z
  4. . ?\" F( O5 }& u/ w8 C) m7 U7 |& S, @
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。
1 ]; L+ k' p& S$ Y1 k* a* k! B' I% N2 b5 h. B7 o$ O
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。9 B8 U- {! g& X& ]" Z. _- I2 j( K
) H$ x* `& c2 Y" Y4 z5 D
5.图像锐化:
  1.   [M,N]=size(I);
    4 T: |& p$ ?2 [7 G. O0 T* W+ `
  2. ) {& A7 H- h2 v3 |! L# @
  3.    f=double(I);
    \" ~! a- g; @/ ]4 a
  4. , ~+ u1 P& x# ]8 T% e8 f& W
  5.    g=fft2(f);\" W- y9 e; h3 e7 v! S2 Y0 o4 _6 p0 b

  6.   Q5 @) p\" [. F3 V: P2 S( w. N/ d
  7.    g=fftshift(g);8 b, V. q% M) _' G

  8. 5 Z4 S* ?% q/ X5 v\" b  H! b$ B
  9.    n=2;. n6 c! I/ L& t: v0 a( Q6 s

  10. ( H+ d% E7 Z9 U, `: S
  11.    D0=3;
    % o5 k0 m4 [( A' c- n1 w5 `( Q
  12. * W7 B! ^3 F$ u6 V( b: a5 R' x
  13.    for i=1:M
    & N! E& i7 r9 R
  14. - ~; I1 O' p- E+ @7 P
  15.        for j=1:N! |\" j4 g3 q& W* m$ q* t& J4 Q2 ]
  16. \" V, E  b6 ^- Y3 g/ P
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作
    ( S8 n3 O' u9 T. j

  18. ; r! P' o% e. ^
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化2 _* n7 l: ^3 _0 W

  20. + A4 [\" H7 ^  @% `
  21.        end$ r$ h) l% B8 x
  22. - }$ k8 C- v  Q
  23.    end
    \" J  t$ S: [) X; E/ _

  24. 1 Y5 \\" q\" C) V* G
  25.    result=ifftshift(output);
    8 _! X# ]1 B% V: Z% ?+ h. P
  26. 7 B8 y; ~' z2 c; [' P
  27.    I=ifft2(result);
    \" \! \1 d) Q. G  K2 v$ N( H

  28. 7 {5 Z\" `# z6 K  o1 F4 P. Q$ o2 v
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。
! A0 r8 Z$ m8 j: D2 s9 B) ?0 h2 C/ E* j( [  R
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。* u8 D6 g- F$ a3 v

+ T& \2 E2 o" t4 r' k. `7.边缘检测:
  1.    I1=edge(I,'prewitt');% X% K% ^% G/ C: i3 [: N

  2. 5 t' _! ^* P3 O2 I0 R1 z
  3.    I2=edge(I,'roberts');- W) ~; `! B  C9 x5 a  W. q5 L6 {& y

  4. ) S6 j' ]  a  D% {
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。- N: H4 |5 z9 b2 `4 }
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。
, B+ l! ?) c9 }3 j& A6 L$ Y3 ~' V7 W" V) }

* o7 K3 {* k$ w3 @1 D; _% }3 K$ p& S8 Q6 q9 P

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

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

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

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-8-3 20:06 , Processed in 0.473358 second(s), 55 queries .

回顶部