数字图像处理大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理大作业
学号:
姓名:
班级:
数字图像处理作业
用自己拍摄的图像,完成以下作业:
1,用Matlab语言完成如下实验:
1)打开一个BMP文件
2)将其局部区域的灰度值进行改变
3)另存为一个新的BMP文件
2,Matlab编程实现图像傅立叶高通、低通滤波,给出算法原理及实验结果。
3,找一幅曝光不足的灰度(或彩色)图像,用Matlab按照直方图均衡化的方法进行处理。
4,用Matlab打开一幅图像,添加椒盐、高斯噪声,然后使用邻域平均法、中值滤波法进行平滑。
5,用Matlab打开一幅图像,利用Roberts梯度法、Sobel算子和拉普拉斯算子进行锐化,并比较结果。
以上作业,严禁抄袭。
作业请注明学号,姓名,班级,电话号码。
将纸质版于2012-06-06晚7:00交至B529房间。
1,用Matlab语言完成如下实验:
1)打开一个BMP文件
2)将其局部区域的灰度值进行改变
3)另存为一个新的BMP文件%文件名为way01.bmp 源程序如下:
clear all;
f=imread('way.bmp');
f1=rgb2gray(f); %ת»»Îª»Ò¶Èͼ
figure(1);
imshow(f1);
imwrite(f1,'way01.bmp');
f1(100:150,100:120)=256; %¾Ö²¿¸Ä±ä»Ò¶ÈÖµ
figure(2);
imshow(f1);
运行结果为:
注:源文件名为way.jpg
2,Matlab编程实现图像傅立叶高通、低通滤波,给出算法原理及实验结果。
1)傅里叶高通滤波:
源程序为:
clear all;
I=imread('way01.bmp');
figure(1);
imshow(I);
I=double(I);
f=fft2(I);
g=fftshift(f);
[M,N]=size(g);
n1=floor(M/2);
n2=floor(N/2);
d0=5;
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
if d>=d0
h1=1;
else
h1=0;
end
g1(i,j)=(h1+0.5)*g(i,j);
end
end
g2=ifftshift(g1);
g3=uint8(real(ifft2(g2))); figure(2);imshow(g3);
title('¸ßͨÂ˲¨½á
运行结果为:
2)傅里叶低通滤波:
源程序为:
clear all;
I=imread('way01.bmp');
figure(1);
imshow(I);
I=double(I);
f=fft2(I); g=fftshift(f); [M,N]=size(g);
n1=floor(M/2);
n2=floor(N/2);
d0=30;
for i=1:M
for j=1:N
d=sqrt((i-n1)^2+(j-n2)^2);
if d<=d0
h1=1;
else
h1=0;
end
g1(i,j)=(h1+0)*g(i,j);
end
end
g2=ifftshift(g1);
g3=uint8(real(ifft2(g2))); figure(2);imshow(g3);
title('µÍͨÂ˲¨½á¹û')
运行结果为:
3,找一幅曝光不足的灰度(或彩色)图像,用Matlab按照直方图均衡化的方法进行处理。
源程序为:
clear all
close all
tuu=imread('way.bmp'); %¶ÁÈëͼƬ
tu=rgb2gray(tuu); %½«²ÊɫͼƬת»»Îª»Ò¶Èͼ
graydis=zeros(1,256); %ÉèÖþØÕó´óС
graydispro=zeros(1,256);
new_graydis=zeros(1,256);
new_graydispro=zeros(1,256);
[h w]=size(tu);
new_tu=zeros(h,w);
%¼ÆËãÔ-ʼֱ·½Í¼¸÷»Ò¶È¼¶ÏñËظöÊýgraydis
for x=1:h
for y=1:w
graydis(1,tu(x,y))=graydis(1,tu(x,y))+1;
end
end
%¼ÆËãÔ-ʼֱ·½Í¼graydispro
graydispro=graydis./sum(graydis);
subplot(1,2,1);
plot(graydispro);
title('»Ò¶ÈÖ±·½Í¼');
xlabel('»Ò¶ÈÖµ');ylabel('ÏñËصĸÅÂÊÃܶÈ');
%¼ÆËãÔ-ʼÀÛ¼ÆÖ±·½Í¼
for i=2:256
graydispro(1,i)=graydispro(1,i)+graydispro(1,i-1);
end
%¼ÆËãºÍÔ-ʼ»Ò¶È¶ÔÓ¦µÄеĻҶÈt[]£¬½¨Á¢Ó³Éä¹Øϵ
for i=1:256
t(1,i)=floor(254*graydispro(1,i)+0.5);
end
%ͳ¼ÆÐÂÖ±·½Í¼¸÷»Ò¶È¼¶ÏñËظöÊýnew_graydis
for i=1:256
new_graydis(1,t(1,i)+1)=new_graydis(1,t(1,i)+1)+graydis(1,i); end
%¼ÆËãеĻҶÈÖ±·½Í¼new_graydispro
new_graydispro=new_graydis./sum(new_graydis);
subplot(1,2,2);
plot(new_graydispro);
title('¾ùºâ»¯ºóµÄ»Ò¶ÈÖ±·½Í¼');
xlabel('»Ò¶ÈÖµ');ylabel('ÏñËصĸÅÂÊÃܶÈ');
%¼ÆËãÖ±·½Í¼¾ùºâºóµÄÐÂͼnew_tu
for x=1:h
for y=1:w
new_tu(x,y)=t(1,tu(x,y));
end
end
figure,imshow(tu,[]);
title('Ô-ͼ');
figure,imshow(new_tu,[]);
title('Ö±·½Í¼¾ùºâ»¯ºóµÄͼ');
运行结果为:
4,用Matlab打开一幅图像,添加椒盐、高斯噪声,然后使用邻域平均法、中值滤波法进行平滑。
源程序为:
clear all;
f=imread('way.bmp');
I=rgb2gray(f); %תΪ»Ò¶ÈͼÏñ
figure(1);
imshow(I);
title('Ô-ʼͼÏñ')
imwrite(I,'way01.bmp');
P2=imnoise(I,'salt & pepper',0.02) %¼ÓÈë½·ÑÎÔêÉù
figure(2);
imshow(P2);
title('¼ÓÈë½·ÑÎÔêÉù')
h1=medfilt2(P2) ; %¶Ô½·ÑÎÔêÉùÖÐÖµÂ˲¨
figure(3);
imshow(h1);
title('¶Ô½·ÑÎÔêÉùÖÐÖµÂ˲¨ºó')
%ÁÚÓòƽ¾ù·¨
w1=fspecial('average'); %²úÉúÒ»¸ö3x3´óСµÄ·½ÐÎƽ¾ùÂ˲¨Ä£°åw1
h2=imfilter(P2,w1,'replicate'); % g1Ϊ´¦ÀíºóµÄͼÏñ¡£'replicate'Ö¸¾í»ýÌî³ä±ßԵʱÓø´ÖƱ߽çµÄÖµÀ´À©Õ¹¡£
figure(4);
imshow(h2);
title('ÁÚÓòƽ¾ù·¨Æ½»¬')
运行结果为:
5,用Matlab打开一幅图像,利用Roberts梯度法、Sobel算子和拉普拉斯算子进行锐化,并比较结果。
源程序为:
clear all;
%RobertsÌݶȷ¨
[I,map]=imread('way01.bmp');
imshow(I,map);
title('Ô-ʼͼÏñ')
I=double(I);
[Gx,Gy]=gradient(I); % ¼ÆËãÌݶÈ
G=sqrt(Gx.*Gx+Gy.*Gy); % ×¢ÒâÊǾØÕóµã³Ë
J1=G;
figure(2),imshow(J1,map);
title('RobertsÌݶȷ¨½øÐÐÈñ»¯')
%À-ÆÕÀ-˹Ëã×Ó½øÐÐÈñ»¯
I=double(I);
h=[0 -1 0;-1 4 -1 ;0 -1 0];
J=conv2(I,h,'same');
K=J;
figure(3),imshow(K,[]);
title('À-ÆÕÀ-˹Ëã×Ó½øÐÐÈñ»¯')
%SobelËã×ÓÈñ»¯
I=double(I);
h1=[-1 0 1 ;-2 0 2;-1 0 1]; J1=conv2(I,h1,'same');
K1=J1;
figure(4),imshow(K1);
title('SobelËã×ÓÈñ»¯')
运行结果为:。