精编资料了解图形学与图像处理的发展,应用以及当前国际国内研究的热点和重要成果;理解图形学与图像处理对图元以及图像的分析与理解的以及二维与三维形状重建等;...图形,图像计算机图形学与图像处理教案学时:36,其中讲授26学时,上机10学时。
适用专业:信计专业与数学专业。
先修课程:高等数学、线性代数、数据结构、VC++或者C#一、课程的性质、教育目标及任务:计算机图形学与图像处理实际上是两门课程的一个综合。
这是一门研究图形学与图像处理的基本理论、方法及其在智能化检测中应用的学科,是计算机科学与技术等电子信息类本科专业的专业课。
本课程侧重于对图形学的基本图元的基本生成,以及图像处理中对图像在空间域与频率域的基本处理算法的研究。
并对图形学与图像处理基本理论和实际应用进行系统介绍。
目的是使学生系统掌握图形学与图像处理的基本概念、原理和实现方法,学习图形学与图像处理分析的基本理论、典型方法和实用技术,具备解决智能化检测与控制中应用问题的初步能力,为在计算机视觉、模式识别等领域从事研究与开发打下扎实的基础。
二、教学内容基本要求:1.了解图形学与图像处理的发展、应用以及当前国际国内研究的热点和重要成果;2.理解图形学与图像处理对图元以及图像的分析与理解的以及二维与三维形状重建等;3.掌握图形学与图像处理中最基本、最广泛应用的概念、原理、理论和算法以及基本技术和方法;4.能够运用一门高级语言编写简单的图形学与图像处理软件,实现各种图形学与图像处理的算法。
三、主要教学内容:学习图形学的基本概念,了解光栅显示系统的原理;掌握基本图元的生成算法:直线的生成算法、曲线的生成算法、多边形的生成算法;掌握区域填充、线段剪裁以及多边形的剪裁;掌握图元的几何变换、以及投影的基本理论。
了解图像的概念;图像数字化的基本原理:取样、量化、数字图像的表示;线性系统理论在图像变换,滤波中的应用:线性系统理论、离散图像变换、小波变换;图像编码压缩、增强,以及复原的基本方法:无失真压缩、有失真压缩、变换编码、压缩标准、图像滤波原理、复原滤波器、直方图运算、点运算;图像识别的基本原理和方法:图像分割、图像分析、图像分类;四、学时安排总课时72学时,图形学36学时,其中包括26个学时讲授,10个学时上机;图像处理36学时,其中包括26个学时讲授,10个学时上机;五、参考书目:(1),<Computer Graphics with OpenGL, Second Edition> Donald Hearn & M,Pauline Baker(2),< Computer Graphics with OpenGL, Third Edition> Donald Hearn & M,Pauline Baker(3),计算机图形学实用技术陈元琰,张晓竞,科学出版社(4),计算机图形学倪明田,吴良芝北京大学出版社(5) <<Digital Image Processing( second Edition)>>, Rafael C. Gonzalez & Richard E. Woods. Publishing House of Electronics Industry.(6) << Image Processing ,Analysis, and Machine Vision ( second Edition)>> ,Milan Sonka, V aclav Hlavac. Publishing House of People Post第一讲图形学基本概念重点:了解图形学概念;掌握图形学中的几个概念:分辨率,光栅,扫描线,像素,帧缓冲器;了解图形学的基本用途;掌握图形学光栅扫描显示系统的工作原理;难点:光栅扫描显示系统的工作原理;教学方法:课堂讨论式教学方法,基于问题式以及启发式教学方法相结合。
双语教学。
主要内容:1,什么是计算机图形学?2,计算机图形学的主要用途是什么?3,计算机图形学中的一些基本概念:什么是分辨率?什么是光栅?什么是光栅扫描系统的扫描线?什么是像素?什么是帧缓冲器?什么是刷新率?图1.1 扫描线图1.2 像素点4, 光栅扫描系统扫描显示系统的工作原理是什么?图1.3 光栅扫描系统扫描显示系统5,光栅扫描系统扫描显示系统的五个组成部分是什么?水平偏转板 垂直偏转板 灯丝 阴极聚焦系统 加速系统电平控制器 石墨层吸收轰击磷粉涂层后逃逸在荧光屏内的杂撒电子送至第二阳极,形成电流回路。
荧光纷(磷粉涂层)电子枪 偏转系统用于磁偏转系统用于静电偏转系统荧光屏偏转的电子束图1.4 光栅扫描系统扫描显示系统的各个组成部分作业:1,视频控制器的工作原理是什么?2,显示控制器的工作原理是什么?第二讲直线段的生成算法重点:掌握图形学中直线段的几个画法,(1)DDA算法;(2)中点画线算法;(3)Bresenham 画线算法;难点:对这三个画线算法的理解与实现;教学方法:课堂讨论式教学方法,基于问题式以及启发式教学方法相结合。
双语教学。
主要内容:1.概念扫描变换:确定最佳逼近图形的象素集,并用指定属性写象素;2. 直线段的扫描转换算法数值微分法(DDA);中点法;Bresenham法(1) DDA法这里, )(i i x f y =。
假设在i x 列已取),(,r i i y x ,在1+i x 列真正交点为),(!1++i i y x ,象若 d<0, 则取P1为下一象素,而且再下一象素的判别式为若d>=0, 则应取P2为下一象素,而且下一象素的判别式为我们这里讨论的是按顺时针方向生成第二个八分圆。
则第一个象素是(0, R ),判别式d 的初始值为 MidPointCircle(int r int color) { int x,y; float d;x=0; y=r; d=1.25-r;circlepoints (x,y,color); while(x<=y){ if(d<0) d+=2*x+3;else { d+=2*(x-y)+5; y--;} x++;circlepoints (x,y,color); } }• 为了进一步提高算法的效率,可以将上面的算法中的浮点数改写成整数,将乘法运算改成加法运算,即仅用整数实现中点画圆法。
• 使用e=d-0.25代替d • e0=1-R作业:1, 推导中点画椭圆的算法;2, 推导Breshenham 画圆的算法;32)5.0()2()5.0,2('222++=--++=-+=p p p p p x d R y x y x F d 5)(2)5.1()2()5.1,2('222+-+=--++=-+=p p p p p p y x d R y x y x F d (,.).d F R R=-=-0105125a)基本思想:i.按扫描线顺序,计算扫描线与多边形的相交区间,再用要求的颜色显示这些区间的象素,即完成填充工作。
b)对于一条扫描线填充过程可以分为四个步骤:i.(1)求交(2)排序ii.(3)配对(4)填色初始化活性边表AET为空;for (各条扫描线i ){ 把新边表NET [i] 中的边结点用插入排序法插入AET表,使之按x坐标递增顺序排列;遍历AET表,把配对交点区间(左闭右开)上的象素(x, y),用drawpixel (x, y, color) 改写象素颜色值;遍历AET表,把y max= i 的结点从AET表中删除,并把y max > i 结点的x值递增 x;若允许多边形的边自相交,则用冒泡排序法对AET表重新排序;}} /* polyfill */⑤问题及其求解问题1:扫描线与多边形顶点相交,交点的取舍。
·扫描线与多边形相交的边分处扫描线的两侧,则计一个交点,如P1,P3。
·扫描线与多边形相交的边分处扫描线同侧,且 y i<y i-1,y i<y i+1,则计2个交点(填色),如P2,P5。
若 y i>y i-1,y i>y i+1,则计0个交点(不填色),如P6,P4。
·扫描线与多边形边界重合 (当要区分边界和边界内区域时需特殊处理)。
问题2:多边形边界搜索 (不同于区域内的颜色),最小内环搜索。
#define FALSEOedge-mark-fill(polydef, color)多边形定义 polydef; int color;{ 对多边形polydef 每条边进行直线扫描转换;inside = FALSE;for (每条与多边形polydef相交的扫描线y )for (扫描线上每个象素x ){ if (象素 x 被打上边标志)inside = ! (inside);if (inside!= FALSE)drawpixel (x, y, color);else 例:正方形内切n个圆drawpixel (x, y, background);}2,区域填充算法•区域指已经表示成点阵形式的填充图形,它是象素的集合。
•区域可采用内点表示和边界表示两种表示形式。
•区域可分为4向连通区域和8向连通区域。
•区域填充指先将区域的一点赋予指定的颜色,然后将该颜色扩展到整个区域的过程。
区域填充算法要求区域是连通的••4向连通区域和8向连通区域BoundaryFill4 (x,y-1, boundarycolor,newcolor);BoundaryFill4 (x-1,y, boundarycolor,newcolor);BoundaryFill4 (x+1,y, boundarycolor,newcolor);}}3 区域填充的扫描线算法•算法步骤:–首先填充种子点所在扫描线上的位于给定区域的一个区段–然后确定与这一区段相连通的上、下两条扫描线上位于给定区域内的区段,并依次保存下来。
–反复这个过程,直到填充结束。
(1)初始化:堆栈置空。
将种子点(x,y)入栈。
(2)出栈:若栈空则结束。
否则取栈顶元素(x,y),以y作为当前扫描线。
(3)填充并确定种子点所在区段:从种子点(x,y)出发,沿当前扫描线向左、右两个方向填充,直到边界。
分别标记区段的左、右端点坐标为xl和xr。
(4)并确定新的种子点:在区间[xl,xr]中检查与当前扫描线y上、下相邻的两条扫描线上的象素。
若存在非边界、未填充的象素,则把每一区间的最右象素作为种子点压入堆栈,返回第(2)步。
上述算法对于每一个待填充区段,只需压栈一次;因此,扫描线填充算法提高了区域填充的效率。
作业:1请回答扫描线填充算法与区域填充算法的区别是什么?第五讲反混淆重点:掌握图形学中混淆的定义,造成混淆的原因;掌握反混淆的方法:提高分辨率与去掉信号中的高频成分。