QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。4 r: l  ?& G' t/ N3 |3 ]
VeryCapture_20231209165431.jpg , p, C- H& J0 W* R
1.读取图像:
  1.    I=imread('1.jpg');2 L2 J1 O8 x4 y; l
  2. $ w) {( a% m3 U- |
  3.    try
    : H6 K( s, Q3 }8 _! j& l
  4. 9 d& E4 R7 i# @2 U3 x+ T
  5.        I=rgb2gray(I);
    ) B; F: l! s  _+ A- l+ y( L

  6. . }0 v3 ]; ?4 `$ h$ f2 e$ y) m5 k& u: P  j
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
% l. O9 i2 L0 A6 u1 C5 f: w% Z- S9 M% ?- w- i0 g/ O7 @# b
2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。
' d* D* a. p/ I8 n
+ O2 F/ K4 }# B$ d$ @. ]; E3 U% h3.显示原始图像:
  1.    figure( @- C) R6 H- Z6 z\" B; u' n- o

  2. + O7 E* ^& S' g5 F+ w
  3.    imshow(I)
    + w8 z' B( b% N) U

  4. 2 q! O# l/ ]5 X( f, _1 Y$ |! F6 E
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。
! f, S/ x5 A! _6 Q
, \1 _+ X3 F. U0 P& d4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。
; d6 H, {; C. q2 q6 I% W; L, a# \0 J) M; L8 v7 x4 S- T, U+ z. H
5.图像锐化:
  1.   [M,N]=size(I);; N* {6 f. [8 g0 z& S/ w

  2. 7 d2 Q% _4 Y$ `6 z4 n) x\" {& M
  3.    f=double(I);, [; u9 d: `& i- h# [\" v

  4. - H5 g* d  }/ S5 K4 T: j
  5.    g=fft2(f);7 {* F; K5 k5 e* k

  6. - U& T# [4 z; B$ ^
  7.    g=fftshift(g);. A6 l3 s6 U9 ]0 P+ Y
  8. 4 L$ v4 S( ^; s: r2 W' @\" o& l' D7 Q
  9.    n=2;
    7 i1 U) d. C\" E' F) W
  10. 4 c0 g2 D) [3 a/ w7 L+ z
  11.    D0=3;0 |\" U, {2 Q7 v4 {  J% Z2 ~

  12. & @' m5 m& W  ^& D$ t( [
  13.    for i=1:M6 |. F; g' v0 s, E: R

  14. & R2 V% L5 ^; o) t1 G* |
  15.        for j=1:N
    \" b; g- _- r\" r, F

  16. 0 J3 L8 z) w5 e
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作' q\" m$ ?. W, T8 W\" M6 F0 h

  18. 3 _, N8 T# X* @1 n- Y( a- D
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化$ h2 n1 I$ R/ F; X
  20. 2 F. O. }9 f. U2 _7 w
  21.        end
    5 u% x( m6 V\" @# i* K* [
  22. 9 L9 b( t\" Z0 \. O
  23.    end- V1 S1 k& a# G3 m) }% P

  24. 9 j) N  ?. Q& Y  {( {1 N
  25.    result=ifftshift(output);, X4 Y) n3 j7 x4 g3 P
  26. # a1 I3 ^6 L! d
  27.    I=ifft2(result);
    0 x2 \: F/ L+ U  y3 M! d  P5 Z
  28. \" F$ h; N* N! {7 a$ k; Z* C# H
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。* m/ J* P2 ^  a
# I2 I+ j$ t  ?+ J) u
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。
' m2 u( g! G2 D+ l2 m/ M! o: B
9 R( G( L/ Z" O7.边缘检测:
  1.    I1=edge(I,'prewitt');  w1 }\" G% X/ x
  2. 7 c' {# u  I9 D4 Y
  3.    I2=edge(I,'roberts');
    ; h8 s6 Z\" ~4 Q( s3 Z1 T$ u& ?
  4. 8 C( r4 X7 T3 t/ g
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。, O4 W1 }: b5 `  [0 l
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。: k0 S8 w4 {2 V  M: p6 ]

6 ~0 S, h* g) }8 r7 G& k8 T) @1 l3 J$ K6 g# j. M1 J$ ?2 R0 t
9 u, W4 ~0 J* k8 L1 j! [

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 12:58 , Processed in 0.375991 second(s), 55 queries .

回顶部