QQ登录

只需要一步,快速开始

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

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

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

1188

主题

4

听众

2931

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2023-12-9 17:16 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
这段代码主要展示了图像处理的一系列步骤,包括图像读取、添加噪声、去噪、图像锐化、直方图均衡化以及边缘检测。# }+ }! P. C( {# y  e5 c
VeryCapture_20231209165431.jpg 7 ?/ d( `0 j$ |* [: `
1.读取图像:
  1.    I=imread('1.jpg');
    & i+ L/ J% m% Z9 ~
  2. ; d' v; Z4 q/ _8 j\" J* r9 U
  3.    try
    7 Z+ Z2 ^% W; n* Q# P) B5 o

  4. 9 k' B$ i+ n0 z
  5.        I=rgb2gray(I);1 s. ^2 k; J* s4 C( Y, z! Q1 E5 c

  6. 4 H) e5 W3 _0 J- h' G0 s' U
  7.    end
复制代码
这里首先读取名为 "1.jpg" 的图像文件。然后,使用 rgb2gray 函数将彩色图像转换为灰度图像,但由于可能出现错误(比如图像本身就是灰度图像),用了 try 和 end 来捕获并处理这个潜在的错误。2 M$ l7 `& U9 ~4 R/ z

5 j! Q- v5 o4 X% R9 g2.添加椒盐噪声:
  1.    I=imnoise(I,'salt & pepper',0.04);
复制代码
使用 imnoise 函数向图像中添加密度为 0.04 的椒盐噪声。* Y- Y9 E: _& o7 _
& {) K2 I4 l/ B1 x6 m4 M
3.显示原始图像:
  1.    figure1 h\" J+ ~6 v6 u* b+ `3 x

  2. 2 ^6 F/ w6 k8 o' R
  3.    imshow(I)
    % P: J- n3 W. M# R: P

  4. 4 A0 E, ?% w* N) e: J
  5.    title('原图')
复制代码
通过 imshow 函数显示添加噪声后的原始图像。, s" p3 v3 h2 V

! D0 t4 Z" A) W: ?- p; j4.图像去噪:
  1.    I=medfilt2(I,[2 4]);
复制代码
使用 medfilt2 函数对受椒盐噪声干扰的图像进行中值滤波去噪处理。
5 F" b+ U  D  {+ j- E- t
, f& \  D/ N" u3 s4 V* `5.图像锐化:
  1.   [M,N]=size(I);
    & _8 `: y. i- ?
  2. & g\" P9 E+ R& y) P* W\" x1 N5 g
  3.    f=double(I);
    / U0 O- B1 X8 z6 l, }\" ~
  4. , w8 G& o- u( M4 Y8 Z) i; N7 y
  5.    g=fft2(f);. r1 M0 B4 [7 r- `8 J- R

  6. , |/ A7 l3 Q6 P1 ^9 v1 \
  7.    g=fftshift(g);( L; {: o9 Q! F

  8. ! t8 q3 z1 D* @9 V; X' h8 L* t
  9.    n=2;
    : Q; \4 n* X; L( z% M- _
  10. 1 T8 M4 }$ }2 v3 t2 ^8 I! J* t+ _
  11.    D0=3;+ ~+ \. J\" f2 i8 X

  12. 7 I/ y* ^/ {$ X% y& P# u3 h' Y
  13.    for i=1:M6 [9 y9 Q2 L0 }4 R

  14. % P# A  @( `; d4 `8 D
  15.        for j=1:N1 P7 O; U$ V5 ~- a0 X$ v
  16. . z; z. s) W) M+ n
  17.            % 省略了对频域信号进行巴特沃斯滤波的操作! _9 v$ F% w6 f; \' x7 a

  18. + O) m3 @) U  M! F/ M( N1 C' A
  19.            % 这部分代码主要是在频域进行滤波处理以实现图像的锐化- R# j$ E6 }4 H8 @( _. t4 [
  20. 6 J- O1 u& `3 R* U8 g( L
  21.        end
    ; z7 r5 }; `* t9 }5 U; `) j
  22. 0 u& R, p1 |+ `- W4 z; C5 S
  23.    end. h  y3 i- H\" e; I& c, N\" F6 W

  24. - ]& h2 ~5 ]1 N; U& M) V
  25.    result=ifftshift(output);* Q1 l7 L0 p# w3 e! _4 N2 C
  26. - y5 g2 P& e# Y1 `' W
  27.    I=ifft2(result);
    3 T- p\" g+ c/ Z- @4 K

  28. # S+ \% p: }1 p9 l, R/ x
  29.    I=uint8(real(I));
复制代码
这一部分通过傅立叶变换、频域处理(采用了巴特沃斯滤波器)以及反变换实现图像的锐化操作。
& L5 r# t& z  K: O) _
' |- U, Z) V4 n2 U( v, y+ r6.直方图均衡化:
  1.    I=histeq(I);
复制代码
使用 histeq 函数对图像进行直方图均衡化处理,以增强图像的对比度和亮度分布。
( h$ C& J, J8 Y% |8 s1 Q6 m6 i. v5 m
7.边缘检测:
  1.    I1=edge(I,'prewitt');* Q# X& `$ e  b& Q$ S9 F+ h$ i

  2. / h! m3 J, v. |* z
  3.    I2=edge(I,'roberts');: H\" {: o& x! t& H

  4. 0 N2 ~2 O- m- P: A
  5.    I3=edge(I,'sobel');
复制代码
使用不同的边缘检测算子(Prewitt、Roberts、Sobel)对经过处理后的图像进行边缘检测,产生三幅不同的边缘强度图像。
$ V; b3 e, K6 ~+ X9 q% `这段代码展示了图像处理领域中常见的一些基本操作,包括噪声处理、滤波、频域处理、直方图均衡化以及边缘检测。2 h9 E( x9 J. v8 B

8 h" U( q% [$ L- J
2 e5 H* c+ K" K+ _# W& j# A( @
% X& R' L& q/ F- o5 ~

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-5-26 12:02 , Processed in 0.359493 second(s), 55 queries .

回顶部