请问用matlab程序怎么完成: 维纳滤波 matlab(使用函数deconvwnr) 要求实现 :产生运动模糊图像(不含噪声)

matlab中deconvwnr函数是什么_百度知道
matlab中deconvwnr函数是什么
在在matlab程序中deconvwnr函数是什么?
详细说下啊 我也不知道为什么的,所以您就自己理解下吧 哈哈
我是做图像复原的,输入程序时有误,可能是说没有定义这个函数哦 我就不知道怎么办了
我有更好的答案
  函数是用PSF即点分布函数来修复图形的。  MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
采纳率:96%
来自团队:
这个函数是用PSF即点分布函数来修复图形的。J = deconvwnr(I, PSF) restores image I that was degraded by convolution with a point-spread function PSF and possibly by additive noise. The algorithm is optimal in a sense of least mean square error between the estimated and the true image, and uses the correlation matrices of image and noise. In the absence of noise, the Wiener filter reduces to the ideal inverse filter.I can be an N-dimensional array.J = deconvwnr(I, PSF, NSR) where NSR is the noise-to-signal power ratio. NSR could be a scalar or an array of the same size as I. The default value is 0.J = deconvwnr(I, PSF, NCORR, ICORR) where NCORR and ICORR are the autocorrelation functions of the noise and the original image, respectively. NCORR and ICORR can be of any size or dimension not exceeding the original image. An N-dimensional NCORR or ICORR array corresponds to the autocorrelation within each dimension. A vector NCORR or ICORR represents an autocorrelation function in the first dimension if PSF is a vector. If PSF is an array, the 1-D autocorrelation function is extrapolated by symmetry to all nonsingleton dimensions of PSF. A scalar NCORR or ICORR represents the power of the noise or the image.
The output image J could exhibit ringing introduced by the discrete Fourier transform used in the algorithm. To reduce the ringing, process the image with the edgetaper function prior to calling the deconvwnr function. For example, I = edgetaper(I,PSF)Class SupportI can be of class uint8, uint16, int16, single, or double. Other inputs have to be of class double. J has the same class as I.ExamplesI = checkerboard(8);noise = 0.1*randn(size(I));PSF = fspecial('motion',21,11);Blurred = imfilter(I,PSF,'circular');BlurredNoisy = im2uint8(Blurred + noise);% noise-to-power ratioNSR = sum(noise(:).^2)/sum(I(:).^2);% noise powerNP = abs(fftn(noise)).^2; NPOW = sum(NP(:))/prod(size(noise));% noise autocorrelation function, centeredNCORR = fftshift(real(ifftn(NP))); % original image powerIP = abs(fftn(I)).^2;IPOW = sum(IP(:))/prod(size(I));% image autocorrelation function, centeredICORR = fftshift(real(ifftn(IP)));ICORR1 = ICORR(:,ceil(size(I,1)/2));% noise to power ratioNSR = NPOW/IPOW;subplot(221);imshow(BlurredNoisy,[]);title('A = Blurred and Noisy');subplot(222);imshow(deconvwnr(BlurredNoisy,PSF,NSR),[]);title('deconvwnr(A,PSF,NSR)');subplot(223);imshow(deconvwnr(BlurredNoisy,PSF,NCORR,ICORR),[]);title('deconvwnr(A,PSF,NCORR,ICORR)');subplot(224);imshow(deconvwnr(BlurredNoisy,PSF,NPOW,ICORR1),[]);title('deconvwnr(A,PSF,NPOW,ICORR_1_D)');
本回答被网友采纳
图像的维纳滤波复原
帮我做一下你会的图像复原。可以吗?
其他1条回答
为您推荐:
其他类似问题
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; %模板尺寸为3K2=filter2(fspecial('average',5),J)/255;% 模板尺寸为5K3=filter2(fspecial('average',7),J)/255; %模板尺寸为7K4= filter2(fspecial('average',9),J)/255; %模板尺寸为9subplot(2,3,3);imshow(K1);title('改进后的图像1');subplot(2,3,4); imshow(K2);title('改进后的图像2');subplot(2,3,5);imshow(K3);title('改进后的图像3');subplot(2,3,6);imshow(K4);title('改进后的图像4');
PS:filter2用法
fspecial函数用于创建预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,parameters)参数type制定算子类型,parameters指定相应的参数,具体格式为:type='average',为均值滤波,参数为n,代表模版尺寸,用向量表示,默认值为[3,3]。type= 'gaussian',为高斯低通滤波器,参数有两个,n表示模版尺寸,默认值为[3,3],sigma表示滤波器的标准差,单位为像素,默认值为
0.5。type= 'laplacian',为拉普拉斯算子,参数为alpha,用于控制拉普拉斯算子的形状,取值范围为[0,1],默认值为0.2。type= 'log',为拉普拉斯高斯算子,参数有两个,n表示模版尺寸,默认值为[3,3],sigma为滤波器的标准差,单位为像素,默认值为0.5type= 'prewitt',为prewitt算子,用于边缘增强,无参数。type= 'sobel',为著名的sobel算子,用于边缘提取,无参数。type= 'unsharp',为对比度增强滤波器,参数alpha用于控制滤波器的形状,范围为[0,1],默认值为0.2。
运行效果见图1:
据我目测,使用均值滤波去噪(高斯噪声)效果选用的邻域半径越大效果越好,当然其代价也会更大,另外确切的去噪效果的好坏还需要用SNR等数据来度量。
实验二:二维自适应维纳滤波对高斯噪声的滤除效果
I=imread('C:\Documents and Settings\Administrator\桌面\1.gif'); %读取图像J=imnoise(I,'gaussian',0,0.005); %加入均值为0,方差为0.005的高斯噪声K2=wiener2(J,[3 3]); %对加噪图像进行二维自适应维纳滤波K2=wiener2(J,[5 5]); %对加噪图像进行二维自适应维纳滤波K2=wiener2(J,[7 7]); %对加噪图像进行二维自适应维纳滤波K2=wiener2(J,[9 9]); %对加噪图像进行二维自适应维纳滤波subplot(2,3,1);imshow(I);title('原始图像');subplot(2,3,2);imshow(J);title('加噪图像');subplot(2,3,3);imshow(K1);title('恢复图像1');subplot(2,3,4);imshow(K2);title('恢复图像2');subplot(2,3,5);imshow(K3);title('恢复图像3');subplot(2,3,6);imshow(K4);title('恢复图像3');
PS:维纳滤波的两个函数wiener2与deconvwnr都能够完成维纳滤波的功能, deconvwnr强调图象复原方面,wiener2强调图象空间域锐化的作用,其中J=wiener2(I,[m,n])返回有噪声图像I经过wierner(维纳)滤波后的图像,[m,n]指定滤波器窗口大小为m*n,默认值为3*3,J=wiener2(I,[m,n],noise)指定噪声的功率,[J,noise]=wiener2(I,[m,n])在图像滤波的同时,返回噪声功率的估计值noise。
imnoise的语法格式为J = imnoise(I,type)J = imnoise(I,type,parameters)其中J = imnoise(I,type)返回对原始图像I添加典型噪声的有噪图像J。参数type和parameters用于确定噪声的类型和相应的参数。下面的命令是对图像1.gif分别加入高斯噪声、椒盐噪声和乘性噪声,其结果如图所示:
实验三:对加入椒盐噪声的图像分别作均值、中值和维纳滤波
I=imread(1.gif');J1=imnoise(I,'gaussian',0,0.02);J2=imnoise(I,'salt & pepper',0.02);J3=imnoise(I,'speckle',0.02);运行效果见图2I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');J=imnoise(I,'salt & pepper',0.02);%h=ones(3,3)/9;%产生3*3的全1数组%B=conv2(J,h);%卷积运算K2=filter2(fspecial('average',3),J)/255; %均值滤波模板尺寸为3K= medfilt2(J);%采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波K1=wiener2(J,[3 3]); %对加噪图像进行二维自适应维纳滤波
subplot(2,3,1);imshow(I);title('原始图像');subplot(2,3,2);imshow(J);title('加噪图像');subplot(2,3,3);imshow(K2);title('均值滤波后的图像');subplot(2,3,4);imshow(K);title('中值滤波后的图像');subplot(2,3,5);imshow(K1);title('维纳滤波后的图像');
PS:MATLAB中提供了卷积运算的函数命令conv2,其语法格式为:  C = conv2(A,B)C = conv2(A,B)返回矩阵A和B的二维卷积C。若A为ma&na的矩阵,B为mb&nb的矩阵,则C的大小为(ma+mb+1)&(na+nb+1)。
MATLAB图像处理工具箱提供了基于卷积的图象滤波函数filter2,filter2的语法格式为:Y = filter2(h,X)其中Y = filter2(h,X)返回图像X经算子h滤波后的结果,默认返回图像Y与输入图像X大小相同。例如:其实filter2和conv2是等价的。MATLAB在计算filter2时先将卷积核旋转180度,再调用conv2函数进行计算。Fspecial函数用于创建预定义的滤波算子,其语法格式为:h = fspecial(type)h = fspecial(type,parameters)参数type制定算子类型,parameters指定相应的参数,具体格式为前文已有叙述。
ones产生全1数组,zeros产生全零数组。ones(a,b)产生a行b列全1数组ones(a)产生a行a列全1叔祖
运行效果见图3:
通过图3我们也可得出结论,即中值滤波对于去除椒盐噪声效果最好,而维纳滤波去除效果则较差。中值滤波对于去除椒盐噪声效果明显,是因为椒盐噪声只在画面上的部分点随机出现,而中值滤波根据数据排序,将未被污染的点代替噪声点的值的概率较大,所以抑制效果好。对点、线和尖顶较多的图像不宜采用中值滤波,因为一些细节点可能被当成噪声点。
实验四: 分别使用二维统计滤波对椒盐噪声和高斯噪声进行滤波
I=imread('C:\Documents and Settings\Administrator\桌面\1.gif');J1=imnoise(I,'salt & pepper',0.004);subplot(2,3,1);imshow(I);title('原始图像');subplot(2,3,2);imshow(J1);title('加椒盐噪声后的图像');J= ordfilt2(J1,5,ones(3,4));% 进行二维统计顺序过滤subplot(2,3,3);imshow(J);title('椒盐噪声滤波后的图像');J2=imnoise(I,'gaussian',0,0.004);subplot(2,3,4);imshow(J2);title('加高斯噪声后的图像');J3= ordfilt2(J2,5,ones(3,4));subplot(2,3,5);imshow(J3);title('高斯噪声滤波后的图像');
效果见图4:
PS:MATLAB小波分析工具箱提供的用于图像去噪的函数有wrcoef2和wpdencmp,其语法格式分别为:
X=wrcoef2(&type&,C,S,&wname&)
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,&wname&,crit,par,keepapp)
其中,X=wrcoef2(&type&,C,S,&wname&)返回基于小波分解结构[C,S]的小波重构图像X。参数&type&等于a表示重构近似系数;等于h表示重构水平细节系数;等于v表示重构垂直细节系数,等于d表示重构对角细节系数。
[xd,treed,datad,perf0,perfl2]=wpdencmp(x,sorh,N,&wname&,crit,par,keepapp)是通过小波包定限(阈值化),返回输入信号或图像X的除噪结果xd。输入参数中,[treed,datad]为xd的最佳小波包分解结构;perfl2和perf0表示L^2复原和压缩百分数;perf12=100*(xd的小波包系数向量范数/X的小波包系数向量范数)&^2。Keepapp=1表示近似系数不能阈值化,否则可以阈值化;sorh=&s&为软阈值化,h为硬阈值化。
阅读(...) 评论()MATLAB 运动模糊图像恢复,维纳滤波的程序怎么改_百度知道
MATLAB 运动模糊图像恢复,维纳滤波的程序怎么改
I=imread('fly1.jpg');
figure(1);imshow(I,[]);
title('原图像');
PSF=fspecial('motion',40,75);
MF=imfilter(I,PSF,'circular');
noise=imnoise(zeros(size(I)),'gaussian',0,0.001);
MFN=imadd(MF,im2uint8(noise));
figure(2);imshow(MFN,[]);
imshow(deconvwnr(MFN,PSF,NSR),[]);title('维纳滤波复原');这段程序怎么改才能爱城维纳滤波?
我有更好的答案
已经是维纳滤波了
你找到了解决方案吗?
1条折叠回答
为您推荐:
其他类似问题
维纳滤波的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
matlab在信号和图像处理中应用第12章.doc 25页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
你可能关注的文档:
··········
··········
第12章 图像复原
在图像的获取、传输以及记录保存过程中,由于各种因素,如成像设备与目标物体的相对运动,大气的湍流效应,光学系统的相差,成像系统的非线性畸变,环境的随机噪声等原因都会使图像产生一定程度的退化,图像退化的典型表现是图像出现模糊、失真,出现附加噪声等。由于图像的退化,使得最终获取的图像不再是原始图像,图像效果明显变差。为此,要较好地显示原始图像,必须对退化后的图像进行处理,恢复出真实的原始图像,这一过程就称为图像复原。
图像复原技术是图像处理领域一类非常重要的处理技术,主要目的就是消除或减轻在图像获取及传输过程中造成的图像质量下降即退化现象,恢复图像的本来面目。
图像复原的过程是首先利用退化现象的某种先验知识,建立退化现象的数学模型,然后再根据退化模型进行反向的推演运算,以恢复原来的景物图像。本章只对一些常用的图像复原方法及其Matlab实现进行介绍。
了解连续退化模型和离散退化模型
了解非约束复原和约束复原、逆滤波复原和维纳滤波复原
掌握维纳滤波复原、约束最小二乘滤波复原、Lucy-Richardson复原和盲解卷积复原方法的Matlab实现
维纳滤波复原
约束最小二乘滤波复原
Lucy-Richardson复原
盲解卷积复原方法
12.1 图像退化模型
图像复原处理的关键问题就是在于建立退化模型。在用数学方法描述图像时,最普通的数学表达式为。这样一个表达式可以代表一幅活动的、彩色的立体图像。当研究的是静止的、单色的、平面的图像时,则其数学表达式就简化为,基于这样的数学表达式,可建立退化模型如图12-1所示,由模型可见,原图像由于通过了一个系统及受外来噪声影响而使其退化为图像。
图像退化模型
图像复原可以看成是—个估计过程,如果已经给出了退化图像,并估计出系统参数,且假设已知的统计特性,则可近似地恢复真实图像。
12.1.1 系统
由图像的退化模型及复原的基本过程可见,复原处理的关键在于系统的性质。一般来说,系统是某些元件或部件以某种方式构造而成的整体,系统本身所具有的某些特性就构成了通过系统的输入信号与输出信号的某种关系。
系统的分类方法很多,例如,系统可分为时变系统和非时变系统,连续系统和离散系统,线性系统和非线性系统,集中参数系统和分布参数系统等。
假设系统为线性系统,对于图12-l所示的系统来说,可表示为
如果先暂不考虑加性噪声的影响,即令=0,则。此时,如果输入信号为,,对应的输出信号为和,则通过线性系统的叠加性可以得到
式中,和都是常数。
如果一个系统的参数不随时间变化,即称该系统为时不变系统;否则,就称其为时变系统。与此概念相对应,对于二维函数来说,如果
则是空间不变系统,式中的,分别是空间位置的位移量。这说明了图像中的任一点通过该系统的响应只取决于在该点的输入值,而与该点的位置无关。由此可见,如果系统是线性系统,同时满足式(12-3)的关系,那么系统就是线性和空间位置不变系统。在图像的恢复处理中,尽管非线性和空间变化系统模型更具普遍性和准确性。但是,它却给处理工作带来极大的不便,它常常没有解或者很难用计算机来处理。因此在实际的图像复原处理中,往往用线性和空间不变性系统模型来加以近似。这种近似的优点是使线性系统理论中的许多理论可直接用于解决图像复原问题,所以数字图像复原处理主要采用线性时不变(空间不变)的复原技术。
12.1.2 连续退化模型
在线性系统理论中有
式中,是单位冲激函数,将公式推广到二维空间,则
其中,可以看作是由一系列点组成的—幅连续图像;是有延迟的单位冲激函数。
在不考虑噪声的一般情况下,连续图像经过退化系统后的输出为
因为这里是线性算子,令,则有
式中,就是系统的冲激响应函数,称为点扩散函数(Point-Spread Function,PSF)。
当空间位置不变时,有
因此,对于线性空间不变系统,式(12-7)变为
这表明了退化系统的响应输出就是系统输入信号与冲激响应函数的卷积。只要已知系统的冲激响应函数,那么就
正在加载中,请稍后...急急急!图像逆滤波与维纳滤波的程序代码(matlab)_百度知道
急急急!图像逆滤波与维纳滤波的程序代码(matlab)
一部分也可以,希望大家帮帮我!要是满意可以再加分感谢!
我有更好的答案
%读原始图像% format long Blurred=imread('fig525(b).bmp'); subplot(1,2,1);imshow( Blurred);title('原图像');
%自编函数进行维纳滤波% k=0.0025; [m,n]=size(Blurred); spectrum=zeros(m,n); H=zeros(m,n); for u=1:m
H(u,v)=exp(-k*((u-m/2)^2+(v-n/2)^2)^(5/6));
spectrum(u,v)=H(u,v)^2;
f=double(Blurred);
F1=fftshift(fft2(f));
HW=H./(spectrum+0.001);
restore1=HW.*F1;
restored=real(ifft2(ifftshift(restore1)));
subplot(1,2,2);imshow(restored,[]);title('自编函数进行维纳滤波');
%调用matlab提供的维纳滤波函数% hw1=real(ifft2(ifftshift(H)));%转化到空域上来 result1=deconvwnr(Blurred,hw1,0.001); result2=ifftshift(result1);%再去图像进行1,3象限对调,2与4象限对调 subplot(1,2,1);imshow(result2,[]);title('调用维纳滤波函数');
matlab内部有fft2、ifft2流程可以用于频域滤波, Wiener 滤波函数
1条折叠回答
为您推荐:
其他类似问题
维纳滤波的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 维纳滤波器 matlab 的文章

 

随机推荐