QQ登录

只需要一步,快速开始

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

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

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。: Y) h" ?9 P) K
VeryCapture_20231209165431.jpg
7 g" n2 \3 Q4 [7 t5 Z. b( {1.读取图像:
  1.    I=imread('1.jpg');
    3 b+ O; l. c\" Q. R4 X

  2. % g; J+ ^  p, Z( W7 z
  3.    try
    4 v2 b4 U& N2 K, M! q
  4. 3 f' [  Y1 x( F4 Y( W, d\" ?
  5.        I=rgb2gray(I);
    5 o6 x6 m0 m/ m2 m9 \% D
  6. 2 K& U3 v/ a- ~( E4 n: A! Y* Y
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。
& J. }2 _4 V4 j( Q# t- F4 S) S/ L& t; B2 M( _
2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。
* B+ [( ~: E; v) r3 V7 F3 _+ G6 n9 P. ?) A. r) c2 [
3.显示原始图像:
  1.    figure4 f0 ?  u( p- h' Y7 E: J0 A
  2. 4 n) R$ t: D3 f# k7 w: I
  3.    imshow(I)
    % ?6 L8 z/ ?( L: Z' h5 R0 i
  4. , n2 r+ L9 q: q/ n  [$ M
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。4 s6 z* F) x! v- u7 B! d" n
& W9 ^/ A) }0 ?+ Z: S1 H* d- x4 ~* S
4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。5 C% H/ p; ?8 {; B
, V6 X- O' ?* M
5.图像锐化:
  1.   [M,N]=size(I);) O2 p, h+ G3 [( v$ V
  2. % C' `2 F% R2 _
  3.    f=double(I);: U7 o8 `  c, m9 \% @8 Q

  4. 6 g7 F) F4 h( S1 R1 L1 s. X
  5.    g=fft2(f);# W& l+ }$ K1 X- z+ c/ `
  6. 9 ~8 u, I# V! f+ D. q+ d1 `  B: E
  7.    g=fftshift(g);
    / X  c  h# _' @9 w  d# A2 ^

  8. . r  s* M% E0 q
  9.    n=2;
    7 A$ H2 ^' B/ V$ I

  10. 5 l, M2 t' ~! l
  11.    D0=3;/ b7 X6 J& h. |\" p! s( r3 G

  12. / y; N% {7 o* z; |; a
  13.    for i=1:M
    ; q) o) [) ~$ k
  14. - G- `% f+ ~% C
  15.        for j=1:N
    9 C# |\" {\" y4 E# W, m
  16. + P# ?! @  o& b
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作
    0 I% x& v+ J$ G! d) l) l! O

  18.   J2 ?' u: Z: q! I4 Q, S2 @8 A
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化
    8 H  V; K1 n. ~- r0 G5 Y* @2 k
  20. & I  d) {9 g3 A* S3 X. z' m1 n3 S
  21.        end( W3 N  T/ \7 C2 a8 q' W' ~  G
  22. & ]3 m! f8 W) M: @3 D
  23.    end
    5 R+ W$ q& u+ B* {

  24. ' N# `$ S# U5 {; f9 H- ]; E
  25.    result=ifftshift(output);# \: F0 U- b+ S8 q1 k
  26. # ^) M: l. a5 P) t$ V0 s; ]- V
  27.    I=ifft2(result);& H( |' h  s# p+ d' f
  28. # ~2 I* A3 }) z# s; v# B: p+ q( @0 x
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。
8 G& u% x' I$ x# J* h4 ^- B
- l+ y: e  P6 u/ T8 f' ~4 ?- O6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。1 s/ {# z* ?' s. u! E7 I9 u% r
+ B# V2 E3 ^% _; a$ Y, ]9 C# U$ G8 U
7.边缘检测:
  1.    I1=edge(I,'prewitt');
    + i3 Z% n, j3 F+ q- `0 ^

  2. 8 @) ^, f; E* Z( O% i! t
  3.    I2=edge(I,'roberts');
    ( c3 x$ N1 t* e. ?
  4. 6 S1 @# `5 p$ z0 K( O
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。2 H- C; ?0 J! b( i
这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。5 J/ I( H% X) R) L/ c8 f* F+ ?
' a0 c+ I, N- _! e& S" J
# Q/ ]- v2 ]6 R. y3 w

' U% A& h$ z8 H; Y0 a( _" N

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

回顶部