QQ登录

只需要一步,快速开始

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

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

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
! o2 l6 A5 q" s* j; R# g VeryCapture_20231209165431.jpg
/ M8 n1 J9 Z, u5 P1 F8 i3 d1.读取图像:
  1.    I=imread('1.jpg');
    * y9 Q4 v) }2 E, v0 S( t
  2. / h* q, k2 ]) Q& ~) X  i9 q, ]. F, I: x
  3.    try
    ) ~& Q\" Q; C\" q1 g

  4. ' H: P6 a1 T% z
  5.        I=rgb2gray(I);
    ' N9 N' r* y. M
  6. 2 {2 @- @1 ~# t7 d( k# ]& D
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
7 j( }5 }, ]. u# _% B- c7 @+ O* j# o' W3 S
2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。7 n; b- n2 c, S( }' ^

: k# O7 s- B$ r3.显示原始图像:
  1.    figure
    1 @' \1 T6 D) w/ C9 J0 @! ~: R

  2. . d1 g# z  U; M4 U  K
  3.    imshow(I)
    5 E0 e* W* Z6 ^- E
  4. 4 O- ]0 r$ t8 r( X$ g) J8 C
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。
! e& n4 C: l# O" Y6 i3 q% M# c8 W( ~  k; t3 b! g$ C+ ]2 C" Q
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。
$ H1 z/ z7 P/ h" F) Z
: s7 d7 G% [8 K& M5.图像锐化:
  1.   [M,N]=size(I);: E3 o, ]( Q% ~, R9 V\" n/ P/ F

  2. 7 |6 |- }1 n  g
  3.    f=double(I);# W% X+ A5 _% O- p) H. S; v
  4. # T8 k) n: c' i% N7 X
  5.    g=fft2(f);
    ! n# R8 G( i, m1 X
  6. 4 V9 `+ o2 o6 x4 F7 q2 ?) ]: M
  7.    g=fftshift(g);: a2 R* I: q1 c2 o2 I; L0 Q+ j
  8. & K; O4 P% t\" M
  9.    n=2;$ V' F, C, J5 e& B( }  O

  10. 9 [/ ]/ Z% C3 p
  11.    D0=3;- K0 d' E/ t' C- Z

  12. : T! n# y8 m4 \& g' ?: _# s
  13.    for i=1:M
    9 b. D, X# q0 z. U
  14. : L7 P  M; o4 W' D* |9 r
  15.        for j=1:N
    + U6 d( G% {. `  q

  16. , S. x% v\" e5 V7 a  P; f
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作
    1 ?9 }' H! r. r: D& a/ O
  18. : S9 A( Z1 U. J
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化\" ~' O5 p$ n2 w; X\" m  E: E

  20. 7 `1 K4 H' n) P( O  ?/ R) A
  21.        end
    ! M. f, D5 ?5 L2 p4 e- X3 A  g
  22. ! W+ J, w, N2 M4 @* P& G
  23.    end
    1 ]5 i+ w, O( p  ]4 s- B

  24. / p, h  R1 ?5 k& @, {! J
  25.    result=ifftshift(output);
    , y$ Y  h7 q: f, V+ y* C

  26. % J5 p/ O( g( ~8 ^! {/ I( m
  27.    I=ifft2(result);
    4 K+ s* l3 E5 a$ K- r: h
  28. ' f8 z  T3 i! _5 g# l1 Q, k( A
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。  G# W" x/ ~/ E/ F8 o
7 F- n4 e: j3 }% E$ }9 ?
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。
$ u' H( ?9 P: ]: W3 e# r- v5 i
" I! W4 H$ i9 ?! a7.边缘检测:
  1.    I1=edge(I,'prewitt');
    5 J3 j$ d% Y\" H7 s+ R7 I: f
  2. * x! ~3 ~( n, w; Y9 r: ^
  3.    I2=edge(I,'roberts');+ f' i1 @  E9 I& Y, p3 M

  4. 7 `( U* Q' ?( l+ Z  T9 C2 K
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。
# ^& b" ^# F  v- Y这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。4 x, }# b& E- @8 `$ e

/ n' j# m" ?7 N5 u& L: t  e9 \  m; E' z, U

8 X5 D: ?: C. F# [' X

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-26 00:37 , Processed in 0.318162 second(s), 55 queries .

回顶部