QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |正序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。9 G/ f% o9 Z' b* Z. ?, U1 ?
VeryCapture_20231209165431.jpg
, R8 S' h& B3 a9 E1.读取图像:
  1.    I=imread('1.jpg');
    9 e+ E( G4 g6 [/ Z: w
  2. 3 |0 A- g2 ~/ Z2 M1 U
  3.    try2 {$ d7 m/ e, O4 Q- t

  4. , F6 X' Z& g, y$ p# D
  5.        I=rgb2gray(I);
    & A+ s+ O4 \7 u0 v

  6. ( a, E) x0 w, A. \
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
& y6 A/ D) @& _+ ]0 |& D8 l/ S% t" |" o, C" P& ?9 K
2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。% _. L# \( K, ]6 [: y- Y% {; U
& ~+ m( F+ P! p( }7 n# Y
3.显示原始图像:
  1.    figure
    $ F! p+ p6 |# I2 D
  2. * Y/ F, p8 v0 X2 c% b8 ~  j
  3.    imshow(I): c3 _/ g! k4 T8 N: C. ~, q
  4. 3 M6 n, }4 [4 h& L- f
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。
+ u( y- H: n8 ?& R$ E7 j+ j! }7 J; g3 A, L+ k# X
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。  H3 t3 a. M9 a3 }/ T- t( G! \
! ^* N8 X+ M3 o
5.图像锐化:
  1.   [M,N]=size(I);4 s+ e4 k! N9 _8 X

  2. : T\" M2 Z' E% _8 E. M# \
  3.    f=double(I);
    + I6 @. n+ n; B- d% ?/ R; s
  4. 0 a4 Q/ g& w( H. u& a/ [
  5.    g=fft2(f);
    9 H7 ~& D\" l6 f3 ?7 P
  6. ' o- f( f1 b( n0 e
  7.    g=fftshift(g);
    2 j- L! w. j$ ]$ ]( A

  8. 0 O$ `7 |( q) e! k7 Q* G: P/ M% ]! i
  9.    n=2;
      e6 I+ Z, B\" K\" R/ E+ z
  10. 2 C: W& U+ X, g  u4 }0 k9 s+ H
  11.    D0=3;  h  x5 ?5 g3 ]& w: @2 I

  12. : I) S& z2 N1 I- b7 D! a
  13.    for i=1:M& N' N8 K2 X& i/ r' N( X! k( J

  14. , r, B! s6 [- _' t2 @3 T+ L9 x
  15.        for j=1:N
    # h% ~- X( z6 g) s2 \# v4 ], y
  16. # f6 |0 @0 B6 n8 V3 o
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作
    & O+ g# S$ ^9 `# `, f  l/ @

  18. ' a  z7 T4 v9 t- O5 {  Z8 p
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化/ e. Q% p/ i; ]: l
  20. # a% a/ n9 Y* w5 C) j* t5 e
  21.        end  b5 {% W/ i. j8 S' _

  22. 4 V) F, D$ Q* H: ^
  23.    end
    / R! n( v7 N- x* R/ _( |
  24. & ]3 N8 a, G1 K+ b$ S
  25.    result=ifftshift(output);
    2 M+ `4 t4 x1 {, ]

  26. * {( Z4 Y' u1 ]7 y$ ?, p# o# O
  27.    I=ifft2(result);
    : B' s4 C2 I# ^& V+ e0 C

  28. & x* B9 q; _5 ~% A- D
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。+ t; @- a; [$ S; E+ p
; g( L- `# ^0 u0 l; {! C0 W" T6 s! P0 k
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。( U5 o3 `+ V1 a0 \
2 u( j( }& b4 D0 t/ a7 @% i
7.边缘检测:
  1.    I1=edge(I,'prewitt');
    7 Q5 _% T3 A  U) G

  2. ! N* P% ]( a\" _1 K: L- [9 P& Z: J! l0 p
  3.    I2=edge(I,'roberts');4 A( o  G+ _2 H( L/ I; y$ ~$ v
  4. 3 I2 T/ Z; D( N7 ^, O0 w
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。, x2 K9 w1 O. I" ~9 B* T+ Q) J
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。/ x3 F- ?' {9 a0 P7 a
* L  k. ?9 X( ?2 @, S
) X$ |( d  t3 V" h
+ R! D/ l/ U. ?9 h/ ], z

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-1 21:02 , Processed in 0.469812 second(s), 56 queries .

回顶部