当前位置:文档之家› 北京化工大学 数字图像处理实验 matlab编码

北京化工大学 数字图像处理实验 matlab编码

% image(a);
%先将原始图像放到a里
%实验二

[line,row,dim]=size(a);
N=line*row;
b=rgb2gray(a);%若为彩色图像先转化为灰度图

%直方图均衡化
c=histeq(b);%直方图均衡化
figure(1)
imshow(b);
title('原始图像')
figure(2)
imshow(c);
title('均衡化后的图像')
figure(3)
subplot(212)
imhist(c)
title('均衡化后直方图')
subplot(211)
imhist(b)
title('原图直方图')


%采样和量化
k1=0.5; %在行上缩小的倍数
k2=0.5;%列上缩小的倍数
m=round(line*k1);
n=round(row*k2); % (m,n)表示缩小后的图片的大小
G=zeros(m,n); % 初始化缩小后图像矩阵
l_G=zeros(m);
r_G=zeros(n);
for i=1:1:m
l_G(i)=round(i./k1);
if l_G(i)>line
l_G(i)=line;

end
if l_G(i)<1
l_G(i)=1;
end
end
for j=1:1:n
r_G(j)=round(j./k2);
if r_G(j)>row
r_G(j)=row;
end
if r_G(j)<1
r_G(j)=1;
end
end
for i=1:1:m
for j=1:1:n
G(i,j)=b(l_G(i),r_G(j));
end
end
figure(5)
imshow(uint8(G));
title('缩小图像')

% %幅度分辨率改变,即量化
H=zeros(line,row);
h=64;%幅度分辨率
H=round(b./256*h);
figure(6)
imshow(uint8(H));
title('量化后图像,分辨率64')


%%均值滤波和中值滤波
M=b;
P2=imnoise(M,'salt & pepper',0.02); %加入椒盐躁声
figure(8)
imshow(P2); %%加入椒盐躁声后显示图像
title('加入椒盐噪声');
h=medfilt2(P2); %对椒盐躁声中值滤波
figure(10)
imshow(h);
title('中值滤波')
l=ones(5,5);
l=l/9; %对椒盐躁声算术均值滤波
d=conv2(P2,l);
figure(12)
imshow(d,[]);%imshow(uint8(d));
title('均值滤波')


%例题
I=b;
[m,n]=size(I);
F=fftshift(fft2(I));

%模糊图像
k=0.0025;
H=[];
for u=1:m
for v=1:n
q=((u-m/2)^2+(v-n/2)^2)^(5/6);
H(u,v)=exp((-k)*q);
%q=(sqrt(u*u+v*v))/4000;
%H(u,v)=exp(q);
end
end
G=F.*H;
I0=abs(ifft2(fftshift(G)));
figure(13)
imshow(uint8(I0));
title('模糊后图像');


I1=imnoise(uint8(I0),'gaussian',0,0.001);
figure(14)
imshow(uint8(I1));
title('模糊并添加高斯噪声的图像');

%逆滤波
F0=fftshift(fft2(I1));
F1=F0./H;
I2=ifft2(fftshift(F1));
figure(16)
imshow(uint8(I2))
title('逆滤波后图像')


% % F0=fftshift(fft2(I1));
% % F1=F0./H;
% % I2=ifft2(fftshift(F1));
% % figure
% % imshow(uint8(I2));
% % title('全逆滤波复原图');


%维纳滤波
K=0.1;
H=[];
H0=[];
H1=[];
for u=1:m
for v=1:n
q=((u-m/2)^2+(v-n/2)^2)^(5/6);
H(u,v)=exp((-k)*q);
H0(u,v)=(abs(H(u,v)))^2;
H1(u,v)=H0(u,v)/(H(u,v)*(H0(u,v)+K));
end
end
F2=H1.*F0;
I3=ifft2(fftshift(F2));

figure(15)
imshow(uint8(abs(I3)));
title('维纳滤波复原图');




% k=0.0025;
% spectru

m=zeros(line,row);
% H=zeros(line,row);
% for u=1:line
% for v=1:row
% H(u,v)=exp(-k*((u-line/2)^2+(v-row/2)^2)^(5/6));
% spectrum(u,v)=H(u,v)^2;
% end
% end
% f=double(b);
% F1=fftshift(fft2(f));
% HW=H./(spectrum+0.001);
% restore1=HW.*F1;
% restored=real(ifft2(ifftshift(restore1)));
% figure(15)
% subplot(1,2,2);
% imshow(uint8(restored));
% title('维纳滤波')
% hw1=real(ifft2(ifftshift(H)));
% result1=deconvwnr(b,hw1,0.001);
% result2=ifftshift(result1);
% subplot(1,2,1);
% imshow(result2,[]);
% title('调用维纳滤波')










相关主题
文本预览
相关文档 最新文档