QQ登录

只需要一步,快速开始

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

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

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

1186

主题

4

听众

2922

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
0 K4 s4 Y7 ]3 `' m VeryCapture_20231209165431.jpg
" h& \% g' `& V4 P: w1.读取图像:
  1.    I=imread('1.jpg');2 A9 n) s' L\" S. B\" D

  2. 5 X; R: P4 E3 _- \( w9 R; ]
  3.    try5 U( S\" q+ l\" E) V3 I. I1 s  |
  4. * H7 c! ~) ^6 e) d. c2 l( d
  5.        I=rgb2gray(I);
    # e9 A, K8 I: Z) r' s1 `0 i
  6.   r8 m0 K, o; J4 t
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。& a* @+ r% N. s* L( E1 N; H

0 X! ^0 z' x4 ?5 Y; g3 N% W2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。
" `0 e5 e( D: C4 l4 p9 E
( z9 A( ^5 e3 B- X7 R* m3.显示原始图像:
  1.    figure/ u\" {; `9 }$ C: e

  2. $ o. v( y8 M3 U3 d
  3.    imshow(I)9 l- S- d' `/ u5 L, I( w% F$ S  D
  4. ' I; i. R7 [. i\" F) L- R8 ~
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。2 v$ ~7 Z' [9 V( S( k1 m  T

) g; r$ [* }$ |4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。- y& p2 O7 V" W$ h- s

9 n) ?1 Q! i( Q! r3 V5.图像锐化:
  1.   [M,N]=size(I);. h( L\" ^) _0 P) G% H* ~

  2. 3 m; t8 y  `: ]- \\" V7 i0 ^8 `
  3.    f=double(I);/ j& I, a1 I3 |

  4. 1 C\" I, K, |\" A- K+ N. S
  5.    g=fft2(f);
    ( K% K  l1 F9 C& A# x& J; x% _\" O

  6. ' D1 |# B3 w4 ^
  7.    g=fftshift(g);: m4 O' h6 l, J$ }) R  Z
  8. , S/ A\" F\" [0 m7 a3 \
  9.    n=2;6 d, G; ~) Z2 F
  10. - z, a( W/ u' H' b9 w- s
  11.    D0=3;& `; I) V) m0 N7 L- U8 @' p# E4 I% D

  12. # S8 E) R/ |& U8 `. e9 ]* _
  13.    for i=1:M( G( \\" \4 ]4 a8 I* s* f8 M% c
  14. . u6 H9 {3 k8 a, B( o
  15.        for j=1:N
    : L# C) h, H) Q, [/ w) v% b* r- Y4 J0 x
  16. 8 q: m: {  T+ q2 |, I
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作6 Z; L( B6 x# X4 L1 I

  18. 1 f+ {9 D2 ]$ [4 z7 d6 c
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化$ J, Z/ r) `0 o! {1 z0 w

  20. 9 R\" r* M0 }$ C0 |4 q3 b1 t
  21.        end
    $ p* l3 K4 V9 D) M; \; F

  22. $ r% S3 a$ n. A9 T( }
  23.    end$ d/ o5 o$ a4 \! }9 v8 {) }8 b
  24. 4 c$ N+ U5 Z\" }- Y# Z  u
  25.    result=ifftshift(output);: S& X7 K1 E( V0 k8 h' f

  26. 9 i1 L4 l2 y) E- |. ~; X
  27.    I=ifft2(result);
    . D9 p& s/ r7 n% y
  28. - l5 l/ [* t+ p% J, L' j
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。
' y2 x6 J! g! F3 q0 A6 y' o) P( L
$ M* t, I8 [) w1 g- L6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。
" R% X/ E% i4 v$ H+ Z: z- s1 j. D1 V: j1 F) C; s$ F! W
7.边缘检测:
  1.    I1=edge(I,'prewitt');8 y; e$ d9 q: u1 u3 |- C' L
  2. 6 p( n  T  t8 s8 l* G6 j$ k- l( D
  3.    I2=edge(I,'roberts');: x; ]2 g# k3 A

  4. & V4 j: v8 w5 M% z7 L
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。1 z* C7 }; v! i( O" S! H$ q
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。
0 c6 F2 t$ N, p- I* t5 A
; e: \- A2 |- A2 k( |; D2 S
2 q# }0 w. X4 k6 C! S5 E3 {2 u( |5 d( d7 o. }4 j/ t8 X. O

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-4-12 23:49 , Processed in 0.341719 second(s), 54 queries .

回顶部