数字图像处理处理 大作业实验报告.docx

上传人:b****4 文档编号:3031514 上传时间:2022-11-17 格式:DOCX 页数:10 大小:1.55MB
下载 相关 举报
数字图像处理处理 大作业实验报告.docx_第1页
第1页 / 共10页
数字图像处理处理 大作业实验报告.docx_第2页
第2页 / 共10页
数字图像处理处理 大作业实验报告.docx_第3页
第3页 / 共10页
数字图像处理处理 大作业实验报告.docx_第4页
第4页 / 共10页
数字图像处理处理 大作业实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

数字图像处理处理 大作业实验报告.docx

《数字图像处理处理 大作业实验报告.docx》由会员分享,可在线阅读,更多相关《数字图像处理处理 大作业实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

数字图像处理处理 大作业实验报告.docx

数字图像处理处理大作业实验报告

数字图像处理处理大作业实验报告

PB11210***上上签

MyZenith.N_3104_EVER

实验一题目:

线性插值改变图像大小

实验目的:

1、使用MATLAB编程实现对图片大小的改变操作,使所给图片达到所要求的效果。

2、通过对MATLAB的编程加强对图像处理的认识,初步学习MATLAB在图像处理中的基本应用

实验内容:

在这一项目中,同学们需要实现基于双线性插值的图像缩放算法。

作业中需实现如下功能:

(a)能够利用鼠标从实验图像中任意选取测试区域,并单独显示。

(b)使用双线性插值算法对测试区域进行缩放处理,输出如下结果,放大到原始分辨率的2倍,放大到原始分辨率的4倍,缩小到原始分辨率的1/2倍。

实验原理:

图像某点的值由最邻近的四个点联立方程决定。

实验代码:

1、在主函数中,使用switch函数分别调用子函数,并且之前选择需要放大或者缩小的倍数。

代码如下:

2、choice=('Yes');

3、while(minus(choice,('Yes'))==0)

4、clear;close;F=imread('monarch.bmp');

5、I=imcrop(F);

6、BR=I(:

:

1);BG=I(:

:

2);

7、BB=I(:

:

3);

8、[rows,cols]=size(BR);K=sqrt(str2double(inputdlg('ÇëÊäÈëËõ·Å±¶Êý','INPUTscalefactor',1,{'2'})));

9、width=K*rows;

10、height=K*cols;

11、

12、

13、

14、widthScale=rows/width;

15、heightScale=cols/height;

16、

17、forx=1:

width-2fory=1:

height-2

18、X=x*widthScale;Y=y*heightScale;

19、

20、if(X/double(uint16(X))==1.0)&&(Y/double(uint16(Y))==1.0)

21、dstBR(x,y)=BR(int16(X),int16(Y));dstBG(x,y)=BG(int16(X),int16(Y));

22、dstBB(x,y)=BB(int16(X),int16(Y));

23、else

24、a=double(uint16(X));

25、b=double(uint16(Y));

26、

27、BRx11=double(BR(a,b));

28、BRx12=double(BR(a,b+1));

29、BRx21=double(BR(a+1,b));

30、BRx22=double(BR(a+1,b+1));

31、

32、BGx11=double(BG(a,b));

33、BGx12=double(BG(a,b+1));

34、BGx21=double(BG(a+1,b));

35、BGx22=double(BG(a+1,b+1));

36、

37、BBx11=double(BB(a,b));

38、BBx12=double(BB(a,b+1));

39、BBx21=double(BB(a+1,b));

40、BBx22=double(BB(a+1,b+1));

41、

42、w1=(b+1-Y)*(a+1-X);

43、w2=(Y-b)*(a+1-X);w3=(b+1-Y)*(X-a);

44、w4=(Y-b)*(X-a);

45、dstBR(x,y)=uint8(BRx11*w1+BRx12*w2+BRx21*w3+BRx22*w4);

46、dstBG(x,y)=uint8(BGx11*w1+BGx12*w2+BGx21*w3+BGx22*w4);

47、dstBB(x,y)=uint8(BBx11*w1+BBx12*w2+BBx21*w3+BBx22*w4);

48、end

49、end

50、end

51、

52、OUT(:

:

1)=dstBR;

53、OUT(:

:

2)=dstBG;

54、OUT(:

:

3)=dstBB;

55、imshow(I);

56、figure;

57、imshow(OUT);

58、

59、options.Interpreter='tex';

60、options.Default='Cancel';

61、choice=questdlg('ÊÇ·ñ¼ÌÐø£¿','Ñ¡Ïî','Yes','No',options);

62、end

实验结果:

1、选择缩放倍数:

2、所选择的图像源文件如下:

 

3、用鼠标标定所需要进行缩放的区域:

4、程序正常运行后缩放效果:

4倍放大

5、程序正常运行后缩放效果:

2倍放大

6、程序正常运行后的缩放效果:

缩小一倍

 

实验二题目:

高斯滤波及中值滤波处理人为添加的椒盐噪声和高斯噪声

实验目的:

1、对所给定的图像使用MATLAB添加高斯噪声和椒盐噪声;

2、再用MATLAB程序实现中值滤波和高斯滤波;

3、计算所得到结果图像的PSNR,对它们进行分析与比较,从而理解各种滤波方法的优点与特性。

4、进一步熟悉MATLAB编程方式,使对MATLAB与数字图像处理有更加直观的理解与体验,加深感受MATLAB在数字图像处理中的重要作用。

实验代码:

一、读取源图像,同时标上”原始图像”

M=imread('lena.png');

subplot(2,3,1);

imshow(M);

title('ÔʼͼÏñ');

二、加上噪声,同时加上说明,算出PSNR

function[Im_noise]=noise(Im_org,noise)

switchnoise

case'gaussian'

Im_noise=gaunoise(Im_org);

case'salt&pepper'

Im_noise=spnoise(Im_org);

end

end

function[Im_noise]=gaunoise(Im_org)I_doubleim=double(Im_org);

Im_noise=uint8(I_doubleim+20*normrnd(0,1,size(I_doubleim)));end

function[Im_noise]=spnoise(Im_org)Im_noise=Im_org;

nois=rand(size(Im_org));

Im_noise(nois<0.05)=0;Im_noise(nois>0.95)=255;

end

三、高斯滤波处理图像的高斯噪声,计算PSNR

p=size(P1);x1=double(P1);

x2=x1;

fori=1:

p

(1)-3+1

forj=1:

p

(2)-3+1

c=x1(i:

i+(3-1),j:

j+(3-1));

e=c(1,:

);

foru=2:

3

e=[e,c(u,:

)];

end

mm=median(e);

x2(i+(3-1)/2,j+(3-1)/2)=mm;

end

end

J=uint8(x2);

subplot(2,3,5);

imshow(J);

k=8;

fmax=2.^k-1;

a=fmax.^2;

e=double(J)-double(M);

[m,n]=size(e);

b=sum(sum(e.^2));

PSNR=10*log10(m*n*a/b);

title(['PSNR:

',num2str(PSNR)]);

四、中值滤波处理图像的椒盐噪声,计算PSNR

function[Im_back]=spfilter(Im_noise)moban=[111;111;111];

m=size(Im_noise,1);

n=size(Im_noise,2);

Im_double=double(Im_noise);

Im_back=zeros(size(Im_noise));

fori=2:

m-1

forj=2:

n-1

x1=Im_double(i-1:

i+1,j-1:

j+1,1).*moban;

x2=Im_double(i-1:

i+1,j-1:

j+1,2).*moban;

x3=Im_double(i-1:

i+1,j-1:

j+1,3).*moban;

Im_back(i,j,1)=zhongzhi1(x1);

Im_back(i,j,2)=zhongzhi1(x2);

Im_back(i,j,3)=zhongzhi1(x3);

end

end

Im_back=uint8(Im_back);

end

function[mid]=zhongzhi1(m)mm=zeros(9);

fori=1:

3

forj=1:

3

mm((i-1)*3+j)=m(i,j);

end

end

fori=1:

5

forj=i+1:

9

ifmm(j)

temp=mm(j);

mm(j)=mm(i);

mm(i)=temp;

end

end

end

mid=mm(5);

end

 

实验处理结果:

将代码封装在一起,综合运行可知:

源文件如下:

综合运行可知:

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1