QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
; y2 z% y3 M. z1 g" K& {* p VeryCapture_20231209165431.jpg
8 Y5 |* l$ |- f7 {1 \1.读取图像:
  1.    I=imread('1.jpg');
    , R9 S4 ?/ L2 H
  2. ) z\" ~; w9 ^4 i  F* Z
  3.    try6 G\" f4 A/ i: e0 d

  4. 5 ?+ T8 |- n+ t5 s  ]1 d1 F$ p
  5.        I=rgb2gray(I);5 W( H# F: a; p% C: p

  6. & Y+ V\" }8 F% m. M$ q
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。* Q: g$ e2 `) K* c

; T4 C3 a1 U/ e8 H$ H7 x+ Q& ~) m2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。
9 Z1 ~, w/ K& s, Q/ N4 y9 h
! s' V! O- p. E2 l; _3.显示原始图像:
  1.    figure
    6 w% T7 {6 o2 o+ y( ^# |/ ~& _
  2. 6 H. b* t$ E- o
  3.    imshow(I)
    4 R/ o7 w  _/ N4 I

  4. . A/ o. f: v  n5 L
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。! A6 V( e* |5 V6 r& v
* @: _4 g# u0 t
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。
7 ]. M/ Q3 J* v4 p9 W* U8 N- r5 H5 V% M- V) o
5.图像锐化:
  1.   [M,N]=size(I);
    ( c& U! E- u$ j% I0 l# R0 {
  2. 5 U* b  [8 l% R7 Z* o- g
  3.    f=double(I);
    + e9 k: {5 L+ s
  4. , s- K( j2 g5 Z  `0 Q. [
  5.    g=fft2(f);
    / i( J8 j, C* D. u

  6. 2 H0 j3 k0 s9 W. g# `) A( D
  7.    g=fftshift(g);
    : h. y3 a/ p( S3 w! P

  8. 3 S; A( J' E* d: b, w  D9 X
  9.    n=2;# O# Q8 M2 u3 J6 R: q$ m3 F

  10. ) j( g, q/ j6 ?3 o2 r# s\" |9 y
  11.    D0=3;: r+ O4 K5 ], D
  12. 5 J8 q4 f# d  u\" \7 E* F, |
  13.    for i=1:M/ ?$ x% C% y$ h) h4 N
  14. 2 }  i0 S) T  B1 _
  15.        for j=1:N$ e9 h& K3 e6 {6 e( r; j

  16. ' ]) P4 M+ ~* j+ p9 _' f
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作6 N0 `, d, j6 r1 V% ^+ g, G
  18. 8 `3 [6 x5 d1 `) Y0 Q, r+ J3 R
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化
    ' W0 H& u. |: Z, P3 E

  20. 3 r0 J: L' i! e8 E2 Z; S% e
  21.        end\" n/ \2 r8 B4 l/ `1 s: P5 I- ~

  22. # g1 F* s# A; M% u& u9 C: X+ M4 w
  23.    end, P6 J6 `- @# c( q/ g8 a

  24. $ A0 u& ?! z! F6 m# `& U9 d
  25.    result=ifftshift(output);, k# D  c, g: S$ M/ D, z& k& I
  26. , ^( c5 p9 w& C$ A- J- A6 x. W8 }. H
  27.    I=ifft2(result);
    5 W# y$ r& Z% r/ s. D$ ^$ h1 S

  28. : T) a! m# ^- u/ M) ]4 Q% O; |+ M: p
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。) s9 z4 F) u3 j- \( z! ?( d) y, Y

5 O0 z1 \, Q; J# J3 q6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。
* Y) S6 V' |1 P. P' o+ e+ x5 A1 T3 R+ R9 `1 J$ R
7.边缘检测:
  1.    I1=edge(I,'prewitt');
    ) E1 U7 r7 R, K

  2. ; B: r- l1 Q. E# @  A
  3.    I2=edge(I,'roberts');  [6 f6 V, V/ B; H: d

  4. 9 z4 r2 ^! A9 D6 Z8 n* f2 a: f
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。8 [& Z7 `+ b; S# d$ \8 K6 V
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。- N5 g  c# @! b; U: `

8 S4 n" l$ Y, G% Q5 U0 @2 q6 e) \- N, w3 a5 p5 J, r1 m. b+ N9 s6 f5 ^, O
" M: y5 C& l( |/ S: E

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-6-14 13:47 , Processed in 0.615206 second(s), 55 queries .

回顶部