数字图像处理处理 大作业实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理处理大作业实验报告
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('ÇëÊäÈëËõ·Å±¶Êý', 'INPUT scale
factor', 1, {'2'})));
9、 width = K * rows;
10、 height = K * cols;
11、
12、
13、
14、 widthScale = rows/width;
15、 heightScale = cols/height;
16、
17、for x = 1:width-2
for y = 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、选择缩放倍数: