当前位置:文档之家› 图形与可视化实验报告

图形与可视化实验报告

图形与可视化实验报告
图形与可视化实验报告

《计算机图形学》课程实验教学大纲

编号:032004

课程总学时: 64 实验学时:24

课程总学分:3.5

适用专业:计算机科学与技术,网络工程,软件工程,物联网工程

一、本课程实验的主要目的与任务

《计算机图形学》是计算机科学与技术专业本科教学中的一门重要的专业课。通过本课程的教学,帮助学生掌握计算机图形学的基础知识,了解该学科的前沿科技,并能运用图形软件包OpenGL,进行简单的图像处理软件代码设计。

《计算机图形学》是一门理论性和应用性很强的课程。开设实验课程有助于加深学生对图形算法的理解,培养其分析问题,解决问题的能力。

通过本课程实验要求学生基本达到如下要求:

1. 掌握OpenGL的基本语法与程序结构。

2. 掌握如何通过点、线、面、体的构造方法。

3. 掌握如何对三维物体增加光照和纹理来增强其真实感。

4. 掌握如何构建一个真实的三维场景的基本过程和实现方法。

二、本课程实验应开设项目

三、各实验项目主要实验内容和基本要求

各实验项目的主要内容和基本要求见附录。

四、实验成绩考核与评定办法

学生应做好实验准备,认真完成每个实验,按时完成并提交实验报告。任

课教师应认真批改实验报告并给出实验报告成绩,并结合学生平时实验表现给出

学生平时实验成绩。实验成绩由实验报告成绩、平时实验成绩两部分组成。其中

实验报告成绩占50%、实验课堂成绩占50%。

五、大纲说明

大纲里所列项目是必做的,但是对于有能力的同学,希望能够把几个实验做到一个集成的可视化界面下。学生也可以根据自己的爱好,选择做一个小的系统,同样能够达到本实验大纲的目的。

六、主要参考书目

1. 《计算机图形学(OpenGL版)(第3版)》,Francis S hill,Jr,Stephen M.Kelley 著,胡事民等译;清华大学出版社,2009.2

2.《交互式计算机图形学:基于OpenGL着色器的自顶向下方法(第六版)》,Edward Angel著,张荣华等译;[M].电子工业出版社,2012.5

3. 《计算机图形学(第三版)》,Donald Hearn, M.Pauline Baker 著,蔡士杰

等译;电子工业出版社,2011.2

4. 《OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 (8th Edition)》,Dave Shreiner, Graham Sellers, John M. Kessenich and Bill M. Licea-Kane著; Addison-Wesley Professional .,2013.3

5. 《OpenGL SuperBible: Comprehensive Tutorial and Reference (6th Edition) 》,Graham Sellers, Richard S Wright and Nicholas Haemel;Addison-Wesley Professional,2013.7

6. 《Computer Graphics with OpenGL(4th Edition)》,Donald Hearn,M.pauline Baker著; Prentice Hall,2010.11

撰写人:郭建林审定人:

批准人:执行时间:

实验1 基本图元绘制( 4学时)

1.实验目的

(1) 了解OpenGL的基本的编程思想和程序结构。

(2) 了解 OpenGL中绘制点、线、面的相关函数。

(3) 掌握如果通过定义空间点和构成方式来形成不同的空间物体。

2.实验内容

(1) 熟悉实验环境。

(2) 利用相关直线绘制算法绘制一条直线,建议使用DDA算法或Bresenham算法。

(3) 绘制一个颜色插值的三角形面。

(4) 综合利用所学知识,绘制分形物体。给出原理,步骤,设计绘制方案。可自己选择分形物体的类型,如分形树、Koch雪花、Sierpinski三角形(二维或三维)、Julia集、Mandelbrot集等。

3.实验要求

(1) 预习实验相关知识,了解实验目的与内容。

(2) 根据实验目的和内容,制定相关的实验方案并进行实施。

(3) 实验结束后,对相关内容进行总结和反思。

4.实验器材

(1) PC机及配套软件、一人一套。

1.1. 实验目的

(1)掌握OpenGL程序的基本结构。

(2)通过OpenGL实现直线的绘制,了解在OpenGL中如何实现一条简单的线段的绘制。

(3)了解OpenGL中如何控制点、线的属性,包括颜色、宽度、线型等。

(4)掌握如何绘制一个三角形并进行填充

1.2. 例程

一个简单的创建一条直线的例程:

#include"stdafx.h"

#include

#include

//初始化函数,设置渲染环境

void SetupRC(void)

{

glClearColor (0, 0,0, 0.0); // 设置RGBA模式,背景颜色为黑色(没有执行,仅仅设置)

glMatrixMode(GL_PROJECTION);

glLoadIdentity();//把投影矩阵置为单位阵

glOrtho (0.0,1024,0.0,768,0,1000);//定义世界坐标的裁剪窗口,也就是通常说的视口

//我们定义的裁剪窗口大小

//也就是在这个范围内的物体都将正投影到X0Y平面

}

//显示函数,要显示的代码都写在这里

void RenderScene(void)

{

glClear(GL_COLOR_BUFFER_BIT); //1@ 清除颜色缓冲区。

glBegin (GL_LINES);

glColor4f(0.8,0.8, 0, 0.75);

glVertex3f(0, 0, 0.0);

glVertex3f(300, 300, 0.0);

glEnd();

glutSwapBuffers(); //双缓冲区设置,交换缓冲区

//双缓冲去允许你在一个屏幕之外的缓冲区中执行绘图代码,然后适用一条交换命令把你绘制的图形立即显示在屏幕上。

//双缓冲两个用途:复杂图形需要绘制的时间很长,你并不希望在屏幕上看到显示图形合成的每个步骤。

//使用双缓冲,用户绝对不会看到一副不完整的图像,图像只有在完全完成后才在屏幕上显示。

// 2@

//glFlush();//所有未被执行的命令被执行单缓冲区需要强制执行一次glFlush(),进行一次刷新操作。

//本设置显示函数中,glClear(GL_COLOR_BUFFER_BIT)

// 和glFlush() 两个函数是必须的,其中间部分可以更改

}

// 主函数,创建一个Windows窗口,并初始化其大小,标题,RGBA显示模式,以及事件句柄等。

int main(int argc, char** argv)

{

glutInit(&argc, argv); //初始化GLUT

glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); //设置显示模式位单缓存,RGB模式

glutInitWindowSize (800, 600); //设置窗口大小

glutCreateWindow("Line DDA algorithm !"); //创建一个渲染窗口,并吧标题栏设置为相应字符串

SetupRC(); //窗口初始化

glutDisplayFunc (RenderScene); //调用显示函数

glutMainLoop(); // 必须添加的函数,用来维持显示图像显示过程的交互,而且必须作为最后调用的一个函数

return 0;

}

说明:该函数定义的裁剪窗口为1024×768,也就是说所有的在这个范围内的都将被显示在一个Windows窗口中,窗口大小初始化为800×600。

我们初始化的窗口背景为黑色,直线颜色为黄色。

1.3. 实验

请实现一个三角形。

坐标和颜色分别如图所示:

请设置其线条宽度为4(像素)。

请设置A、B、C点的大小位10(20×20像素大小)

颜色如图所示,AB 红色,BC 绿色,CA 蓝色。

参考代码:请修改其中一些实现上述图形. glBegin(GL_? );

glColor4f(0.8,0.8, 0, 0.75);

glVertex3f(100,200.0,10); //A 点A(100,200,10) glColor4f(0,1,0,0.75);

glVertex3f(400,500.0,10); //B(400,500,200) glColor4f(0,0,1,0.75);

glVertex3f(600,220.0,10); //C(600,220,30)

glEnd();

实验2 曲线与曲面(4学时)

1.实验目的

(1) 掌握Bezier 曲线和Hermite 曲线的绘制方法。理解如何通过折线来近似一条曲线。

(2) 了解Bezier 曲面和Hermite 曲面的绘制方法。 2.实验内容

(1) 绘制一条四阶Bezier 曲线或者Hermite 曲线。

(2) 要求控制点、控制多边形、Bezier 曲线或Hermite 曲线用不同颜色表示。 (3) 掌握如何控制点、线的属性。

(4) 要求有能力的同学能够实现Bezier 曲面或者Hermite 曲面。 (5) 了解Utah 茶壶的Bezier 曲面构造方法。 3.实验要求

(1) 预习实验相关知识,了解实验目的与内容。

(2) 根据实验目的和内容,制定相关的实验方案并进行实施。

(3) 实验结束后,对相关内容进行总结和反思。

4.实验器材

(1) PC机及配套软件、一人一套。

1.4. 实验目的

(1)掌握Bezier曲线的基础知识。

(2)编程实现绘制4个控制点的Bezier曲线。

(3)用不同的颜色表示出控制点、控制多边形和Bezier曲线本身

(4)思考如何实现鼠标交互的控制Bezier曲线的形状

(5)观察改变控制点如何改变Bezier曲线的形状

1.5. 例程

如下代码实现教材3-2习题所示的Bezier样条:

// Bezier.cpp : Defines the entry point for the console application. //

#include"stdafx.h"

#include

#include

#include

#include"gl/glut.h"

using namespace std;

class Vector3D

{

public:

float x,y,z;

Vector3D(float vx,float vy, float vz){

this->x =vx;

this->y =vy;

this->z =vz;

};

Vector3D(){};

};

class Bezier

{

public :

float x,y,z;

float Bernstain(float t,int i)

{

if(i==0)

return (1-t)*(1-t)*(1-t) ;

if(i==1)

return 3*t*(1-t)*(1-t);

if(i==2)

return 3*t*t*(1-t);

if(i==3)

return t*t*t;

};

Vector3D BezierSpline(Vector3D P0,Vector3D P1,Vector3D P2, Vector3D P3,float t){

Vector3D v3d;

v3d.x =

P0.x*Bernstain(t ,0)+P1.x*Bernstain(t ,1)+P2.x*Bernstain(t ,2)+P3.x*B ernstain(t ,3);

v3d.y =

P0.y*Bernstain(t ,0)+P1.y*Bernstain(t ,1)+P2.y*Bernstain(t ,2)+P3.y*B ernstain(t ,3);

v3d.z =

P0.y*Bernstain(t ,0)+P1.z*Bernstain(t ,1)+P2.z*Bernstain(t ,2)+P3.z*B ernstain(t ,3);

return v3d;

};

};

//初始化函数,设置渲染环境

void SetupRC(void)

{

glClearColor (0, 0,0, 0.0); // 设置RGBA模式,背景颜色为黑色(没有执行,仅仅设置)

glMatrixMode(GL_PROJECTION);

glLoadIdentity();//把投影矩阵置为单位阵

glOrtho(0.0,1024,0.0,768,-1000,1000);//定义世界坐标的裁剪窗口,也就是通常说的视口

//我们定义的裁剪窗口大小

}

//显示函数,要显示的代码都写在这里

void RenderScene(void)

{

glClear(GL_COLOR_BUFFER_BIT); //1@ 清除颜色缓冲区。

Vector3D p0(0,0,0),p1(48,96,0),p2(120,120,0),p3(216,72,0),result; Bezier bsp;

glPointSize(8);

glBegin(GL_POINTS);

glColor4f(1,0,1,1);

glVertex3f(p0.x ,p0.y ,p0.z );

glVertex3f(p1.x ,p1.y ,p1.z);

glVertex3f(p2.x ,p2.y ,p2.z);

glVertex3f(p3.x ,p3.y ,p3.z);

glEnd();

glBegin(GL_LINE_LOOP);

glColor4f(0,0,1,1);

glVertex3f(p0.x ,p0.y ,p0.z );

glVertex3f(p1.x ,p1.y ,p1.z);

glVertex3f(p2.x ,p2.y ,p2.z);

glVertex3f(p3.x ,p3.y ,p3.z);

glEnd();

glLineWidth(2);

glBegin(GL_LINE_STRIP);

glColor4f(0,1,0,1);

for(float t=0;t<=1;t+=0.01)

{

result = bsp.BezierSpline(p0,p1,p2,p3,t);

float x,y, z ;

x = result.x ;

y = result.y ;

z = result.z ;

glVertex3f(x,y,z);

};

glEnd();

glutSwapBuffers(); //双缓冲区设置,交换缓冲区

//双缓冲去允许你在一个屏幕之外的缓冲区中执行绘图代码,然后适用一条交换命令把你绘制的图形立即显示在屏幕上。

//双缓冲两个用途:复杂图形需要绘制的时间很长,你并不希望在屏幕上看

到显示图形合成的每个步骤。

//使用双缓冲,用户绝对不会看到一副不完整的图像,图像只有在完全完成后才在屏幕上显示。

// 2@

//glFlush();//所有未被执行的命令被执行单缓冲区需要强制执行一次glFlush(),进行一次刷新操作。

//本设置显示函数中,glClear(GL_COLOR_BUFFER_BIT)

// 和glFlush() 两个函数是必须的,其中间部分可以更改

}

// 主函数,创建一个Windows窗口,并初始化其大小,标题,RGBA显示模式,以及事件句柄等。

int main(int argc, char** argv)

{

glutInit(&argc, argv); //初始化GLUT

glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); //设置显示模式位单缓存,RGB模式

glutInitWindowSize (800, 600); //设置窗口大小

glutCreateWindow("Line DDA algorithm !"); //创建一个渲染窗口,并吧标题栏设置为相应字符串

SetupRC(); //窗口初始化

glutDisplayFunc (RenderScene); //调用显示函数

glutMainLoop(); // 必须添加的函数,用来维持显示图像显示过程的交互,而且必须作为最后调用的一个函数

return 0;

}

实验3 体的表示与变换( 4学时)

1.实验目的

(1) 掌握三维形体的数据表示与存储。

(2) 掌握二维和三维几何变换的矩阵形式。

(3) 掌握视图变换的矩阵表达。

(4) 理解世界坐标系与观察坐标系的相对关系。

(5) 理解几何变换的实质是矩阵操作。

(6) 掌握平行投影、透视投影。

(7) 隐藏面消除、深度测试的基本原理。

(8) 使用多边形网格建模并进行变换。

2.实验内容

(1) 建立一个正方体或球体,并建立正确的投影、隐藏面、深度测试。

(2) 对所建立的物体进行交互式旋转,放大,缩小。

(3) 利用多边形网格建立一个较为复杂的形体,并建立文件存储格式,读入并显示,并进行适当的设置,进行观察。

(4) 对所建立的物体进行合适的投影,比较不同的投影方式的不同。

(5) 利用函数和直接建立矩阵的方式进行模型变换和投影变换,比较两种方式的不同。

3.实验要求

(1) 预习实验相关知识,了解实验目的与内容。

(2) 根据实验目的和内容,制定相关的实验方案并进行实施。

(3) 实验结束后,对相关内容进行总结和反思。

4.实验器材

(1)PC机及配套软件、一人一套。

1.6. 实验目的

(1)OpenGL实现几何变换的几个函数用法

(2)OpenGL中实现几何变换的几个矩阵的几何含义

(3)掌握在OpenGL中如何实现正投影、透视投影

(4)利用Utah茶壶实现相应的显示

1.7. 例程

实现一个物体的三维移动

// OpenGL experiments.cpp : Defines the entry point for the console application.

//

#include"stdafx.h"

#include

#include

//初始化函数,设置渲染环境

void SetupRC(void)

{

glClearColor (0, 0,0, 0.0); // 设置RGBA模式,背景颜色为黑色(没有执行,仅仅设置)

glMatrixMode(GL_PROJECTION);

glLoadIdentity();//把投影矩阵置为单位阵

glOrtho(0.0,1024,0.0,768,-1000,1000);//定义世界坐标的裁剪窗口,也就是通常说的视口

//我们定义的裁剪窗口大小

}

//显示函数,要显示的代码都写在这里

void RenderScene(void)

{

glClear(GL_COLOR_BUFFER_BIT); //1@ 清除颜色缓冲区。

glClear(GL_COLOR_BUFFER_BIT);

glutWireTeapot(200.0);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();//把视图矩阵,初始化为单位阵

glTranslatef(512,384,0);//把物体移动到窗口中央

//glTranslatef(100,100,0);

glutSwapBuffers(); //双缓冲区设置,交换缓冲区

//双缓冲去允许你在一个屏幕之外的缓冲区中执行绘图代码,然后适用一条交换命令把你绘制的图形立即显示在屏幕上。

//双缓冲两个用途:复杂图形需要绘制的时间很长,你并不希望在屏幕上看到显示图形合成的每个步骤。

//使用双缓冲,用户绝对不会看到一副不完整的图像,图像只有在完全完成后才在屏幕上显示。

// 2@

}

// 主函数,创建一个Windows窗口,并初始化其大小,标题,RGBA显示模式,以及事件句柄等。

int main(int argc, char** argv)

{

glutInit(&argc, argv); //初始化GLUT

glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); //设置显示模式位单缓存,RGB模式

glutInitWindowSize (800, 600); //设置窗口大小

glutCreateWindow("Utah teapot Translate and Perspective !"); //创建一个渲染窗口,并吧标题栏设置为相应字符串

SetupRC(); //窗口初始化

glutDisplayFunc (RenderScene); //调用显示函数

glutMainLoop(); // 必须添加的函数,用来维持显示图像显示过程的交互,而且必须作为最后调用的一个函数

return 0;

}

一些说明:

RenderScene函数如下所示,其中红色所示为绘制茶壶的关键代码:

void RenderScene(void)

{

glClear(GL_COLOR_BUFFER_BIT); //1@ 清除颜色缓冲区。

glClear(GL_COLOR_BUFFER_BIT);

glutWireTeapot(200.0);

glutSwapBuffers(); //双缓冲区设置,交换缓冲区

}

利用glutWireTeapot(200.0f)函数建立一个Utah茶壶,建立以后注意其位置。该函数建立的Utah茶壶位于坐标原点。使用glTranslatef函数把该茶壶显示于窗口中央。也就是把物体的局部原点移动到新的坐标(512,384,0)。注意要使用下面两条函数重置视图矩阵:

glMatrixMode(GL_MODELVIEW);//

glLoadIdentity();//把视图矩阵,初始化为单位阵

观察茶壶所在窗口的位置。

实验结果如下图:

对Teapot进行正投影以后的结果

实验4 光照与纹理( 6学时)

1.实验目的

(1) 理解各种高级光照模型。

(2) 理解物体材质对光照效果的影响。

(3) 使用光照模型增强几何形体的真实感。

(4) 理解二维纹理映射的本质是对图像做三维映射,是对纹理矩阵进行操作。

(5) 掌握纹理映射的一般方法。

(6) 纹理映射过程中,物体光照颜色和纹理颜色的混合方式。

(7) 掌握利用OpenGL对空间形体进行纹理映射的方法和参数。

2.实验内容

(1) 选取合适的光照模型参数。

(2) 对上个实验建立的空间几何形体(如正方体,空间Sierpinski三角形),加上光照,并测试OpenGL光照模型中各个参数对最后光照效果的影响。

(3) 对空间形体,如正方体、球体等,进行纹理映射。

(4) 选择不同的映射方法,观察映射效果。

3.实验要求

(1) 预习实验相关知识,了解实验目的与内容。

(2) 根据实验目的和内容,制定相关的实验方案并进行实施。

(3) 实验结束后,对相关内容进行总结和反思。

4.实验器材

(1) PC机及配套软件、一人一套。

2.光照模型

2.1. 实验目的

(1)了解OpenGL的光照模型中各个参数的实际含义

(2)掌握OpenGL对光源进行设置的方法

2.2. 例程

要实现光照模型,我们需要实现光照物体的面片表示,设置深度测试(进行面的消隐),设置多边形的环绕方向,这么几项功能。创建一个实体模型,把不需要的面进行消除。

2.2.1.创建一个实体TeaPot

glutSolidTeapot(200.0);

实现一个实体Utah茶壶,其半径为200.0。

中心点位于glTranslatef(0,0,-400)

创建一个球体其半径为100,位于Teapot后面。如何正确显示两者的位置关系。

中心点位于

glTranslatef(400,0,-800);

如果不启用

两者形成部分遮挡关系。

2.2.2.隐藏面消除

我们在该实验中,引用了两个物体,Utah茶壶和球体。并且两者形成了半遮挡的关系。这时候我们就需要应用ZBuffer算法来实现相关的消隐,否则不会出现正确的空间关系。

不启用glEnable(GL_DEPTH_TEST)

图4- 1 未启用深度测试,后绘制的小球遮挡住了茶壶

启用深度测试

图4- 2 启用深度测试,小球到了茶壶的后面

我们的代码如下:

glEnable(GL_DEPTH_TEST); // 开启深度测试

glFrontFace(GL_CW);

glEnable(GL_CULL_FACE);

glColor4f(1,0,0,1);//用红色绘制茶壶

glutSolidTeapot(200.0);

glMatrixMode(GL_MODELVIEW);//设置矩阵模式为模型矩阵

glLoadIdentity();//把视图矩阵,初始化为单位阵

glTranslatef(0,0,-400);//把物体移动到窗口中央

glPushMatrix();

glColor4f(0,0,1,1);//蓝色绘制小球

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

glTranslatef(400,0,-800);

glutSolidSphere(200,20,20);

glPopMatrix();

但是当我们把红色代码块和蓝色代码块调换一下位置,我们发现,在不启用深度测试的情况下,又能够正确显示结果如图4-1.

请根据Zbuffer算法的相关知识,解释上述现象。

2.2.

3.光照

要想真实的现实一个物体,就需要加入光照。以我们上面的示例,Utah茶壶和小球为例子来说明如何在OpenGL中显示一个具有三维真实感的物体。

光照物体

图4- 3无光照情况下

添加光照:

//设置光照参数

GLfloat light_pos[] = {0, 0 ,500 ,1.0}; //光源位置,当把第四个量设为的时候,光源为平形光

GLfloat light_ka[] = {0.1,0.1,0.1,1.0}; //环境光

GLfloat light_kd[] = {1.0,1.0,1.0,1.0}; // 漫反射

GLfloat light_ks[] = {1.0,1.0,1.0,1.0}; //镜面光

glLightfv(GL_LIGHT0,GL_POSITION,light_pos);

glLightfv(GL_LIGHT0,GL_AMBIENT,light_ka);

glLightfv(GL_LIGHT0,GL_DIFFUSE,light_kd);

glLightfv(GL_LIGHT0,GL_SPECULAR,light_ks);

//设置材质参数

GLfloat mat_ka[] = {0.5,0.75,0.80,1.0};// 青色

GLfloat mat_kd[] = {0.5,0.75,0.80,1.0};

GLfloat mat_ks[] = {0.5,0.75,0.80,1.0}; //

GLfloat mat_sh = 100; //高光指数

glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ka);

glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_kd);

glMaterialfv(GL_FRONT,GL_SPECULAR,mat_ks);

glMaterialfv(GL_FRONT,GL_SHININESS, &mat_sh);

//启用光照

glEnable(GL_LIGHT0);

glEnable(GL_LIGHTING);

通过上述的代码添加一个位于Z轴500处的点光源。测试结果如下:

图4- 4点光源照射

如果把光照位置的最后一个量设置为0,则该光源是一个位于无穷远处的平行光源。

计算机图形学实验报告

计算机图形学 实验报告 姓名:谢云飞 学号:20112497 班级:计算机科学与技术11-2班实验地点:逸夫楼507 实验时间:2014.03

实验1直线的生成 1实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析 实验数据的能力; 编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的 直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记 录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编 制成表格,并绘制折线图比较两种算法的性能。 2实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One(自制平台)。 本实验提供名为 Experiment_Frame_One的平台,该平台提供基本 绘制、设置、输入功能,学生在此基础上实现DDA算法和Mid_Bresenham 算法,并进行分析。 ?平台界面:如错误!未找到引用源。所示 ?设置:通过view->setting菜单进入,如错误!未找到引 用源。所示 ?输入:通过view->input…菜单进入.如错误!未找到引用 源。所示 ?实现算法: ◆DDA算法:void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) Mid_Bresenham法:void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1)

3实验结果 3.1程序流程图 1)DDA算法流程图:开始 定义两点坐标差dx,dy,以及epsl,计数k=0,描绘点坐标x,y,x增 量xIncre,y增量yIncre ↓ 输入两点坐标x1,y1,x0,y0 ↓ dx=x1-x0,dy=y1-y0; _________↓_________ ↓↓ 若|dx|>|dy| 反之 epsl=|dx| epsl=|dy| ↓________...________↓ ↓ xIncre=dx/epsl; yIncre=dy/epsl ↓ 填充(强制整形)(x+0.5,y+0.5); ↓←←←← 横坐标x+xIncre; 纵坐标y+yIncre; ↓↑ 若k<=epsl →→→k++ ↓ 结束 2)Mid_Bresenham算法流程图开始 ↓ 定义整形dx,dy,判断值d,以及UpIncre,DownIncre,填充点x,y ↓ 输入x0,y0,x1,y1 ______↓______ ↓↓ 若x0>x1 反之 x=x1;x1=x0;x0=x; x=x0;

河北工业大学UML实验报告

《面向对象与UML》 实验报告

实验一UML建模基础 一、实验目的 1.熟悉UML建模工具Rational rose的可视化环境。 2.掌握利用Rational rose进行建模的步骤。 二、实验内容 1.熟悉Rational rose建模环境 2.建模基本步骤 3.结合日常生活中实际使用的系统,模仿2中的用例模型绘制用例图,并保存模型,熟悉利用Rational rose的建模过程,要求绘制的用例图中用例与2中的用例图不相同。 三、实验结果 建模基本步骤中得到的用例图 实验2 用例图 一、实验目的 1. 熟悉UML用例图的基本图形元素。 2. 掌握用例与用例之间的各种关系。 3. 熟悉针对具体场景使用例图进行软件建模的方法。 4. 掌握用例规格说明的概念和基本结构,以及用例规格说明的作用。

二、实验内容 1. 根据实验一建模实例,熟悉利用Raional rose软件绘制用例图的基本方法。 2 通过对“学生信息管理系统”的需求描述,确定系统用例图: “学生信息管理系统”的需求描述如下: 在每个新学年开始都会有新生入学,这时系统的管理人员可以通过系统将这些新生的学籍、年龄、家庭住址、性别、身高、学生证号、身份证号等基本信息存入数据库,每个新生都对应一个唯一的编号,此编号可以是学生,在日程管理中,系统管理员还可以对所有学生的基本信息进行查询、修改和删除等操作;同时校领导可以查询、修改全校所有学生的基本信息。 学校领导可以通过本系统了解每个班的任课教师、辅导员、学生姓名、学生人数、专业等班级基本信息。系统管理员可以进行查询班级基本信息、添加班级、修改班级基本信息、删除班级等操作。 在考试结束以后,教师可以将学生的考试成绩录入系统,还可以对学生的成绩进行查询和修改。学生可以通过本系统进行成绩的查询。 学生还可以在网上选择自己选修的课程(必修课必须上,所以不用选),学生通过本系统可以看到有哪些课程可以选以及课程的基本信息。课程的基本信息包括:课程号、所属专业、课程名称、开课学期、学时数、学分、任课教师等。每个学生每学期的选修课程数不得大于6门,如果已经选择了6门课程则不能再选择其他课程。只有将已选择的课程删除掉才能再选择新课程。系统管理员负责修改、增加、删除选修课程。 系统管理员可以对系统的账号进行添加、设置、删除、查询等操作,同时可以设置每个账号的权限以及对应的个人信息。 a) 请根据上述描述,确定系统的参与者 b) 确定系统的用例并绘制完整的用例图。 3. 根据2中所绘制的“学生信息管理系统”用例图,写出学生“选择课程”用例的 用例规格说明。 4. 考虑一个网络订餐系统的需求,并绘制出完整的用例图。 实验步骤: 1参与者:管理员学生校领导教师 2用例:登陆系统,录入学生基本信息,查询学生基本信息,修改学生基本信息,删除学生基本信息,(学生信息包括:学籍,年龄,家庭住址,性别,身高,学生证号,身份证号,查询班级基本信息(任课教师,辅导员,学生姓名,学生人数,专业班级),添加班级,修改班级基本信息,删除班级,录入成绩,查询成绩,修改成绩,查询课程信息,(课程基本信息包括:课程号,所属专业,课程名称,开课学期,学时数,学分,任课教师)选择课程,删除已选课程,修改课程,增加课程,删除选修课程,添加帐号,设置帐号(设置帐号的权限和对应

数据选择器实验报告.docx

谢谢欣赏实验三数据选择器 实验人员:班号:学号: 一、实验目的 (1) 熟悉并掌握数据选择器的功能。 (2) 用双4选1数据选择器74LS153设计出一个16选1的数据选择器。 (3) 用双4选1数据选择器74LS153 设计出一个全加法器。 二、实验设备 数字电路实验箱,74LS00,74LS153。 三、实验内容 (1) 测试双4选1数据选择器74LS153的逻辑功能。 74LS153含有两个4选1数据选择器,其中A0和A1为芯片的公共地址输入端,Vcc 和GND分别为芯片的公共电源端和接地端。Figure1为其管脚图: Figure 1 1Q=A1A01D0+A1A0?1D1+A1A0?1D2+A1A0?1D3 2Q=A1A02D0+A1A0?2D1+A1A0?2D2+A1A0?2D3 按下图连接电路: Figure 2 (2) 设某一导弹发射控制机构有两名司令员A、B和两名操作员C、D,只有当两名司令员均同意发射导弹攻击目标且有操作员操作,则发射导弹F。利用所给的实验仪器设计出一个符合上述要求的16选1数据选择器,并用数字电路实验箱上的小灯和开关组合表达实验结果。 思路: 由于本实验需要有四个地址输入端来选中16个数据输入端的地址之中的一个,进而实现选择该数据输入端中的数据的功能,即16选1。而公共的A0、A1两个地址输入端和S使能端(用于片选,已达到分片工作的目的,进而扩展了一位输入)一共可以提供三个地址输入端,故需要采用降维的方法,将一个地址输入隐藏到一个数据输入端Dx 中。本实验可以降一维,也可以降两位。由于两位比较复杂,本实验选择使用降一维的方式。 做法: 画出如应用题中实现所需功能的卡诺图: 谢谢欣赏

实验8MATLAB图形用户界面设计实验报告

实验8 MATLAB图形用户界面设计实验报告实验报告 课程名称:MATLAB应用成绩: 实验项目名称:MATLAB图形用户界面设计实验时间:11.6 指导教师(签名): 班级:XXXXX 姓名:XXXXX 学号:XXX 实验目的: 1. 熟悉MATLAB的菜单设计方法 2. 熟悉MATLAB的主要控件使用方法 3. 熟悉MATLAB的GUI设计流程 实验环境: MATLAB 7.1 实验内容及过程: 简单计算器的设计:在MATLAB GUI的实验环境中,通过MATLAB图形用户界面设计的方法,设计一个 简单的计算器,以实现简单数据的退出、清屏、删除、四则运算等基本功能。 实验过程、结果及分析:

计算器代码: function varargout = jsq(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 第 1 页共 6 页 'gui_OpeningFcn', @jsq_OpeningFcn, ... 'gui_OutputFcn', @jsq_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else

八选一数据选择器和四位数据比较器verilog实验报告)

Verilog HDV 数字设计与综合 实验报告 微电子0901班 姓名:袁东明 _ 学号:_04094026 一、实验课题: 1.八选一数据选择器 2.四位数据比较器 二、八选一数据选择器Verilog程序: 2.1主程序 module option(a,b,c,d,e,f,g,h,s0,s1,s2,out); input [2:0] a,b,c,d,e,f,g,h; input s0,s1,s2; output [2:0] out; reg [2:0] out; always@(a or b or c or d or e or f or g or h or s0 or s1 or s2) begin case({s0,s1,s2}) 3'd0 : out=a;

3'd1 : out=b; 3'd2 : out=c; 3'd3 : out=d; 3'd4 : out=e; 3'd5 : out=f; 3'd6 : out=g; 3'd7 : out=h; endcase end endmodule 2.2激励程序 module sti; reg [2:0] A,B,C,D,E,F,G,H; reg S0,S1,S2; wire [2:0] OUT; option dtg(A,B,C,D,E,F,G,H,S0,S1,S2,OUT); initial begin A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=0;S2=0; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=0;S2=1; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=1;S2=0; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=0;S1=1;S2=1; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=0;S2=0; #100 A=3'd0;B=3'd1;C=3'd2;D=3'd3;E=3'd4;F=3'd5;G=3'd6;H=3'd7;S0=1;S1=0;S2=1;

Java基础实验报告-图形用户界面设计

南京工程学院 实验报告 课程名称 JAVA基础 实验项目名称图形用户界面设计 实验学生班级 实验学生姓名 学号 同组学生姓名 实验时间 实验地点 实验成绩评定 指导教师签字年月日

一、实验目的和要求 1.掌握Java Swing组建的使用方法,包括窗口、框架、对话框、面板、文本编辑框、按钮、组合框等多种布局方式,掌握窗口菜单和快捷菜单设计方式。 2.理解委托时间处理模型,掌握不同组件、不同事件的事件处理方法,设计出能够响应事件的Java图形用户界面。 3.熟悉在组件上绘图的方法。 二、实验题目 用表格存储并显示个人所得税税率表,给定一个月收入值,计算应缴的个人所得税。 三、实验方法与步骤(需求分析、算法设计思路、流程图等) 算法设计思路:本次实验题目为计算个人所得税,所以本人从网上找到了国家最新的税收政策,以下为截图:

因此,我设计了以下核心算法 public void actionPerformed(ActionEvent e) { if(e.getSource()==button_b) { double wage=Double.parseDouble((String)text_wage.getText()); double tax = 0; if(wage<=3500) tax=0; if(wage>3500&&wage<=5000) tax=(wage-3500)*0.03; if(wage>5000&&wage<=8000) tax=(wage-3500)*0.1-105; if(wage>8000&&wage<=12500) tax=(wage-3500)*0.2-555; if(wage>12500&&wage<=38500)

:数据选择器设计(实验报告)

实验报告 一、实验目的 熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。 二、实验设备 GW48系列SOPC/EDA实验开发系统实验箱一台计算机一台 三、实验内容 1首先利用QuartusⅡ完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出下图所示的仿真波形。最后在实验系统上进行硬件测试,验证本项设计的功能。 源程序为: ENTITY mux21a IS PORT ( a, b, s: IN BIT; y : OUT BIT ); END ENTITY mux21a; ARCHITECTURE one OF mux21a IS BEGIN PROCESS (a,b,s) BEGIN IF s = '0' THEN y <= a ; ELSE y <= b ; END IF; END PROCESS; END ARCHITECTURE one ;

图(1 ) 2选1多路选择器的编译图 、图(2) 功能仿真的波形图 图(3 ) 功能引脚图

图(4) 2选1多路选择器的RTL电路 2. 将此多路选择器看成是一个元件mux21a,利用元件例化语句描述图,并将此文件放在同一目录中。并对上例分别进行编译、综合、仿真,并对其仿真波形做出分析说明。以下是程序: 图(5) 双二选一多路选择器的编译图

图(6) 双路数据选择器功能仿真图 图(7) 双二选一多路选择器的引脚锁定图图 5 双2选1多路选择器 图(8) 双路数据选择器RTL电路图

图(9) 编程下载图 3.、引脚锁定以及硬件下载测试。若选择目标器件是EP1C3,建议选实验电路模式5,用键1(PIO0,引脚号为1)控制s0;用键2(PIO1,引脚号为2)控制s1;a3、a2 和a1 分别接clock5(引脚号为16)、clock0(引脚号为93)和clock2(引脚号为17);输出信号outy仍接扬声器spker(引脚号为129)。通过短路帽选择clock0接256Hz信号,clock5 接1024Hz,clock2 接8Hz 信号。最后进行编译、下载和硬件测试实验(通过选择键1、键2,控制s0、s1,可使扬声器输出不同音调)。 图(10) 实验电路模式5

Java图形用户界面实验报告

西安邮电大学 (计算机学院) 课内实验报告 实验名称:图形用户界面 专业名称:计算机科学与技术 班级:计科1405班 学生姓名:高宏伟 学号:04141152 指导教师:刘霞林 实验日期:一、实验目的 了解图形用户界面基本组件窗口、按钮、文本框、选择框、滚动条等的使用方法,了解如何使用布局管理器对组件进行管理,以及如何使用Java 的事件处理机制。 二、实验要求 1. 掌握使用布局管理器对组件进行管理的方法。

2. 理解Java 的事件处理机制,掌握为不同组件编写事件处理程序的方法。 3. 掌握编写独立运行的窗口界面的方法。 4. 掌握组件的使用方法。 5. 了解对话框的使用方法。 三、实验内容 (一)算术测试。 实验要求: 编写一个算术测试小软件,用来训练小学生的算术能力。程序由3个类组成,其中Teacher类对象负责给出算术题目,并判断回答者的答案是否正确; ComputerFrame类对象负责为算术题目提供视图,比如用户可以通过 ComputerFrame类对象提供的GUI界面看到题目,并通过该GUI界面给出题目的答 案;MainClass是软件的主类。 程序模板: public class Teacher { int numberOne,numberTwo; String operator=""; boolean right; public int giveNumberOne(int n) { numberOne=(int)()*n)+1; return numberOne; } public int giveNumberT wo(int n) { numberTwo=(int)()*n)+1; return numberTwo; } public String giveOperator() { double d=(); if(d>= operator="+"; else operator="-"; return operator; } public boolean getRight(int answer) { if("+")) { if(answer==numberOne+numberTwo) right=true; else right=false; }

图像处理 实验报告

摘要: 图像处理,用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本内容图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要内容包括图像压缩,增强和复原,匹配、描述和识别3个部分。图像处理一般指数字图像处理。 数字图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。目前,图像处理演示系统应用领域广泛医学、军事、科研、商业等领域。因为数字图像处理技术易于实现非线性处理,处理程序和处理参数可变,故是一项通用性强,精度高,处理方法灵活,信息保存、传送可靠的图像处理技术。本图像处理演示系统以数字图像处理理论为基础,对某些常用功能进行界面化设计,便于初级用户的操作。 设计要求 可视化界面,采用多幅不同形式图像验证系统的正确性; 合理选择不同形式图像,反应各功能模块的效果及验证系统的正确性 对图像进行灰度级映射,对比分析变换前后的直方图变化; 1.课题目的与要求 目的: 基本功能:彩色图像转灰度图像 图像的几何空间变换:平移,旋转,剪切,缩放 图像的算术处理:加、减、乘 图像的灰度拉伸方法(包含参数设置); 直方图的统计和绘制;直方图均衡化和规定化; 要求: 1、熟悉图像点运算、代数运算、几何运算的基本定

义和常见方法; 2、掌握在MTLAB中对图像进行点运算、代数运算、几何运算的方法 3、掌握在MATLAB中进行插值的方法 4、运用MATLAB语言进行图像的插值缩放和插值旋转等 5、学会运用图像的灰度拉伸方法 6、学会运用图像的直方图设计和绘制;以及均衡化和规定化 7、进一步熟悉了解MATLAB语言的应用,将数字图像处理更好的应用于实际2.课题设计内容描述 1>彩色图像转化灰度图像: 大部分图像都是RGB格式。RGB是指红,绿,蓝三色。通常是每一色都是256个级。相当于过去摄影里提到了8级灰阶。 真彩色图像通常是就是指RGB。通常是三个8位,合起来是24位。不过每一个颜色并不一定是8位。比如有些显卡可以显示16位,或者是32位。所以就有16位真彩和32位真彩。 在一些特殊环境下需要将真彩色转换成灰度图像。 1单独处理每一个颜色分量。 2.处理图像的“灰度“,有时候又称为“高度”。边缘加强,平滑,去噪,加 锐度等。 3.当用黑白打印机打印照片时,通常也需要将彩色转成灰白,处理后再打印 4.摄影里,通过黑白照片体现“型体”与“线条”,“光线”。 2>图像的几何空间变化: 图像平移是将图像进行上下左右的等比例变化,不改变图像的特征,只改变位置。 图像比例缩放是指将给定的图像在x轴方向按比例缩放fx倍,在y轴按比例缩放fy倍,从而获得一幅新的图像。如果fx=fy,即在x轴方向和y轴方向缩放的比率相同,称这样的比例缩放为图像的全比例缩放。如果fx≠fy,图像的比例缩放会改变原始图象的像素间的相对位置,产生几何畸变。 旋转。一般图像的旋转是以图像的中心为原点,旋转一定的角度,也就是将图像上的所有像素都旋转一个相同的角度。旋转后图像的的大小一般会改变,即可以把转出显示区域的图像截去,或者扩大图像范围来显示所有的图像。图像的旋转变换也可以用矩阵变换来表示。

java实验报告实验六Java图形用户界面

信息工程学院 Java程序设计实习报告 JAVA图形用户界面 实验六Java图形用户界面 1.实验目的 (1)掌握图形用户界面基本组件。 (2)了解如何使用布局管理器对组件进行管理。 (3)掌握Java事件处理机制。 2.实验内容 实验题1 编写一个模拟计算器的程序,使用面板和网格布局,添加一个文本框,10个数字按钮(0-9),4个加减乘除按钮,一个等号按钮,一个清除按钮,要求将计算公式和结果显示在文本框中。 运行结果: 实验报告的内容与格式按任课教师的要求书写。

加法: 主要代码: private void initComponents() { jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); jButton3 = new javax.swing.JButton(); jButton4 = new javax.swing.JButton(); jButton5 = new javax.swing.JButton(); jButton6 = new javax.swing.JButton(); jButton7 = new javax.swing.JButton(); jButton8 = new javax.swing.JButton(); jButton9 = new javax.swing.JButton(); jButton10 = new javax.swing.JButton(); jButton11 = new javax.swing.JButton(); jButton12 = new javax.swing.JButton(); jButton13 = new javax.swing.JButton(); jButton14 = new javax.swing.JButton(); jButton15 = new javax.swing.JButton(); jTextField1 = new javax.swing.JTextField();

基于ArcGIS 10.0的DEM分析与可视化 实验报告

一、实验目的 1、掌握利用ArcGIS三维分析模块进行创建表面的基本方法.。 2、掌握利用ArcGIS三维分析进行各种表面分析的基本方法,并能进行表面创建及景观图 制作。 3、掌握地形特征信息的提取方法,能利用ArcGIS软件基于DEM对山脊线和山谷线的提取。 4、掌握三维场景中表面及矢量要素的立体显示其原理与方法,熟练掌握ArcGIS软件表面 及矢量要素杂场景中的三维显示及其叠加显示。 5、熟练掌握ArcScene三维场景中要素、表面的多种可视化方法。 6、通过制作某区域的飞行动画,实现对该区域的宏观浏览,掌握地形的三维显示与飞行动 化的制作方法。 二、主要实验器材(软硬件、实验数据等) 计算机硬件:Lenovo Y460N 计算机软件:ArcGIS10.0软件 实验数据:《ArcGIS地理信息系统空间分析实验教程》随书光盘 三、实验内容与要求 1、表面分析 要求: (1)熟悉ArcGIS三维分析工具中的表面分析工具。 (2)进一步分析表面,包括计算表面积、体积、坡度、坡向等,设置阴影地貌等以增强可视化,或者从一个特定的位置或路径设置可视化的更高级别的可视性分析等。 操作: (1)计算表面积与体积: 1)打开“面积与体积统计数据”工具,在对话框中如下图设置,点击“计算统计 数据”,得到面积和体积统计数据。 图1 计算表面积与体积 (2)坡度的计算: 1)选择表面分析的坡度工具: “Spatial Analyst 工具”→“表面分析”→“坡度”。

2)在打开的对话框中如图2设置,生成坡度栅格图像如图3。 图2:“坡度”对话框 图3 坡度栅格图像 (3)坡向的计算: 1)选择表面分析的坡向工具: “Spatial Analyst 工具”→“表面分析”→“坡向”。 2)在打开的对话框中设置,生成坡向图像如图4。 图4 坡向图像 (4)可视性分析: 1)视线瞄准线的创建:选择 “创建透视线”工具。 2)在打开的对话框中设置,并选择透视线的点;如图5所示。

数据选择器_Mutisim仿真实验报告

电气工程学院电工电子教学基地 数字电子技术实验 实验报告 仿真实验1 用数据选择器设计函数发生器 学号:18291035 姓名:陈涟漪 班级:电气1802 成绩: 指导教师:周晖 完成时间:2020年5 月15 日

数字电子技术实验 仿真实验1 用数据选择器设计函数发生器 1 实验任务 使用数据选择器74LS151和适当门电路设计一函数发生器,能够实现4位二进制码数据范围指示功能。要求该函数发生器能区别以下三种情况: (1)0≤X≤4; (2)5≤X≤9; (3)10≤X≤15。 2 实验电路

3 实验步骤 采用A、B、C、D取0或1依次表示这四位二进制码的从高到低位的取值(例如:A=0,B=1,C=0,D=0表示四位二进制码0100)。则对于第一组来说,共有5个四位二进制码包含在其中,用卡诺图表示如下: 化简即得: 同理,也有5个数包含在第二组中,卡诺图如下: 化简即得: 第三组包含了6个数,卡诺图如下:

化简即得: 对以上三个式子都去两次非并利用摩根定律可得: 这样就完成了该问题的逻辑转化。 根据前面对该实验分析所得到的逻辑表达式可以发现,输入变量为A、B、C、D,但是在后面的逻辑运算中它们的“非”都用到了,也就是第一步我们要得到这四个变量的非。然后再进行后面的与非运算。三个输出变量的状态也可以用三个灯泡来表示,这里采用了三个颜色不同的灯泡用以区分。到这里,逻辑图就可以很容易的用Multisim软件模拟出来。 其中,最上面的X1灯泡亮时,表示输入数字在0≤X≤4范围内,X2亮时表示输入数字在5≤X≤9范围内,X3亮时表示输入数字在10≤X≤15范围内。这里还是用了四个开关,每个开关“开”表示1,“关”表示0,四个开关以ABCD的顺序来表示四位二进制数。四位二进制数同上,也有16中情况,这里不做一一展示,只对每一类给出一种模拟结果。

【最全最详细】数据分析与挖掘实验报告

《数据挖掘》实验报告 目录 1.关联规则的基本概念和方法 (2) 1.1数据挖掘 (2) 1.1.1数据挖掘的概念 (2) 1.1.2数据挖掘的方法与技术 (2) 1.2关联规则 (3) 1.2.1关联规则的概念 (3) 1.2.2关联规则的实现——Apriori算法 (4) 2.用Matlab实现关联规则 (6) 2.1Matlab概述 (6) 2.2基于Matlab的Apriori算法 (7) 3.用java实现关联规则 (11) 3.1java界面描述 (11) 3.2java关键代码描述 (14) 4、实验总结 (19) 4.1实验的不足和改进 (19) 4.2实验心得 (20)

1.关联规则的基本概念和方法 1.1数据挖掘 1.1.1数据挖掘的概念 计算机技术和通信技术的迅猛发展将人类社会带入到了信息时代。在最近十几年里,数据库中存储的数据急剧增大。数据挖掘就是信息技术自然进化的结果。数据挖掘可以从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的,人们事先不知道的但又是潜在有用的信息和知识的过程。 许多人将数据挖掘视为另一个流行词汇数据中的知识发现(KDD)的同义词,而另一些人只是把数据挖掘视为知识发现过程的一个基本步骤。知识发现过程如下:·数据清理(消除噪声和删除不一致的数据) ·数据集成(多种数据源可以组合在一起) ·数据转换(从数据库中提取和分析任务相关的数据) ·数据变换(从汇总或聚集操作,把数据变换和统一成适合挖掘的形式) ·数据挖掘(基本步骤,使用智能方法提取数据模式) ·模式评估(根据某种兴趣度度量,识别代表知识的真正有趣的模式) ·知识表示(使用可视化和知识表示技术,向用户提供挖掘的知识)。 1.1.2数据挖掘的方法与技术 数据挖掘吸纳了诸如数据库和数据仓库技术、统计学、机器学习、高性能计算、模式识别、神经网络、数据可视化、信息检索、图像和信号处理以及空间数据分析技术的集成等许多应用领域的大量技术。数据挖掘主要包括以下方法。 神经网络方法:神经网络由于本身良好的鲁棒性、自组织自适应性、并行处理、分布存储和高度容错等特性非常适合解决数据挖掘的问题,因此近年来越来越受到人们的关注。典型的神经网络模型主要分3大类:以感知机、bp反向传播模型、函数型网络为代表的,用于分类、预测和模式识别的前馈式神经网络模型;以hopfield的离散模型和连续模型为代表的,分别用于联想记忆和优化计算的反馈式神经网络模型;以art模型、koholon模型为代表的,用于聚类的自组织映射方法。神经网络方法的缺点是"黑箱"性,人们难以理解网络的学习和决策过程。 遗传算法:遗传算法是一种基于生物自然选择与遗传机理的随机搜索算法,是一种仿生全局优化方法。遗传算法具有的隐含并行性、易于和其它模型结合等性质使得它在数据挖掘中被加以应用。sunil已成功地开发了一个基于遗传算法的数据挖掘工具,利用该工具对两个飞机失事的真实数据库进行了数据挖掘实验,结果表明遗传算法是进行数据挖掘的有效方法之一。遗传算法的应用还体现在与神经网络、粗糙集等技术的结合上。如利用遗传算法优化神经网络结构,在不增加错误率的前提下,删除多余的连接和隐层单元;用遗传算法和bp算法结合训练神经网络,然后从网络提取规则等。但遗传算法的算法较复杂,收敛于局部极小的较早收敛问题尚未解决。 决策树方法:决策树是一种常用于预测模型的算法,它通过将大量数据有目的分类,从

嵌入式图形界面设计_综合实验报告

嵌入式图形界面设计报告 班级:计算机科学与技术15-2班 小组成员:刘航征、安宝、曲晗羽 杨祎涵、张振、李雪辰 2017年12月

一、前言 天气预报(测)或气象预报(测)是使用现代科学技术对未来某一地点地球大气层的状态进行预测。从史前人类就已经开始对天气进行预测来相应地安排其工作与生活(比如农业生产、军事行动等等)。今天的天气预报主要是使用收集大量的数据(气温、湿度、风向和风速、气压等等),然后使用目前对大气过程的认识(气象学)来确定未来空气变化。由于大气过程的混乱以及今天科学并没有最终透彻地了解大气过程,因此天气预报总是有一定误差的。 最传统的数据是在地面或海面上通过专业人员、爱好者、自动气象站或者浮标收集的气压、气温、风速、风向、湿度等数据。世界气象组织协调这些数据采集的时间,并制定标准。这些测量分每小时一次(METAR)或者每六小时一次(SYNOP)。 该项目为一款天气预报软件,基于Qt5开发,具有查询指定城市天气、显示当天天气状况以及未来四天天气大致状况的主要功能,次要功能为更换软件皮肤,显示当天感冒指数等功能。 软件预览图: 二、选用的技术基本说明 1、Qt JSON操作 QJsonDocument QJsonDocument 类用于读和写JSON 文档。 一个JSON 文档可以使用QJsonDocument::fromJson() 从基于文本的表示转化为QJsonDocument,toJson() 则可以反向转化为文本。解析器非常快且高效,并将JSON 转换为Qt 使用的二进制表示。 已解析文档的有效性,可以使用!isNull() 进行查询。 如果要查询一个JSON 文档是否包含一个数组或一个对象,使用isArray() 和isObject()。包含在文档中的数组或对象可以使用array() 或object() 检索,然后读取或操作。

可视化实验报告

cout<<"It is in fun 2."<

cout<<"It is back in fun 2."<

1.2.2所谓函数重载是指同一个函数名可以对应多个函数的实现,函数重载允许一个程序内声 明多个名称相同的函数,这些函数可以完成不同的功能,并可以带有不同的类型,不同数目的 参数及返回值。 123函数重载时,要求函数的参数个数或参数类型不同。 124操作符重载是将C++语言中已有的操作符赋予新的功能,但与操作符本来含义不冲 突,使用时只需要根据操作符出现的位置判断其具体执行哪一种功能使用操作符重载时, 必须用以下方式来声明函数: 函数类型operator # (形参表) 2.程序注释与运行结果: #include 〃调用C++中的头文件 void fun 1(),fun2(),fun3();〃定义了 3 个函数 void ma in()〃主函数 { cout?"lt is in mai n. "<〃调用C++中的头文件int add(i nt,i nt);〃定义一个函数 double add(double,double);〃定义一个函数void ma in()〃主函数 { cout<

实验三选数据选择器实验报告

实验三选数据选择器实 验报告 集团公司文件内部编码:(TTT-UUTT-MMYB-URTTY-ITTLTY-

实验三、八选一数据选择器 一、实验目的: 1.熟悉Quartus II6.0软件的使用和FPGA设计流程 2.用VHDL语言进行八选一数据选择器的设计 二、实验步骤: 一.建立文件夹:在D盘“xingming”的文件夹下建立一个名为“choice8”的文件夹。 二.建立新工程 1.双击桌面上Quartus II6.0 的图标,启动该软件。 2.通过File => New Project Wizard… 菜单命令启动新项目向导。在 随后弹出的对话框上点击Next按钮,在 What is the working directory for this project 栏目中设定新项目所使用的路径:D:\xingming\choice8;在 What is the name of this project 栏目中输入新项目的名字:choice8,点击 Next 按钮。在下一个出现的对话框中继续点击Next,跳过这步。 3.为本项目指定目标器件:选择器件系列为ACEX1K ,选择具体器件为 EP1K30TC144-3 1728 24576 ,再点击Next。在弹出的下一对话框中继续点击Next ,最后确认相关设置,点击Finish按钮,完成新项目创建。 三.设计输入 1.建立一个VHDL文件。通过 File => New 菜单命令,在随后弹出的对 话框中选择 VHDL File选项,点击 OK 按钮。通过 File => Save As 命令,将其保存,并加入到项目中。 2.在VHDL界面输入8选1数据选择器程序,然后通过File => Save

数据分析与挖掘实验报告

数据分析与挖掘实验报告

《数据挖掘》实验报告 目录 1.关联规则的基本概念和方法 (1) 1.1数据挖掘 (1) 1.1.1数据挖掘的概念 (1) 1.1.2数据挖掘的方法与技术 (2) 1.2关联规则 (5) 1.2.1关联规则的概念 (5) 1.2.2关联规则的实现——Apriori算法 (7) 2.用Matlab实现关联规则 (12) 2.1Matlab概述 (12) 2.2基于Matlab的Apriori算法 (13) 3.用java实现关联规则 (19) 3.1java界面描述 (19) 3.2java关键代码描述 (23) 4、实验总结 (29) 4.1实验的不足和改进 (29) 4.2实验心得 (30)

1.关联规则的基本概念和方法 1.1数据挖掘 1.1.1数据挖掘的概念 计算机技术和通信技术的迅猛发展将人类社会带入到了信息时代。在最近十几年里,数据库中存储的数据急剧增大。数据挖掘就是信息技术自然进化的结果。数据挖掘可以从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的,人们事先不知道的但又是潜在有用的信息和知识的过程。 许多人将数据挖掘视为另一个流行词汇数据中的知识发现(KDD)的同义词,而另一些人只是把数据挖掘视为知识发现过程的一个基本步骤。知识发现过程如下: ·数据清理(消除噪声和删除不一致的数据)·数据集成(多种数据源可以组合在一起)·数据转换(从数据库中提取和分析任务相关的数据) ·数据变换(从汇总或聚集操作,把数据变换和统一成适合挖掘的形式) ·数据挖掘(基本步骤,使用智能方法提取数

据模式) ·模式评估(根据某种兴趣度度量,识别代表知识的真正有趣的模式) ·知识表示(使用可视化和知识表示技术,向用户提供挖掘的知识)。 1.1.2数据挖掘的方法与技术 数据挖掘吸纳了诸如数据库和数据仓库技术、统计学、机器学习、高性能计算、模式识别、神经网络、数据可视化、信息检索、图像和信号处理以及空间数据分析技术的集成等许多应用领域的大量技术。数据挖掘主要包括以下方法。神经网络方法:神经网络由于本身良好的鲁棒性、自组织自适应性、并行处理、分布存储和高度容错等特性非常适合解决数据挖掘的问题,因此近年来越来越受到人们的关注。典型的神经网络模型主要分3大类:以感知机、bp反向传播模型、函数型网络为代表的,用于分类、预测和模式识别的前馈式神经网络模型;以hopfield 的离散模型和连续模型为代表的,分别用于联想记忆和优化计算的反馈式神经网络模型;以art 模型、koholon模型为代表的,用于聚类的自组

实验报告四图像锐化处理

姓名:学号:班级: 实验日期:实验成绩: 一.实验目的 (1)学习如何用锐化处理技术来加强图像的目标边界和图像细节,对图像进行梯度算子、拉普拉斯算子、Sobel算子设计,使图 像的某些特征(如边缘、轮廓等)得以进一步的增强及突出。(2)分析模板大小对空域锐化滤波的影响,比较不同滤波器的处理效果,分析其优缺点。 二.实验原理 锐化处理的主要目的是突出灰度的过度部分,在空间域中,均值滤波类似于积分,那锐化滤波类似于微分,微分算子的响应程度与图像在用算子操作的这一点突变程度成正比,图像积分模糊了图像,同时起到了消除噪声的作用;图像微分增强边缘和其它突变(如噪声),而削弱灰度变换缓慢的区域,laplacian算子类似于二阶微分,强调的是图像灰度级剧烈变换的部分,而sobel算子类似于一阶微分,强调的是图像灰度级缓慢变化的部分。 三.实验内容及结果

(1)选择一副图像,分别使用拉普拉斯算子、sobel算子对图像进行锐化滤波,并观察滤波效果。 图 1 laplacian及sobel算子处理图像 (2)选择一副图像,构造一个中心系数为-24的5×5的类似于拉普拉斯模板对图像进行锐化,与上述拉普拉斯算子的结果相比,是否能得到更加清晰的结果? 图 2 不同大小laplacian模板处理原图及二值图 四.结果分析

(1)观察图一,可以发现对原图进行sobel算子运算后,原图阶梯的边缘细节被突显出来了,而每个阶梯灰度级保持不变的背景则没了,全变黑了,而对原图进行laplacian算子运算后,边缘部分则只剩下些杂乱无章的点了,基本是在sobel算子运算过后筛选出来的缓慢突变边缘上的一些突变更快的点。如果把sobel算子比作是一阶微分就不难理解它是对原图的缓慢边缘变化部分,而把laplacian算子比作是二阶微分的话,就是原图的剧烈突变部分,由于原图像的阶梯边缘在灰度级上是缓慢过度的,所以使用sobel算子边缘的突出效果更明显,而laplacian算子无论模板大小为多大,都不能清晰的显示出边缘。至于背景为什么会变黑是因为算子模板中有负因子,当计算的出来的值为负数时,自动标定其为0,也就是黑色。 (2)观察图二,可以发现对原图使用无论多大的laplacian模板,效果都很差,原因就是上述提到的原图像的边缘灰度级是缓慢变化的,对原图灰度级二值化处理,由于灰度值大小只有0和1两个值,阶梯边缘两边的值分别为0和1,这样边缘突变就成了一个单位的剧烈突变,所以3*3的laplacian算子效果就和上述的sobel算子效果相似,而当增加laplacian算子的大小到5*5时,边缘检测效果更加明显。正印证了微分算子的响应程度与图像在用算子操作的这一点突变程度成正比这一原理。

相关主题
文本预览
相关文档 最新文档