QQ登录

只需要一步,快速开始

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

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

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

1188

主题

4

听众

2931

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
) f/ i# G1 N, A- S/ s! ~* `; N& A VeryCapture_20231209165431.jpg
6 G1 K/ h+ @5 a# }1 E& j. \8 T: k1.读取图像:
  1.    I=imread('1.jpg');
    & f9 K$ ]; U; I7 k
  2. ! A& ]) C6 I) L
  3.    try1 s# t& g2 M2 i

  4. \" W% e+ m5 [: s3 `4 |/ d! s' R
  5.        I=rgb2gray(I);' ~8 G\" w\" M: v: t
  6. $ Y* G  c  O: j+ O7 f4 H
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
. |3 Q" O* X" E/ _' R0 W6 X6 |6 Z' ~' W5 N! Y. d
2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。) s: I" k& e* q. N6 ?+ H
8 P! M* n* ^: ^6 T
3.显示原始图像:
  1.    figure
    4 w+ k+ s\" ]% |3 u; X

  2. % J\" x* B. N9 x; {
  3.    imshow(I)) Q7 I/ L7 n. L% n

  4. 0 ?5 J! t( J7 x, b% C8 `
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。4 ~' w  h: E- u. r
4 B# v4 ]+ ~! G
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。: e4 l2 ^# a: C
; |, f  \  u9 q/ E
5.图像锐化:
  1.   [M,N]=size(I);9 {. ~% B' D, y\" l; b\" \
  2. 2 \( W2 \) J# u8 }\" ?; I
  3.    f=double(I);3 W4 k7 y& B6 F4 Y2 z( D  \+ ?# T5 h! H

  4. 4 |# W; j1 Y; A
  5.    g=fft2(f);* ?  D$ ^8 p+ s! J' `, O6 i
  6. $ @) K& m4 J  m9 O) R4 y- o
  7.    g=fftshift(g);$ P4 `% R9 \! ~6 \8 [\" _2 Q+ l

  8. ; a1 Z, A) ?* S' @9 S' A8 S
  9.    n=2;4 Q- r! A7 S0 L. D8 W
  10. 7 y: H7 y7 l5 A1 Y+ F! T9 }3 G
  11.    D0=3;
    8 p8 x8 b5 C2 F7 q/ x
  12. ! C! ^3 l) v; ]# x7 s
  13.    for i=1:M2 ], ^6 ^' f) b) H4 E8 s% I

  14. # |\" a0 v1 G+ H/ i( _4 i$ d6 R
  15.        for j=1:N$ Y7 `3 `  T0 W4 l

  16. 7 ?2 l% ?: S+ C( Y. _3 x7 U8 O
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作0 v+ @0 \' G; f, j4 F
  18. + S; O3 f: ^& a2 a2 d$ [
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化
    / L$ Q  {+ [8 i- Y4 U  e/ _2 Y; \

  20. & J2 n! C1 E) A! _
  21.        end6 @, S7 s: Z* J, n2 S; l* L9 ]
  22. / d2 V8 _) I. l+ ?6 u, |0 d
  23.    end
    ; j1 Z, S6 Z' X

  24. 7 z9 V7 ]9 e0 Z6 o' L' y; s, s% l
  25.    result=ifftshift(output);& m. L/ ~: b9 w# b' t- \

  26. $ T+ I1 m+ V+ X6 O9 q4 g
  27.    I=ifft2(result);
    1 w. i4 L' C) r/ v3 u
  28. & M4 D' c( J; J1 }1 B
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。. T3 |$ c" S! Y8 n  r4 {  a8 H1 _8 r
- K2 k& V& r( q
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。! G: }1 Z( m7 B6 \3 P6 f3 }

- _9 D! x4 B3 w. m4 a/ p7.边缘检测:
  1.    I1=edge(I,'prewitt');
      q8 [# y; `\" A\" E& Y( w

  2. 9 L$ O: \# s/ B
  3.    I2=edge(I,'roberts');
    , @3 U\" R  ^/ {\" G5 E( ]1 Z

  4. 4 l- r5 i5 O\" n$ F0 ?
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。4 E) T; l& G1 h+ y5 E: `
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。- r$ C6 ~* \  R9 u# L

1 u8 P" g: m0 D9 M& k& X" V- c6 \9 |& |' D9 _

3 X$ p2 |0 C' @; D* {

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-5-26 05:08 , Processed in 0.663590 second(s), 55 queries .

回顶部