QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |正序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。
3 z2 U1 c$ x, b6 ] VeryCapture_20231209165431.jpg 7 e9 l- g* j" A/ Z. u
1.读取图像:
  1.    I=imread('1.jpg');
    5 a5 S: N6 e- P( o7 d

  2. ( S: y\" ^/ y# @4 o; ^9 X
  3.    try4 v' B& F2 x5 @2 T. k
  4. 7 L8 z5 W3 Y+ h- p9 h7 X2 k3 R6 U0 V
  5.        I=rgb2gray(I);
    ' s$ |3 P! H! H. v
  6. ) j% @\" p; _- W; u& V\" C& J
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
' U3 u$ K1 n( e
5 H% }7 d/ D* p% M+ L" e+ }5 p7 ~+ I2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。( `. k- E3 u+ Z3 D
& E% t' p+ K" W2 ]6 b2 s
3.显示原始图像:
  1.    figure
    . w4 b9 `: Z4 Z1 E; H' J& u
  2. . x' y; g! l9 H% @, c
  3.    imshow(I)) \. H# B3 }' [% p- \4 S
  4. ! z2 p: [& T6 b; R
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。
5 }4 T3 M  p  N& l6 [8 d! h3 v. }% A% S8 L* e  B$ }1 U# x$ k- A. G
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。
# d3 c6 p3 H. M( q1 Z6 c  N. Q$ t2 B( M6 h: v! ^1 h& t
5.图像锐化:
  1.   [M,N]=size(I);
    # M/ u, J0 B' U- N9 C; S

  2. 8 L! S, M! P0 H\" i
  3.    f=double(I);$ K\" d, N  E6 P5 a* _
  4. , |5 t8 [' J8 F
  5.    g=fft2(f);
    2 }4 e/ h  A2 l\" j+ m
  6. ( W; {, K& ]2 O
  7.    g=fftshift(g);# X2 i( w& j7 v2 n% s) Y% z

  8. & W2 s. s$ r( i
  9.    n=2;( M7 f& ^/ L5 j+ a* {

  10. . ^, p- d7 [2 ]1 ?* M0 |$ L
  11.    D0=3;0 g# W2 K9 G8 i) z2 S

  12. \" h; S3 a' z* y% V  ]$ J6 e
  13.    for i=1:M
    ( s% O0 I% ~) m9 K
  14.   H& I5 Q5 p8 o. q4 c( M3 z
  15.        for j=1:N
    : w) Q2 c/ _, m# ]  Z: Y% ?
  16. 8 L+ {2 V, ~6 X6 H/ e# S
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作
    % |2 v  `, n+ l0 r0 n

  18. % q4 R8 _0 l- K
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化, E$ _; p) K9 b! W5 E6 |6 V
  20. + ?  c8 H\" c) k  Y2 t; J\" R
  21.        end
    % P5 H& R! V+ C% n' G! S

  22. 4 g  e& [- ]; A1 ^  F0 d7 `
  23.    end
      S9 r# D, r0 c( W8 E. A+ l5 D

  24. + t9 S4 `0 c! W' r9 D# u4 s1 b
  25.    result=ifftshift(output);! @1 N: n( j# B
  26. % {- E7 Y0 k6 @3 b- k0 h
  27.    I=ifft2(result);
    3 @& I1 G! h\" M) [! ^& s8 I
  28. 6 Z! C3 d5 z# A' v. A4 n
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。3 b( d! ^1 m7 h% t
; L0 L. q# \6 Q& p/ H
6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。
+ ]$ _/ L4 r1 P  L  S, m; T4 W9 x9 R) v# `9 a+ T* E( S- K
7.边缘检测:
  1.    I1=edge(I,'prewitt');
    3 ?  x5 c8 e+ r6 U/ N2 ~) O
  2. 4 q3 o5 r, i& O: k% A
  3.    I2=edge(I,'roberts');
    * Y3 \# K& R! Q; e) P( R* b1 q

  4. 8 B# S\" s  S$ h, E  h
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。0 F# P! _; D% L9 P
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。9 c& E" [: m+ _4 w5 x
4 B' \3 n% J: u8 t) ~  i9 m& R
0 j& a, h$ m1 `9 @+ |

5 X8 F! P0 P0 l# ~

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-13 16:13 , Processed in 2.161054 second(s), 55 queries .

回顶部