文档库 最新最全的文档下载
当前位置:文档库 › MATLAB对语音信号加随机噪声及去噪程序

MATLAB对语音信号加随机噪声及去噪程序

MATLAB对语音信号加随机噪声及去噪程序
MATLAB对语音信号加随机噪声及去噪程序

%对语言信号做原始的时域波形分析和频谱分析

[y,fs,bits]=wavread('C:\Documents and Settings\Administrator\桌面\cuocu o.wav');

% sou nd(y,fs) % 回放语音信号

n=length(y) %选取变换的点数

y_p=fft(y,n); %对n点进行傅里叶变换到频域

f=fs*(0:n/2-1)/n; % 对应点的频率

figure(1)

subplot(2,1,1);

plot(y); %语音信号的时域波形图

title('原始语音信号采样后时域波形');

xlabel('时间轴')

ylabel('幅值A')

subplot(2,1,2);

plot(f,abs(y_p(1:n/2))); %语音信号的频谱图

title('原始语音信号采样后频谱图');

xlabel('频率Hz');

ylabel('频率幅值');

%对音频信号产生噪声

L=leng th(y) %计算音频信号的长度

noise=0.1*randn(L,2); %产生等长度的随机噪声信号(这里的噪声的大小取决于随机函数的幅度倍数) y_z=y+noise; %将两个信号叠加成一个新的信号——加噪声处理

%sou nd(y_z,fs)

%对加噪后的语音信号进行分析

n=length(y); %选取变换的点数

y_zp=fft(y_z,n); %对n点进行傅里叶变换到频域

f=fs*(0:n/2-1)/n; % 对应点的频率

figure(2)

subplot(2,1,1);

plot(y_z); %加噪语音信号的时域波形图

title('加噪语音信号时域波形');

xlabel('时间轴')

ylabel('幅值A')

subplot(2,1,2);

plot(f,abs(y_zp(1:n/2))); %加噪语音信号的频谱图

title('加噪语音信号频谱图');

xlabel('频率Hz');

ylabel('频率幅值');

对加噪的语音信号进行去噪程序如下:

fp=1500;fc=1700;As=100;Ap=1;

(以上为低通滤波器的性能指标)

wc=2*pi*fc/fs; wp=2*pi*fp/fs;

wdel=wc-wp;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

wn= kaiser(N+1,beta);

ws=(wp+wc)/2/pi;

b=fir1(N,ws,wn);

figure(3);

freqz(b,1);

(此前为低通滤波器设计阶段)——接下来为去除噪声信号的程序——

x=fftfilt(b,y_z);

X=fft(x,n);

figure(4);

subplot(2,2,1);plot(f,abs(y_zp));

title('滤波前信号的频谱');

subplot(2,2,2);plot(f,abs(X));

title('滤波后信号频谱');

subplot(2,2,3);plot(y_z);

title('滤波前信号的波形')

subplot(2,2,4);plot(x);

title('滤波后信号的波形')

%sound(x,fs,bits) %回放滤波后的音频

设计滤波器:

器常用的方法有:脉冲响应不变法和双线性变换法。

数字信号中我们了解到,脉冲响应不变法好处是模拟角频率Ω和数字频率w呈现线性关系w=ΩT,但主要的缺点是它会产生频谱混叠现象,使数字滤波器的频率响应偏离模拟滤波器的频响特性。为了克服这一缺点我们常采用双线性变换法。

下面我们给出IIR数字滤波器和FIR数字滤波器的设计步骤:

一、IIR滤波器的设计步骤如下:

(1)、确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减、阻带截止频率、阻带最小衰减。

(2)、将数字低通滤波器的技术指标转换成响应的模拟低通滤波器的技术指标。

(3)、按照模拟低通滤波器的技术指标设计模拟低通滤波器。

(4)、用双线性变换法将模拟滤波器系统函数转换成数字低通滤波器系统函数。

二、FIR滤波器的设计步骤如下:(重点介绍窗函数法)

(1)、根据对阻带衰减以及过渡带的指标要求,选择窗函数类型(有:矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。先按照阻带衰减选择窗函数类型。在保证阻带衰减满足要求的情况下,尽量选择主瓣集中的窗函数。(2)、构造希望逼近的频率响应函数。

(3)、计算h(n),有限长序列

(4)、加窗得到设计结果

MATLAB实现频域平滑滤波以及图像去噪代码

用MATLAB实现频域平滑滤波以及图像去噪代码 悬赏分:50 - 解决时间:2008-11-8 14:21 是数字图象处理的实验,麻烦高人给个写好的代码,希望能在重要语句后面附上一定的说明,只要能在MATLAB上运行成功,必然给分。具体的实验指导书上的要求如下: 频域平滑滤波实验步骤 1. 打开Matlab 编程环境;

2. 利用’imread’函数读入图像数据; 3. 利用’imshow’显示所读入的图像数据; 4. 将图像数据由’uint8’格式转换为’double’格式,并将各点数据乘以 (-1)x+y 以便FFT 变换后的结果中低频数据处于图像中央; 5. 用’fft2’函数对图像数据进行二维FFT 变换,得到频率域图像数据; 6. 计算频率域图像的幅值并进行对数变换,利用’imshow’显示频率域图 像; 7. 在频率图像上去除滤波半径以外的数据(置0); 8. 计算频率域图像的幅值并进行对数变换,利用’imshow’显示处理过的 频域图像数据; 9. 用’ifft2’函数对图像数据进行二维FFT 逆变换,并用’real’函数取其实部,得到处理过的空间域图像数据; 10. 将图像数据各点数据乘以(-1)x+y; 11. 利用’imshow’显示处理结果图像数据; 12. 利用’imwrite’函数保存图像处理结果数据。 图像去噪实验步骤: 1. 打开Matlab 编程环境; 2. 利用’imread’函数读入包含噪声的原始图像数据; 3. 利用’imshow’显示所读入的图像数据; 4. 以3X3 大小为处理掩模,编写代码实现中值滤波算法,并对原始噪声 图像进行滤波处理; 5. 利用’imshow’显示处理结果图像数据; 6. 利用’imwrite’函数保存图像处理结果数据。 即使不是按这些步骤来的也没关系,只要是那个功能,能实现就OK,谢谢大家 %%%%%%%%spatial frequency (SF) filtering by low pass filter%%%%%%%% % the SF filter is unselective to orientation (doughnut-shaped in the SF % domain). [FileName,PathName,FilterIndex] = uigetfile ; filename = fullfile(PathName, FileName) ; [X map] = imread(filename, fmt); % read image L = double(X); % transform to double %%%%%%%%%%%%% need to add (-1)x+y to L % calculate the number of points for FFT (power of 2) fftsize = 2 .^ ceil(log2(size(L))); % 2d fft Y = fft2(X, fftsize(1), fftsize (2));

Matlab中关于图像处理、去噪分析以及有关散点连线画图等程序

算法程序 1.找到图片 addpath('C:\Documents and Settings\user\My Documents\My Pictures'); imshow('3.jpg') 2.将彩色图片处理成灰度图片 addpath('C:\Documents and Settings\user\My Documents\My Pictures'); A=imread('3.jpg'); I=rgb2gray(A); imshow(I) 3.改变图片大小 右键----编辑----属性-----输入想要的大小 4.两张图片相叠加(区分imadd和系数叠加) 直接把图像数据矩阵相加,可以设定叠加系数,如(系数可自由设定,按需要) img_tot = img1 * 0.5 + img2 * 0.5; %两个图像大小要一致 图像的矩阵我再那里能找到 img1 = imread('tupian.bmp'); 图片相加 addpath('C:\Documents and Settings\user\My Documents\My Pictures'); A=imread('2.jpg'); imshow(A) >> B=imread('3.jpg'); imshow(B) >> C=imadd(A,B); imshow(C) >> D=A*0.5+B*0.5; imshow(D) A图像

B图像 C图像 D图像 5.两张图片相减 addpath('C:\Documents and Settings\user\My Documents\My Pictures'); A=imread('2.jpg');

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

小波去噪matlab程序

小波去噪matlab程序 ****************************************** clear clc %在噪声环境下语音信号的增强 %语音信号为读入的声音文件 %噪声为正态随机噪声 sound=wavread('c12345.wav'); count1=length(sound); noise=0.05*randn(1,count1); for i=1:count1 signal(i)=sound(i); end for i=1:count1 y(i)=signal(i)+noise(i); end %在小波基'db3'下进行一维离散小波变换 [coefs1,coefs2]=dwt(y,'db3');%[低频高频] count2=length(coefs1); count3=length(coefs2); energy1=sum((abs(coefs1)).^2); energy2=sum((abs(coefs2)).^2); energy3=energy1+energy2; for i=1:count2 recoefs1(i)=coefs1(i)/energy3; end for i=1:count3 recoefs2(i)=coefs2(i)/energy3; end %低频系数进行语音信号清浊音的判别 zhen=160; count4=fix(count2/zhen); for i=1:count4 n=160*(i-1)+1:160+160*(i-1); s=sound(n); w=hamming(160); sw=s.*w; a=aryule(sw,10); sw=filter(a,1,sw);

基于MATLAB的小波消噪仿真实现 (1)

收稿日期:2007-12-10 作者简介:史振江(1979-),男,汉,河北唐山人,学士,讲师,研究方向智能检测与控制技术。 基金项目:河北省教育厅自然科学项目(Z2006442) 基于MATLAB 的小波消噪仿真实现 史振江1) 安建龙 2) 赵玉菊1) (石家庄铁路职业技术学院1) 河北石家庄 050041 衡水学院2) 河北衡水 053000)  摘要:小波阈值消噪方法是利用小波变换技术对含噪信号进行分解和重构,通过对小波分解后的小波系数限定阈值来消除噪声的方法。分析小波消噪的算法和实现步骤,并基于MATLAB 软件平台编写仿真程序。进行光纤光栅反射信号的小波消噪仿真实验,消噪效果良好。  关键词:小波消噪 阈值 分解 重构 光纤光栅  中图分类号:TP272 文献标识码:A 文章编号:1673-1816(2008)01-0063-04 1 引言  微弱信号检测[1]是关于如何提取和测量强噪声背景下微弱信号的方法,有效的去除信号中的噪声是实现微弱信号检测的关键。小波变换[2]是一种信号的时间、频率分析方法,具有多分辨分析的特点,是时间窗和频率窗都可以改变的时频局部化分析方法,已经广泛应用于信号消噪、信号处理、图像处理、语音识别与合成等领域。小波消噪[3~5]的方法可以分为三类:模极大值法、相关法以及阈值方法。其中,小波阈值消噪方法是利用小波变换技术对含噪信号进行分解和重构,通过对小波分解后的各层系数限定阈值来消除噪声的方法,因其实现简单、计算量小,取得了广泛应用。 MATLAB 即矩阵实验室,是一种建立在向量、数组和矩阵基础上,面向科学与工程计算的高级语言,它集科学计算、自动控制、信号处理、神经网络、图像处理于一体,具有极高的编程效率[6]。其中的小波处理工具箱可以方便实现小波消噪算法,对含噪信号进行消噪处理和研究。 本文详细分析了小波消噪算法,利用MATLAB 软件编写了程序,并对光纤光栅反射谱信号进行了小波消噪仿真实验。 2 小波变换与Mallat 算法  小波变换是指,把某一被称为基本小波的函数()t ψ平移位移b 后, 在不同尺度a 下作伸缩变换,得到连续小波序列,()a b t ψ,再与待分析信号()f t 作内积: 1/2(,)()()f R t b W a b a f t dt a ψ??=∫ (1) 在实际应用中,经常将,()a b t ψ作离散化处理,令2j a =,2j b k =g ,Z k j ∈,则得到相应的离散

基于小波去噪matlab程序示例

clear all clc %在噪声环境下语音信号的增强 %语音信号为读入的声音文件 %噪声为正态随机噪声 sound=wavread('c12345.wav'); count1=length(sound); noise=0.05*randn(1,count1); for i=1:count1 signal(i)=sound(i); end for i=1:count1 y(i)=signal(i)+noise(i); end %在小波基'db3'下进行一维离散小波变换 [coefs1,coefs2]=dwt(y,'db3'); %[低频高频] count2=length(coefs1); count3=length(coefs2); energy1=sum((abs(coefs1)).^2); energy2=sum((abs(coefs2)).^2); energy3=energy1+energy2; for i=1:count2 recoefs1(i)=coefs1(i)/energy3; end for i=1:count3 recoefs2(i)=coefs2(i)/energy3; end %低频系数进行语音信号清浊音的判别 zhen=160; count4=fix(count2/zhen); for i=1:count4 n=160*(i-1)+1:160+160*(i-1); s=sound(n); w=hamming(160); sw=s.*w; a=aryule(sw,10); sw=filter(a,1,sw); sw=sw/sum(sw); r=xcorr(sw,'biased'); corr=max(r); %为清音(unvoice)时,输出为1;为浊音(voice)时,输出为0 if corr>=0.8 output1(i)=0; elseif corr<=0.1

小波变换图像去噪MATLAB实现

基于小波图像去噪的MATLAB 实现 一、 论文背景 数字图像处理(Digital Image Processing ,DIP)是指用计算机辅助技术对图像信号进行处理的过程。数字图像处理最早出现于 20世纪50年代,随着过去几十年来计算机、网络技术和通信的快速发展,为信号处理这个学科领域的发展奠定了基础,使得DIP 技术成为信息技术中最重要的学科分支之一。在现实生活中,DIP 应用十分广泛,医疗、艺术、军事、航天等图像处理影响着人类生活和工作的各个方面。 然而,在图像的采集、获取、编码和传输的过程中,都存在不同程度被各种噪声所“污染”的现象。如果图像被污染得比较严重,噪声会变成可见的颗粒形状,导致图像质量的严重下降。根据研究表明,当一图像信噪比(SNR)低于14.2dB 时,图像分割的误检率就高于0.5%,而参数估计的误差高于0.6%。通过一些卓有成效的噪声处理技术后,尽可能地去除图像噪声,我们在从图像中获取信息时就更容易,有利于进一步的对图像进行如特征提取、信号检测和图像压缩等处理。小波变换处理应用于图像去噪外,在其他图像处理领域都有着十分广泛的应用。本论文以小波变换作为分析工具处理图像噪声,研究数字图像的滤波去噪问题,以提高图像质量。 二、 课题原理 1.小波基本原理 在数学上,小波定义为对给定函数局部化的新领域,小波可由一个定义在有限区域的函数()x ψ来构造,()x ψ称为母小波,(mother wavelet )或者叫做基本小波。一组小波基函数,()}{,x b a ψ,可以通过缩放和平移基本小波 来生成:

())(1 ,a b x a x b a -ψ=ψ (1) 其中,a 为进行缩放的缩放参数,反映特定基函数的宽度,b 为进行平移的平移参数,指定沿x 轴平移的位置。当a=2j 和b=ia 的情况下,一维小波基函数序列定义为: ()() 1222,-ψ=ψ--x x j j j i (2) 其中,i 为平移参数,j 为缩放因子,函数f (x )以小波()x ψ为基的连续小波变换定义为函数f (x )和()x b a ,ψ的积: ( )dx a b x a x f f x W b a b a )(1)(,,,-ψ= ψ=?+∞∞- (3) 与时域函数对应,在频域上则有: ())(,ωωa e a x j b a ψ=ψ- (4) 可以看出,当|a|减小时,时域宽度减小,而频域宽度增大,而且()x b a ,ψ的窗口中心向|ω|增大方向移动。这说明连续小波的局部是变化的,在高频时分辨率高,在低频时分辨率低,这便是它优于经典傅里叶变换的地方。总体说来,小波变换具有更好的时频窗口特性。 2. 图像去噪综述 所谓噪声,就是指妨碍人的视觉或相关传感器对图像信息进行理解或分析的各种因素。通常噪声是不可预测的随机信号。由于噪声影响图像的输入、采集、处理以及输出的各个环节,尤其是图像输入、采集中的噪声必然影响图像处理全过程乃至最终结果,因此抑制噪声已成为图像处理中极其重要的一个步骤。 依据噪声对图像的影响,可将噪声分为加性噪声和乘性噪声两大类。由于乘性噪声可以通过变换当加性噪声来处理,因此我们一般重点研究加性噪声。设

matlab图像去噪算法设计(精)

数字图像去噪典型算法及matlab实现 希望得到大家的指点和帮助 图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 目前比较经典的图像去噪算法主要有以下三种: 均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。 中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。实验一:均值滤波对高斯噪声的效果 I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');%读取图像 J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声 subplot(2,3,1);imshow(I); title('原始图像'); subplot(2,3,2); imshow(J); title('加入高斯噪声之后的图像'); %采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 K1=filter2(fspecial('average',3),J)/255; %模板尺寸为3 K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5 K3=filter2(fspecial('average',7),J)/255; %模板尺寸为7 K4= filter2(fspecial('average',9),J)/255; %模板尺寸为9 subplot(2,3,3);imshow(K1); title('改进后的图像1'); subplot(2,3,4); imshow(K2); title('改进后的图像2');

小波变换的原理及matlab仿真程序

基于小波变换的信号降噪研究 2 小波分析基本理论 设Ψ(t)∈L 2( R) ( L 2( R) 表示平方可积的实数空间,即能量有限的信号空间) , 其傅立叶变换为Ψ(t)。当Ψ(t)满足条件[4,7]: 2 () R t dw w C ψψ =<∞? (1) 时,我们称Ψ(t)为一个基本小波或母小波,将母小波函数Ψ(t)经伸缩和平移后,就可以得到一个小波序列: ,()( )a b t b t a ψ -= ,,0a b R a ∈≠ (2) 其中a 为伸缩因子,b 为平移因子。 对于任意的函数f(t)∈L 2( R)的连续小波变换为: ,(,),()( )f a b R t b W a b f f t dt a ψψ-=<>= ? (3) 其逆变换为: 211()(,)()f R R t b f t W a b dadb C a a ψ ψ+-= ?? (4) 小波变换的时频窗是可以由伸缩因子a 和平移因子b 来调节的,平移因子b,可以改变窗口在相平面时间轴上的位置,而伸缩因子b 的大小不仅能影响窗口在频率轴上的位置,还能改变窗口的形状。小波变换对不同的频率在时域上的取样步长是可调节的,在低频时,小波变换的时间分辨率较低,频率分辨率较高:在高频时,小波变换的时间分辨率较高,而频率分辨率较低。使用小波变换处理信号时,首先选取适当的小波函数对信号进行分解,其次对分解出的参数进行阈值处理,选取合适的阈值进行分析,最后利用处理后的参数进行逆小波变换,对信号进行重构。 3 小波降噪的原理和方法 3.1 小波降噪原理 从信号学的角度看 ,小波去噪是一个信号滤波的问题。尽管在很大程度上小波去噪可以看成是低通滤波 ,但由于在去噪后 ,还能成功地保留信号特征 ,所以在这一点上又优于传统的低通滤波器。由此可见 ,小波去噪实际上是特征提取和低通滤波的综合 ,其流程框图如 图所示[6] : 小波分析的重要应用之一就是用于信号消噪 ,一个含噪的一维信号模型可表示为如下

数字图像去噪典型算法及matlab实现

图像去噪是数字图像处理中的重要环节和步骤。去噪效果的好坏直接影响到后续的图像处理工作如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声(主要由阻性元器件内部产生)、椒盐噪声(主要是图像切割引起的黑图像上的白点噪声或光电转换过程中产生的泊松噪声)等; 目前比较经典的图像去噪算法主要有以下三种: 均值滤波算法:也称线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。 中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点即是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值,这里领域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但其对点、线和尖顶多的图像不宜采用中值滤波。很容易自适应化。 Wiener维纳滤波:使原始图像和其恢复图像之间的均方误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果。对于去除高斯噪声效果明显。 实验一:均值滤波对高斯噪声的效果 代码 I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');%读取图像 J=imnoise(I,'gaussian',0,0.005);%加入均值为0,方差为0.005的高斯噪声 subplot(2,3,1);imshow(I); title('原始图像'); subplot(2,3,2); imshow(J); title('加入高斯噪声之后的图像'); %采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 K1=filter2(fspecial('average',3),J)/255; %模板尺寸为3 K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5

matlab图像去噪程序

function varargout = jiemian(varargin) %返回从函数jiemian.m中得到的参数中变量的数目;传递一个参数中变量的数目给函数jiemian.m。 % JIEMIAN Application M-file for jiemian.fig % FIG = JIEMIAN launch jiemian GUI. % JIEMIAN('callback_name', ...) invoke the named callback. % Last Modified by shijiawei v2.5 24-May-2014 02:45:18 if nargin == 0 % LAUNCH GUI %nargin 显示输入变量 fig = openfig(mfilename,'reuse'); %打开包含在FIG文件filename.fig中的图形,确保它是可见的并且完全定位在屏幕上。 % Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig); %返回一个结构,它包含图像中对象的句柄 guidata(fig, handles); %将变量handles存储到fig文件中 if nargout > 0 %如果输出变量大于0 varargout{1} = fig; %返回fig end elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK %如果varargin{1}是一个字符数组则返回逻辑真(1),否则返回逻辑假(0)。 try if (nargout) %显示用户提供的输出变量的个数 [varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard %varargout传递参数中的变量数目else feval(varargin{:}); % FEVAL switchyard %**feval函数的求值 end catch %如果出错开始执行catch块 disp(lasterr); %%%% lasterr函数查询出错原因。如果函数lasterr的运行结果为一个空串,则表明组命令1被成功执行了 %%%% disp 显示矩阵和文字内容 end end %| ABOUT CALLBACKS: %| GUIDE automatically appends subfunction prototypes to this file, and %| sets objects' callback properties to call them through the FEVAL %| switchyard above. This comment describes that mechanism. %| %| Each callback subfunction declaration has the following form: %| (H, EVENTDATA, HANDLES, VARARGIN) %| %| The subfunction name is composed using the object's Tag and the %| callback type separated by '_', e.g. 'slider2_Callback', %| 'figure1_CloseRequestFcn', 'axis1_ButtondownFcn'.

matlab小波去噪实现的函数原理

函数wdencmp 功能:小波去噪,得到去噪后的图像 [XC,CXC,LXC,PERF0,PERFL2] = WDENCMP('gbl',X,'wname',N,THR,SORH,KEEPAPP) 其中XC为去噪后的图像信号 在wdencmp中通过xc = waverec2(cxc,lxc,w) ,重构函数得到信号xc Waverec2如何工作的呢? X = W A VEREC2(C,S,'wname') reconstructs the matrix X based on the multi-level wavelet decomposition structure [C,S] 利用经过阈值处理过得系数C和它对应的长度S按照分解时选择的小波来重构;Waverec2涉及到的函数x = appcoef2(c,s,varargin{:},0) Appcoef2函数得到x的方法:x= idwt(a,d,Lo_R,Hi_R,l(imax-p)),综合滤波器重构 Idwt中包含了上采用和卷积函数upsconv1 x = upsconv1(a,Lo_R,lx,dwtEXTM,shift) + upsconv1(d,Hi_R,lx,dwtEXTM,shift); 里面分别调用了采样函数和卷积函数 完成!! 函数wavedec2 功能:返回N层小波分解系数,使用指定滤波器 [C,S] = WA VEDEC2(X,N,'wname') returns the wavelet decomposition of the matrix X at level N,using the wavelet named in string 'wname' ,输出C小波系数,S是对应的系数长度;Wavedec2中通过dwt获得低频系数和小波系数 for i=1:n [x,h,v,d] = dwt2(x,Lo_D,Hi_D); % decomposition c = [h(:)' v(:)' d(:)' c]; % store details s = [size(x);s]; % store size end % Last approximation. c = [x(:)' c]; s = [size(x) ; s]; Dwt2函数如何实现此功能?包含卷积conv2和下采样convdown函数 根据二维mallat变换 输入信号先与滤波器卷积conv2,再下采样得到系数[x,h,v,d] ;

最新图像去噪处理的研究及MATLAB仿真

图像去噪处理的研究及M A T L A B仿真

目录 引言 (1) 1图像去噪的研究意义与背景 (2) 1.1数字图像去噪研究意义与背景 (2) 1.2 数字图像去噪技术的研究现状 (3) 2 邻域平均法理论基础 (3) 2.1 邻域平均法概念 (3) 3 中值滤波法理论基础 (3) 3.1中值滤波法概念 (3) 3.2中值滤波法的实现 (4) 4中值滤波法去噪技术MATLAB仿真实现 (4) 4.1Matlab仿真软件 (4) 4.2中值滤波法的MATLAB实现 (5) 4.3邻域平均法的MATLAB实现 (6) 总结 (8) 全文工作总结 (8) 工作展望 (8) 参考文献 (9) 英文摘要 (10) 致谢语 (11)

图像去噪处理的研究及MATLAB仿真 电本1102班姓名:杨韬 指导老师:刘明军摘要:图像是生活中一种重要的信息来源,通过对图像的处理可以帮助我们了解信息的内在信息。数字图像去噪声涉及光学系统、微电子技术、计算机科学、数学分析等领域,是一门综合性很强的边缘科学,如今其理论体系非常完善,且其应用很广泛,在医学、军事、艺术、农业等都有广泛且充分的应用。MATLAB是一种高效的工程计算语言,在数值计算、数据处理、图像处理、神经网络、小波分析等方面都有广泛的应用。MATLAB是一种向量语言,它非常适合于进行图像处理。 本文概述了邻域平均法与中值滤波法去噪的基本原理。对这两种常用的去噪方法进行了分析比较和仿真实现。最后根据理论分析和实验结果,讨论了一个完整去噪算法中影响去噪性能的各种因素。为实际工作中的图像处理,去噪方法的选择和改进提供了数据参考和依据。 关键字:邻域平均法;中值滤波法;MATLAB 引言 图像因为一些原因总会被外界干扰,所以图像质量往往不是很好,而质量不好的图片又不容易进行进一步的处理。在对图像的地处理过程中,图像去噪是很重要的一个环节,所以想对图像进行进一步的处理,对图像的去噪就变得重要起来,所以很多研究人员对这一课题进行了比较全面的研究,图像的处理最传统的方法是在空域中的处理,也就是说在图像的空间范畴内对图像质量进行改善。也可以对图像进行平滑处理等,这属于第一类图像处理方法。 中值滤波法与邻域平均法是出现最早的去噪手段,而且由于其具备良好的空频特性,实际应用也非常广泛。其中图像的邻域平均去噪方法是众多空域图像去噪方法中效果最好的去噪方法。基本思想就是用邻近的像素平均值来代替噪声的像素,且图像尺寸越大,去噪

图像去噪TV模型及Matlab实现

1.%% ROFdenoise 2.% 3.% Image -to denoise 4.% Theta - the parameter 5.% 6.% This denoising method is based on total-variation, originally proposed by 7.% Rudin, Osher and Fatemi. In this particular case fixed point iteration 8.% is utilized. 9.%------ 10.% For the included image, a fairly good result is obtained by using a 11.% theta value around 12-16. A possible addition would be to analyze the 12.% residual with an entropy function and add back areas that have a lower 13.% entropy, i.e. there are some correlation between the surrounding pixels. 14.%------ 15.% Code Provided By Li.J.Z 16.% Based on total-variation 17. 18.function A = ROFdenoise(Image, Theta) 19. 20.[Image_h Image_w] = size(Image); 21.g = 1; dt = 1/4; nbrOfIterations = 50; 22.Image = double(Image); 23. 24.p = zeros(Image_h,Image_w,2); 25.d = zeros(Image_h,Image_w,2); 26.div_p = zeros(Image_h,Image_w); 27. 28.for i = 1:nbrOfIterations 29. for x = 1:Image_w 30. for y = 2:Image_h-1 31. div_p(y,x) = p(y,x,1) - p(y-1,x,1); %backward difference 32. end 33. end 34. 35. for x = 2:Image_w-1 36. for y = 1:Image_h 37. div_p(y,x) = div_p(y,x) + p(y,x,2) - p(y,x-1,2); 38. end 39. end 40. 41. % Handle boundaries 42. div_p(:,1) = p(:,1,2);

小波去噪matlab学习指令

MATLAB中实现阈值获取的函数有ddencmp、thselect、wbmpen和wwdcbm,下面对它们的用法进行简单的说明。 ddencmp的调用格式有以下三种: (1)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X) (2)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wp',X) (3)[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,'wv',X) 函数ddencmp用于获取信号在消噪或压缩过程中的默认阈值。输入参数X为一维或二维信号;IN1取值为'den'或'cmp','den'表示进行去噪,'cmp'表示进行压缩;IN2取值为'wv'或'wp',wv表示选择小波,wp表示选择小波包。返回值THR是返回的阈值;SORH是软阈值或硬阈值选择参数;KEEPAPP表示保存低频信号;CRIT是熵名(只在选择小波包时使用)。 函数thselect的调用格式如下: THR=thselect(X,TPTR); THR=thselect(X,TPTR)根据字符串TPTR定义的阈值选择规则来选择信号X的自适应阈值。 自适应阈值的选择规则包括以下四种: *TPTR='rigrsure',自适应阈值选择使用Stein的无偏风险估计原理。 *TPTR='heursure',使用启发式阈值选择。 *TPTR='sqtwolog',阈值等于sqrt(2*log(length(X))). *TPTR='minimaxi',用极大极小原理选择阈值。

阈值选择规则基于模型y = f(t) + e,e是高斯白噪声N(0,1)。 函数wbmpen的调用格式如下: THR=wbmpen(C,L,SIGMA,ALPHA); THR=wbmpen(C,L,SIGMA,ALPHA)返回去噪的全局阈值THR。THR通过给定的一种小波系数选择规则计算得到,小波系数选择规则使用Birge-Massart的处罚算法。{C,L]是进行去噪的信号或图像的小波分解结构;SIGMA是零均值的高斯白噪声的标准偏差;ALPHA是用于处罚的调整参数,它必须是一个大于1的实数,一般去ALPHA=2。 设t*使crit(t)=-sum(c(k)^2,k<=t) + 2 * SIGMA^2 * t*(ALPHA+log(n/t))的最小值,其中c(k)是按绝对值从大到小排列的小波包系数,n是系数的个数,则THR=|c(t*)|。 wbmpen(C,L,SIGMA,ALPHA,ARG)计算阈值并画出三条曲线。 2 * SIGMA^2 * t*(ALPHA+log(n/t)) sum(c(k)^2, k<=t) crit(t) wdcbm的调用格式有以下两种: (1)[THR,NKEEP]=wdcbm(C,L,ALPHA); (2)[THR,NKEEP]=wdcbm(C,L,ALPHA,M); 函数wdcbm是使用Birge-Massart算法获取一维小波变换的阈值。返回值THR是与尺度无关的阈值,NKEEP是系数的个数。[C,L]是要进行压缩或消噪的信号在j=length(L)-2层的分解结构;LAPHA和M必须是大于1的实数;THR是关于j的向量,THR(i)是第i层的阈值;NKEEP也是关于j的向量,NKEEP(i)是第i层的系数个数。一般

MATLAB实现频域平滑滤波以及图像去噪代码

MATLAB实现频域平滑滤波以及图像去噪代码用MATLA实现频域平滑滤波以及图像去噪代码 悬赏分:50 - 解决时间 :2008-11-8 14:21 是数字图象处理的实验,麻烦高人给个写好的代码,希望能在重要语句后面附上一定的说明,只要能在 MATLAE t运行成功,必然给分。具体的实验指导书上的要求如下 : 频域平滑滤波实验步骤 1. 打开 Matlab 编程环境 ; 2. 利用’imread '函数读入图像数据; 3. 利用' imshow' 显示所读入的图像数据 ; 4. 将图像数据由' uint8 ' 格式转换为' double ' 格式,并将各点数据乘以 (-1)x+y 以便 FFT 变换后的结果中低频数据处于图像中央; 5. 用' fft2 ' 函数对图像数据进行二维 FFT 变换,得到频率域图像数据; 6. 计算频率域图像的幅值并进行对数变换,利用' imshow' 显示频率域图像; 7. 在频率图像上去除滤波半径以外的数据 (置 0); 8. 计算频率域图像的幅值并进行对数变换,利用' imshow' 显示处理过的 频域图像数据; 9. 用' ifft2 ' 函数对图像数据进行二维 FFT 逆变换,并用' real '函数取其实部,得到处理过的空间域图像数据; 10. 将图像数据各点数据乘以 (-1)x+y; 11. 利用' imshow' 显示处理结果图像数据; 12. 利用' imwrite '函数保存图像处理结果数据。 图像去噪实验步骤 : 1. 打开 Matlab 编程环境;

2. 利用' imread' 函数读入包含噪声的原始图像数据 ; 3. 利用' imshow' 显示所读入的图像数据 ; 4. 以 3X3 大小为处理掩模,编写代码实现中值滤波算法,并对原始噪声图像进行滤波处理 ; 5. 利用' imshow' 显示处理结果图像数据 ; 6. 利用' imwrite ' 函数保存图像处理结果数据。 即使不是按这些步骤来的也没关系,只要是那个功能,能实现就0K谢谢大家%%%%%%%%spatial frequency (SF) filtering by low pass filter%%%%%%%% % the SF filter is unselective to orientation (doughnut-shaped in the SF % domain). [FileName,PathName,FilterIndex] = uigetfile ; filename = fullfile(PathName, FileName) ; [X map] = imread(filename, fmt); % read image L = double(X); % transform to double %%%%%%%%%%%%% need to add (-1)x+y to L % calculate the number of points for FFT (power of 2) fftsize = 2 .A ceil(log2(size(L))); % 2d fft Y = fft2(X, fftsize(1), fftsize (2)); Y = fftshift(Y); % obtain frequency (cycles/pixel) f0 = floor([m n] / 2) + 1; fy = ((m: -1: 1) - f0(1) + 1) / m; fx = ((1: n) - f0(2)) / n; [mfx mfy] = meshgrid(fx, fy); % calculate radius SF = sqrt(mfx .A 2 + mfy .A 2);

基于小波空域相关法去噪MATLAB源程序

close all; clc; clear; snr=5; init=2055615866; [xref,x]=wnoise(1,10,snr,init); signal=x; points=1024; level=5; wf='bior 1.5'; %sym8,bior 1.5 [Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf); [swa,swd] = swt(signal,level,Lo_D,Hi_D);%swd是细节系数,swa是近似系数Swd_n=swd; swd_org=swd; mask_n=zeros(size(Swd_n)); %先把系数处理矩阵设置为全0。 for j=1:(level-1) %在1:(level-1)分解层次上对高频系数处理,最后一层无法求相关系数,所以不作处理。 Noise_d1=swd_org(j,:); Noise_d1=Noise_d1(1:80); Noise_var=var(Noise_d1); %以信号的前80个只含有噪声的点估计噪声在各层的方差。 Pw_var=var(swd_org(j,:)); Corr=swd_org(j,:).*swd_org(j+1,:); %定义相关系数为相邻两层的乘积。 cc=1.7; %_______用以设定停止迭代的噪声能量阈值,需要根据情况调节。________% while Pw_var>cc*Noise_var Pw=sum(abs(swd(j,:)).^2); %计算小波能量 Pcorr=sum(abs(Corr).^2); %计算相关系数能量 Corr_new=Corr.*((Pw/Pcorr)^0.5); %归一化 corr_mod=abs(Corr_new); w_mod=abs(swd(j,:)); swd_n=swd(j,:).*(corr_mod>w_mod);%(corr_mod>w_mod)返回0或者1 swd_n1=(swd_n~=0); mask_n(j,:)=mask_n(j,:)+swd_n1; %将选出的点赋给系数处理矩阵相应位置。 swd_n0=ones(size(swd_n1)); swd_n0=swd_n0-swd_n1; swd(j,:)=swd(j,:).*swd_n0; %将高频系数选出大值后的地方置0。 Pw_var=var(swd(j,:)); Corr_new=Corr_new.*swd_n0; %将相关系数选出大值后的地方置0。 Corr=Corr_new;

相关文档
相关文档 最新文档