急求matlab程序注释和指导

来源:百度知道 编辑:UC知道 时间:2024/07/04 14:14:56
function PQ=paddedsize(AB,CD,PARAM)
if nargin==1
PQ=2*AB;
elseif nargin==2 &~ischar(CD) 若是字符串则为真
PQ=AB+CD-1;
PQ=2*ceil(PQ/2); 向正无穷取整
elseif nargin==2
m=max(AB);
P=2^nextpow2(2*m);
PQ=[P,P];
elseif nargin==3
m=max({AB CD});
P=2^nextpow2(2*m);
PQ=[P,P];
else
error('wrong number of inputs.')
end

f=imread('lena.gif'); %读取lena文件
g1=imnoise(f,'gaussian',0,0.01); %加入高斯噪声
g2=imnoise(g1,'salt & pepper',0.2); %加入椒盐噪声
figure,subplot(1,2,1);imshow(f,[]);%设置第一个图形,并显示
subplot(1,2,2);imshow(g2,[]);%设置第二个图形,并显示
%高斯低通滤波
PQ=paddedsize(size(g2));
[U,V]=dftuv(PQ(1),PQ(2));
D0=0.15*PQ(2);
F=fft2(g2,PQ(1),PQ(2));
H=exp(-(U.^2+V.^2)/(2*(D0^2)));
fg=dftfilt(g2,H);
%中值滤波
fm=medfilt2(g2,[7 7],'symmetric');
figure,subplot(121);imshow(fg,[]);
subplot(122);imshow(gm,[]);

看你的程序,总共应该只有三个图形窗口,每个窗口有两个图
先把function PQ=paddedsize(AB,CD,PARAM)
存成paddedsize.m文件
f=imread('lena.gif'); 以下是主函数
(重要)dftuv这个函数没有,它会出错,从程序的作用来看,它应该是一个拿paddedsize函数的输出值来计算高斯滤波器参数H的一个函数

整个这个程序说白了就是先给图像增加噪声,再比较几种滤波(去噪)方法的优劣,将处理后的图像显示出来