MATLAB课程设计.docx
- 文档编号:30757216
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:8
- 大小:176.90KB
MATLAB课程设计.docx
《MATLAB课程设计.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计.docx(8页珍藏版)》请在冰豆网上搜索。
MATLAB课程设计
MATLAB课程设计
Matlab用于图像处理
学院:
信息工程学院
班级:
姓名:
同组人:
一、实验目的
通过该设计,要求对图像的采集、显示、处理和存储等有一个系统的掌握和理解,并且掌握对二维数据进行处理的方法。
二、设计内容及主要MATLAB函数
1.图像的采集与显示
采集一张格式为*.jpg*.cur*.tif*.hdf*.ico*.pcx*.xwd的任一幅图像,用MATLAB的imread函数读入图像文件,并用image函数显示图像。
MATLAB函数:
imread功能是读入图像
image显示图像文件
要求采集一幅图像,把该图像读入在MATLAB中,并且显示出来。
2.图像的插值
1)最近邻插值
最近邻插值是最简单的插值,在这种算法中,每一个插值输出像素的值就是在输入图像中与其最临近的采样的值。
2)双线性插值
双线性插值法的输出像素值是它在输入图像中2*2领域采样点的平均值,它根据某像素周围4个像素的灰度值在水平和垂直两个方向上对其插值。
3)双三次插值
双三次插值的插值核为三次函数,其插值领域的大小为4*4,它的插值效果比较好,但相应的计算量较大。
MATLAB函数:
imresize
使用格式:
b=imresize(a,m,method),返回图像的m倍放大图像(小于1时返回缩小的图像返回缩小图像);
b=imresize(,[m,n],method),返回一个m行n列的图像
b=imresize(a,m,method,h),使用用户设计的插值核进行插值,h可以看作是一个二维的FIR滤波器。
三、总体方案
1)采集图像,对采集的图像使用imresise函数,分别对其进行最近邻插值、双线性插值和双三性插值,返回二倍放大图像,并且分别显示出来与原图像进行对比。
2)试编写一个M文件,对采集的图像进行最近邻插值,并且显示出来与原图像进行对比。
四、主要参数
五、源程序
1)使用最近邻插值对图像进行放大
>>a=imread('C:
\DocumentsandSettings\cfe001\桌面\a.jpg');
%读入位于桌面名为a.jpg的图片,并赋值给变量a
>>b=imresize(a,2,'nearest')%用最近邻插值的方法对图像a放大2倍
>>subplot(1,2,1),imshow(a),subplot(1,2,2),imshow(b),axison;
%显示原图以及放大后的图片,进行对比
2)使用双线性插值对图像进行放大
>>a=imread('C:
\DocumentsandSettings\cfe001\桌面\a.jpg');
%读入位于桌面名为a.jpg的图片,并赋值给变量a
>>b=imresize(a,2,'bilinear')%用双线性的方法对图像a放大2倍
>>subplot(1,2,1),imshow(a),subplot(1,2,2),imshow(b),axison;
%显示原图以及放大后的图片,进行对比
3)使用双三次插值对图像进行放大
>>a=imread('C:
\DocumentsandSettings\cfe001\桌面\a.jpg');
%读入位于桌面名为a.jpg的图片,并赋值给变量a
>>b=imresize(a,2,'bicubic')%用双三次的方法对图像a放大2倍
>>subplot(1,2,1),imshow(a),subplot(1,2,2),imshow(b),axison;
%显示原图以及放大后的图片,进行对比
4)编写M文件,对采集的图像进行最近邻插值
function[b]=nearest(a)
%用最近邻插值对图片进行放大
[m,n]=size(a)u
fori=1:
m
forj=1:
n
b(i,2*j)=a(i,j);
b(i,2*j-1)=a(i,j);
end
end
c=b;
forj=1:
2*n
fori=1:
m
b(2*i,j)=c(i,j);
b(2*i-1,j)=c(i,j);
end
end
六、仿真结果
1)将下载的三维图片a(120*120*3)转换为二维图片
>>a=imread('C:
\DocumentsandSettings\cfe001\桌面\a.jpg');
>>subplot(1,2,1),imshow(a),title('原图'),axison
>>a(:
:
3)=[];
>>a(:
:
2)=[];
>>subplot(1,2,2),imshow(a),title('二维图'),axison
2)使用最近邻插值对图像进行放大
>>a=imread('C:
\Users\sjw\Desktop\a.jpg');
>>subplot(1,2,1),imshow(a),title('原图'),axison
>>b=imresize(a,2,'nearest');
>>subplot(1,2,2),imshow(b),title('最近邻'),axison
3)使用双线性插值对图像进行放大
>>a=imread('C:
\Users\sjw\Desktop\a.jpg');
>>subplot(1,2,1),imshow(a),title('原图'),axison
>>b=imresize(a,2,'bilinear');
>>subplot(1,2,2),imshow(b),title('双线性'),axison
4)使用双三次插值对图像进行放大
>>a=imread('C:
\Users\sjw\Desktop\a.jpg');
>>subplot(1,2,1),imshow(a),title('原图'),axison
>>b=imresize(a,2,'bicubic');
>>subplot(1,2,2),imshow(b),title('双三次'),axison
5)编写M程序,对采集的图像进行最近邻插值
function[b]=nearest(a)
%用最近邻插值对图片进行放大
[m,n]=size(a)u
fori=1:
m
forj=1:
n
b(i,2*j)=a(i,j);
b(i,2*j-1)=a(i,j);
end
end
c=b;
forj=1:
2*n
fori=1:
m
b(2*i,j)=c(i,j);
b(2*i-1,j)=c(i,j);
end
end
>>a(:
:
3)=[];
>>a(:
:
2)=[];
>>subplot(1,2,1),imshow(a),title('原图'),axison
>>p=nearest(a);
输出结果:
m=
120
n=
120
>>subplot(1,2,2),imshow(p),title('最近邻'),axison
七、设计总结
此次课程设计,让我进一步认识到了MATLAB这款软件功能之强大。
通过课程学习,翻阅资料,以及与同学之间的相互探讨,我不仅掌握了其基本的功能及用法,也懂得了其在图像处理、信号与系统等各方面的广泛用途。
在设计刚开始,感到非常困难。
但是通过反复研究、实践,最终攻克难关,完成了课程设计。
在此过程中,不仅巩固了以前学过的知识,同时了解了imread、imshow、subplot等语句的用法,了解了通过“最近邻插值”、“双线性插值”以及“双三次插值”三种方法对图像进行放大,学会了自己编写M文件,对采集的图像进行最近邻插值。
在这过程中,锻炼了我们做事情的毅力,也品尝到了通过自己努力最终完成目标的那份喜悦。
MATLAB这款软件语言简洁,可读性强,工具箱涉及的专业领域广泛且功能强大。
所以,以后我们会慢慢地认识到这款软件的重要作用,掌握MATLAB,对我们以后的学习以及工作,受益无穷。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 课程设计