现代数字信号处理 课程作业 维纳、卡尔曼、RLS、LMS 算法 matlab 实现 维纳滤波 从噪声中提取信号波形的各种估计方法中,维纳(Wiener)滤波是一种最基本的方法,适用于需要从噪声中分离出的有用信号是整个信号(波形),而不只是它的几个参量。 设维纳滤波器的输入为含噪声的随机信号。期望输出与实际输出之间的差值为误差,对该误差求均方,即为均方误差。因此均方误差越小,噪声滤除效果就越好。为使均方误差最小,关键在于求冲激响应。如果能够满足维纳-霍夫方程,就可使维纳滤波器达到最佳。维纳滤波器的优点是适应面较广,无论平稳随机过程是连续的还是离散的,是标量的还是向量的,都可应用。维纳滤波器的缺点是,要求得到半无限时间区间内的全部观察数据的条件很难满足,同时它也不能用于噪声为非平稳的随机过程的情况,对于向量情况应用也不方便。因此,维纳滤波在实际问题中应用不多。 下面是根据维纳滤波器给出的图像处理matlab 实例,在下面实例中维纳滤波和均值滤波相比较,并且做了维纳复原、边缘提取、图像增强的实验: %****************维纳滤波和均值滤波的比较********************* - 1 - I=imread('lena.bmp'); J=imnoise(I,'gaussian',0,0.01); Mywiener2 = wiener2(J,[3 3]); Mean_temp = ones(3,3)/9; Mymean = imfilter(J,Mean_temp); figure(1); subplot(121),imshow(Mywiener2),title('维纳滤波器输出'); subplot(122),imshow(uint8(Mymean),[]),title('均值滤波器的输出'); %***********************维纳复原程序******************** figure(2); subplot(231),imshow(I),title('原始图像'); LEN = 20; THETA =10; PSF = fspecial('motion',LEN,THETA); Blurred = imfilter(I,PSF,'circular'); subplot(232),imshow(Blurred),title('生成的运动的模糊的图像'); noise = 0.1*randn(size(I)); subplot(233),imshow(im2uint8(noise)),title('随机噪声'); BlurredNoisy=imadd(Blurred,im2uint8(noise)); subplot(234),imshow(BlurredNoisy),title('添加了噪声的模糊图像'); Move=deconvwnr(Blurred,PSF); subplot(235),imshow(Move),title('还原运动模糊的图像'); nsr = sum(noise(:).^2)/sum(im2double(I(:)).^2); wnr2 = deconvwnr(BlurredNoisy,PSF,nsr); subplot(236),imshow(wnr2),title('还原添加了噪声的图像'); %****************维纳滤波应用于边...