资源描述
《Matlab课程设计》
——图像与动画
班级:
姓名:
学号:
时间:
地点:
指引教师:
自 动 化 教 研 室
目 录
一. 课程设计目与规定
二. 课程设计课题分析
三. 课程设计内容与安排
四. 课程设计环节
五. 课程设计成果
六. 参照文献
七. 附录
一. 课程设计目与规定
1. 课程设计目:
(1)进一步理解和消化课本知识,运用所学知识和技能进行简朴设计
(2)通过课程设计提高应用能力,为专业课学习打下基本
(3)培养查阅资料习惯,训练和提高独立思考和解决问题能力
(4)通过命令显示图像,完毕简朴动画制作,结合程序设计培养知识综合运用能力和技巧。
2. 课程设计规定
从课程设计目出发,通过设计工作各个环节,达到如下规定:
(1) 可以对的理解课设题目和意义,全面思考问题
(2) 运用科学合理办法,认真准时完毕
二. 课程设计课题分析
1.图像:
通过imread.imadd.imshow.imnoise.imrotate…等函数调用实现对图像属性变化。
2.动画
对于动画设计我有几种思路。(1)建立一种矩阵,把图片读出来放到矩阵中,再通过moviein函数播放,但是实验了几次也没有成功。(2)画一种三维图,通过变化属性实现三维图转动来达到动画效果。
(3)先装入一张背景图,再通过编程使图片产生动画效果。
通过尝试我选了第三种办法。
三.课设内容与安排
内容:
1.运用matlab调用磁盘目录下图片文献;
2.制作实时动画;
3.制作演示系统,通过点击不同按键显示不同图形。
时间安排参照如下教学时间安排
教学安排;
周一 布置任务,查阅资料
周二 设计
周三 设计
周四 仿真、调试
周五 验收、总结报告
四.课程设计环节
1.图像
采用imread函数
g0=imread('C:\Users\toshiba\Desktop\matlab\q.jpg');%读取文献名为q图像。
Imadd:增长亮度,
imnoise:添加噪声,
imrotate:旋转
grayslice:索引色
在一种figure框显示多幅效果图用subplot函数
源程序见附录1。
2.动画制作
动画源程序:
A=imread('C:\Users\toshiba\Desktop\matlab\69.jpg');%背景图像
h=figure;
imshow(A); %显示
hPush = findall(0,'Type','uiPushTool');
hToggle = findall(0,'Type','uiToggleTool');
htogglesplit= findall(0,'Type','uitogglesplittool');
set([hPush;hToggle;htogglesplit],'Visible','off');%隐藏工具栏
axes
axis([0 1 0 1]); %设立坐标范畴
axis off;
set(gcf,'color','k');%设立背景颜色为黑色
N=20;
handles=zeros(1,N);
x=rand(2,N);
fontsize=floor(rand(1,N)*17+32);%设立字号
new_handles_N=0;
for i=1:N
handles(i)=text(x(1,i),x(2,i),'*','fontsize',fontsize(i),'color','w'); %handles ´存储每一种雪花句柄
end
while 1
if ~ishandle(h)
return
end
for i=1:N
temp=get(handles(i),'position');
step=get(handles(i),'fontsize')/48*0.05; % ²不同雪花速度不同
if temp(2)<0 判断与否溢出
new_handles_N=new_handles_N+1;
new_handles(new_handles_N)= copyobj(handles(i),gca);
if new_handles_N==500
delete(new_handles);
new_handles_N=0;
end
temp(1)=rand(1);
temp(2)=1;
else
temp(1)=temp(1)+rand(1)*0.1-0.05;
temp(2)=temp(2)-step;%速度
end
set(handles(i),'position',temp,'rotation',get(handles(i),'rotation')+5);
end
pause(.2)
end
3.GUI设计
(1)新建一种gui,添加push button组件,添加axes组件。
(2)点击运营,在弹出editor窗口编程
五. 课设成果
1.图像
二.动画
圣诞
跳动心
六.课设心得体会
为期一周课程设计就要结束了;通过这些天学习,我深深地懂得了学任何知识都要虚心,都要夯实学,在这一种星期了,我学到了诸多课本上没有学到东西,例如对图像各种分析解决;对动画初步制作,虽然有程序是参照别人弄好,可通过读程序,改程序,最后做出了自己心满意足效果,我觉得我还是赚到了。
在课设开始,做图片时候,由于书上有好多实例,感觉很简朴,便觉得这课设没什么压力啊。可是再开始做动画后,我眉头皱起来了。我初期构想是通过读图来实现动画,可是试了N多程序还是不行,苦恼了一天多,查了好多资料,还是不行,真觉得自己太笨了。没办法,必要得变化思路了,否则就无法再规定期间内完毕课设了。
在matlab论坛上看了诸多人技术帖,视野开拓了许多,最后也如愿完毕了课设。
七.参照文献
[1] 崔新忠.MATLAB与仿真系统课程设计指引书.自编教材,
[2] 作者:赖志国.Matlab图像解决与应用 .
[3]刘卫国.MATLAB程序设计与应用(第二版).北京:高等教诲出版社,
[4] 张强,王正林. 精通MATLAB图像解决.
附录1
图像解决源程序:
clear all
figure('menubar','none');
g0=imread('C:\Users\toshiba\Desktop\matlab\241500.jpg');
subplot(331);imshow(g0) ;title('原图');
g2=imadd(g0,100);
subplot(332);imshow(g2);title('亮度增长100') ;
g1=imnoise(g0,'salt & pepper',0.2);
g1=im2double(g1);
subplot(333);imshow(g1);title('加入椒盐噪声');
g4=imrotate(g0,45,'bilinear');
subplot(334);imshow(g4);title('左旋45') ;
g5=grayslice(g0,64) ;
subplot(335);imshow(g5,hot(64)) ;title('索引色');
g0 = g0(:,:,2);
subplot(336);imshow(g0,[50,150]);title('灰度级[50,150]') ;
g1=imnoise(g0,'salt & pepper',0.2);
g1=im2double(g1);
h6=fspecial('average');
g7=filter2(h6,g1,'same');
subplot(337);imshow(g7);title('进行均值滤波');
subplot(338);imhist(g0);title('图像直方图');
g6=im2bw(g0) ;subplot(339);imshow(g6);title('二值')
附录2:
跳动心源程序:
close all
figure('menubar','none');
x = linspace(-2,2,100);
[X,Y,Z] = meshgrid(x,x,x);
I1 = (X.^2+9/4*Y.^2+Z.^2-1).^3-X.^2.*Z.^3-9/80*Y.^2.*Z.^3;
p = patch(isosurface(X,Y,Z,I1,0));
set(p,'FaceColor','red','EdgeColor','r');
set(gcf,'color','y');
view(3);
axis equal ;
axis off;
light('Posi',[0 -2 3]);
% 在(0,-2,3)点建立一种光源´
lighting phong
set(gca,'nextplot','replacechildren');
%记录
XX = get(p,'XData');
YY = get(p,'YData');
ZZ = get(p,'ZData');
for j = 1:20
bili = sin(pi*j/20);
set(p,'XData',bili*XX,'YData',bili*YY,'ZData',bili*ZZ)
F(j) = getframe;
end
movie(F,10)
展开阅读全文