|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
一、简介
$ A! R! N# }; R8 N
, c: z) _' T" P! h" n% |& i" P' k1 图像去噪是指减少数字图像中噪声的过程。现实中的数字图像在数字化和传输过程中常受到成像设备与外部环境噪声干扰等影响,称为含噪图像或噪声图像。
7 P, g% v$ V$ i: C& t噪声是图象干扰的重要原因。一幅图象在实际应用中可能存在各种各样的噪声,这些噪声可能在传输中产生,也可能在量化等处理中产生。5 i V8 U# X3 N4 o! @( X+ X
2 折叠均值滤波器0 z3 o* N) k! F) \! _0 Y4 Q
采用邻域平均法的均值滤波器非常适用于去除通过扫描得到的图像中的颗粒噪声。邻域平均法有力地抑制了噪声,同时也由于平均而引起了模糊现象,模糊程度与领域半径成正比。' ^: ]8 w8 p" F+ e& }
- u; x. W2 q& }
3 几何均值滤波器
3 S2 c9 O$ _0 _) k9 ]1 D9 j所达到的平滑度可以与算术均值滤波器相比,但在滤波过程中会丢失更少的图象细节。" I# E6 Z8 q8 V0 E' W, v2 W
4 i8 C* m; h$ y7 J7 G4 B9 Q9 |4 谐波均值滤波器) R+ F$ L* R5 _4 \3 V( d* w: A
对"盐"噪声效果更好,但是不适用于"胡椒"噪声。它善于处理像高斯噪声那样的其他噪声。
, H8 h% b- L! t6 e6 Q z
; Q# X! M3 i* Z1 [( C; A5 逆谐波均值滤波器
& F0 V z" a0 n1 O# c更适合于处理脉冲噪声,但它有个缺点,就是必须要知道噪声是暗噪声还是亮噪声,以便于选择合适的滤波器阶数符号,如果阶数的符号选择错了可能会引起灾难性的后果。8 u$ c6 g h+ P( h. q$ L2 N6 f3 R0 s
. j9 U( y/ Q+ s5 B+ K' w6 y9 S; M; z6折叠自适应维纳滤波器
# A3 j4 i0 u+ n6 }它能根据图象的局部方差来调整滤波器的输出,局部方差越大,滤波器的平滑作用越强。它的最终目标是使恢复图像f(x,y)与原始图像f(x,y)的均方误差e2=E[(f(x,y)-f(x,y)2]最小。该方法的滤波效果比均值滤波器效果要好,对保留图像的边缘和其他高频部分很有用,不过计算量较大。维纳滤波器对具有白噪声的图象滤波效果最佳。
0 f7 m( B9 ~. {& t+ _0 n6 t+ i0 s& s0 _% f. ~; v; I4 G
7折叠中值滤波器
' y% Q; I7 L& R它是一种常用的非线性平滑滤波器,其基本原理是把数字图像或数字序列中一点的值用该点的一个领域中各点值的中值代换其主要功能是让周围象素灰度值的差比较大的像素改取与周围的像素值接近的值,从而可以消除孤立的噪声点,所以中值滤波对于滤除图像的椒盐噪声非常有效。中值滤波器可以做到既去除噪声又能保护图像的边缘,从而获得较满意的复原效果,而且,在实际运算过程中不需要图象的统计特性,这也带来不少方便,但对一些细节多,特别是点、线、尖顶细节较多的图象不宜采用中值滤波的方法。
. O. ?2 ?- z+ m/ Z; Z8 o0 q9 y
' D2 m5 i( U# y, E8 折叠形态学噪声滤除器
7 p7 O* j# \. K% ^& [$ G; }# ~将开启和闭合结合起来可用来滤除噪声,首先对有噪声图象进行开启操作,可选择结构要素矩阵比噪声的尺寸大,因而开启的结果是将背景上的噪声去除。最后是对前一步得到的图象进行闭合操作,将图象上的噪声去掉。根据此方法的特点可以知道,此方法适用的图像类型是图象中的对象尺寸都比较大,且没有细小的细节,对这种类型的图像除噪的效果会比较好。7 y, L( s# o% ?/ G& t6 \
8 _& b: Y$ b0 U0 M! N" j9 折叠小波去噪
$ C/ j+ \. E" o. U$ \5 Q) f* r这种方法保留了大部分包含信号的小波系数,因此可以较好地保持图象细节。小波分析进行图像去噪主要有3个步骤: (1)对图象信号进行小波分解。(2)对经过层次分解后的高频系数进行阈值量化。(3)利用二维小波重构图象信号。 t; R: V6 G+ m' `1 L$ @
+ }5 j8 z. S, Z; a
2 }" e8 y D5 a二、源代码
9 q" ^- d2 Y, b
: a- ]5 z o& P) d& \) T4 I8 n- J+ _
- function varargout = aaa(varargin)
- % AAA MATLAB code for aaa.fig
- % AAA, by itself, creates a new AAA or raises the existing
- % singleton*.
- %
- % H = AAA returns the handle to a new AAA or the handle to
- % the existing singleton*.
- %
- % AAA('CALLBACK',hObject,eventData,handles,...) calls the local
- % function named CALLBACK in AAA.M with the given input arguments.
- %
- % AAA('Property','Value',...) creates a new AAA or raises the
- % existing singleton*. Starting from the left, property value pairs are
- % applied to the GUI before aaa_OpeningFcn gets called. An
- % unrecognized property name or invalid value makes property application
- % stop. All inputs are passed to aaa_OpeningFcn via varargin.
- %
- % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
- % instance to run (singleton)".
- %
- % See also: GUIDE, GUIDATA, GUIHANDLES
- % Edit the above text to modify the response to help aaa
- % Last Modified by GUIDE v2.5 11-Jul-2016 14:38:54
- % Begin initialization code - DO NOT EDIT
- gui_Singleton = 1;
- gui_State = struct('gui_Name', mfilename, ...
- 'gui_Singleton', gui_Singleton, ...
- 'gui_OpeningFcn', @aaa_OpeningFcn, ...
- 'gui_OutputFcn', @aaa_OutputFcn, ...
- 'gui_LayoutFcn', [] , ...
- 'gui_Callback', []);
- if nargin && ischar(varargin{1})
- gui_State.gui_Callback = str2func(varargin{1});
- end+ Z' D) @" B1 F
) e& Z* j6 _$ f$ v1 e2 N3 j
" \6 V0 i6 [/ @8 i% N" t; @# K, x2 P* x) ^
三、运行结果
! J w7 Q( R2 K5 Y: M( u3 q0 u9 X3 L) x9 D ]7 `' @$ ]* d
* L1 x$ G# e O* _; Q
# A% U% m! ^+ v9 W" u) k7 a. J
# I n! c; g( R+ |3 o- I- V. N$ g% y( u
+ v5 f* j9 a% E! r9 z
|
|