
学习《软件工程》心得和体会
软程学习心得在期的软件工程课程的学习中,我们学习了十一章容。
第一章软软件工程的概念,这一章主要讲解的是一些概念性和基础性的内容,例如软件的概念、特性,软件危机的主要表现,软件工程的概念以及软件生存期、典型生存期模型等等。
第二章软件工程方法与工具,这一章主要对软件工程方法进行介绍,包括三种方法:传统方法、面向对象方法、形式化方法。
还引出了工具UML。
第三章软件需求获取与结构化分析方法,本章详细介绍了需求获取与需求分析阶段的任务以及结构化分析方法,画分层的数据流图、E-R图以及状态图式本节的重点。
第四章结构化分析方法,这一章重点讲解了使用变换型映射方法和事务型映射方法生成初始的模块结构以及模块结构的改进。
第五章编码,这一章重点讲解了编码的风格及规范,还告诉我们编码规范说带来的好处,并告诫我们将来一点要形成好的编码风格。
第六章软件测试方法,本章讲解了软件测试相关的概念及重要性,软件测试与开发各个阶段的关系;还介绍了白盒测试技术以及黑河测试技术。
第七章统一建模语言UML概述,本章详细介绍了UML的基本模式、事物、关系及建模时用到的各种图进行了介绍。
第八章面向对象分析,这一章主要讲解了面向对象分析的3种模型,包括功能模型、静态模型和动态模型。
第九章软件体系结构与设计模式,本章对软件体系结构的基本概念、典型风格等进行了讲解。
第十章面向对象设计,本章的重点是对面向对象分析时建立的对象模型进行调整和细化。
第十一章软件维护,本章主要介绍软件维护的任务、软件维护活动以及软件维护方法进行了介绍。
要学习软件工程,学会如何系统的思考,以及养成良好的编码习惯,想学好软件工程,就必须知道软件工程的目标、过程和原则: 软件工程目标:生产具有正确性、可用性以及开销合宜的产品。
正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。
开销合宜是指软件开发、运行的整个开销满足用户要求的程度。
这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
软件工程过程主要包括开发过程、运作过程、维护过程。
它们覆盖了需求、设计、实现、确认以及维护等活动。
需求活动包括问题分析和需求分析。
问题分析获取需求定义,又称软件需求规约。
需求分析生成功能规约。
设计活动一般包括概要设计和详细设计。
概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。
详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。
实现活动把设计结果转换为可执行的程序代码。
确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。
维护活动包括使用过程中的扩充、修改与完善。
伴随以上过程,还有管理过程、支持过程、培训过程等。
软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
我们学习了详细设计的方法,其原则是过程描述是否易于理解、复审和维护,进而过程描述能够自然地转换成代码,并保证详细设计与代码完全一致。
包括程序流程图、N-S图、PAD图、HIPO图程序流程图:程序流程图又称之为程序框图,它是软件开发者最熟悉的一种算法表达工具。
它独立于任何一种程序设计语言,比较直观和清晰地描述过程的控制流程,易于学习掌握。
在流程图中只能使用下述的五种基本控制结构:顺序型;选择型;while型循环;until型循环;多情况型选择。
N-S图:一种符合结构化程序设计原则的图形描述工具,称为盒图,又称为N-S图。
在N-S图中,为了表示五种基本控制结构,规定了五种图形构件。
顺序型;选择型;WHILE重复型;UNTIL重复型;多分支选择型。
PAD图:它是用结构化程序设计思想表现程序逻辑结构的图形工具。
PAD也设置了五种基本控制结构的图示,并允许递归使用。
HIPO图:HIPO图是由一组IPO图加一张HC图组成。
它是美国IBM公司在软件设计中使用的主要表达工具。
HC图既是层次图,用于表示软件的分层结构。
HC图中的每一个模块,均可用一张IPO图来描述。
IPO 图由输入、处理和输出三个框组成,需要时还可以增加一个数据文件框,这种图形的优点,是能够直观地显示输入—处理—输出三者之间的联系。
还有测试方法:按照测试过程是否在实际应用环境中来分,有静态分析与动态测试。
测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。
静态分析技术:不执行被测软件,可对需求分析说明书、软件设计说明书、源程序做结构检查、流程分析、符号执行来找出软件错误。
动态测试技术:当把程序作为一个函数,输入的全体称为函数的定义域,输出的全体称为函数的值域,函数则描述了输入的定义域与输出值域的关系。
还学习了其他很多工具、语言、方法等,虽然不是都学得很透彻,但我相信在今后的学习中一定会慢慢的完善的。
软件工程对于初学者来说,知识基础较薄弱,对一些应用操作、概念、工具方法等理解起来较为困难,要能从整体概念上较好地理解和把握、学好软件工程,不是仅仅把几本专业书籍细致地看几遍,然后上机练习几次就可以成功,学习过程中要注意多看多练要注意结合实际,更要多思考,面对错误不要一范就问,要尝试自己去解决。
但是还要注意什么都学,肯定是什么都学不透的,要集中精力打攻坚战,学习软件工程首先要明白自己的学习目标究竟是什么,根据自己的实际工作出发,有针对性的在相应的学习方向上进行提高,制定出详细的学习规划。
还要注意与其他科目的相辅相成,就像我们在学习面向对象分析的时候要结合大一学习的面向对象及其方法学这一专业科目进行研究拓展;在学习语言时,要看看与C语言的联系,多思多想,把从各个科目学到的知识通汇贯通。
在软件工程的学习中,我了解到了软件并非是一些代码这么简单,在开发软件的过程中,编写代码的工作量其实只占不到所有工程量的30%,而后期的管理和维护更是占了60%到80%之多。
一个完整的项目规划须包括,软件的定义,可行性分析报告,项目开发计划,软件需求说明书,概要设计说明书,详细设计说明书,用户操作手册,测试计划,测试分析报告,开发进度报告,项目开发总结报告,软件维护手册,软件问题报告,软件修改报告,等多个文档,每个文档都要上级验收审查,而文档数量众多,要做好这点真的不是很容易,而恰恰写好文档正能保证完成软件工程其中一个目的的关键,既研究如何用最小的开销做出生存期较长的软件,再加上各个阶段都要进行周密的策划、详细的分工部署和人员安排,且各阶段要据具体情况不断的反复才能达成,所以代码只是开发软件这个浩大的工程的一个小小的过程。
而编码的学习中,我更了解到形成自己独特的规范的编码风格是非常重要的事。
因为这影响到了软件后期繁重的维护,大家都要阅读你的程序,如果你写的程序毫无规范可言,那么别人怎么能读懂你的程序
读不懂程序,维护又从何谈起呢
所以,我们在今后的学习中,一定要注意这方面的培养,在写程序的过程中,要逐步的在规范的基础上形成属于自己的风格,即方便自己的修改,也方便日后他人的阅读。
在学习中,我们还要注意比较三种方法的优缺点,例如:传统方法虽然使软件摆脱了混乱和无序,但其在适应需求变化的方面不够灵活,而且传统方法要么面向行为,要么面向数据,缺乏两者的有机结合。
而面向对象方法的程序设计和问题求解更符合人们日常自然的思维习惯,适合大型、复杂及交互性比较强的系统。
形式化方法则是一中基于形式化数学变换的软件开发方法,它可将系统的规格说明转换为可执行的程序。
在今后的学习中要注意多读书、多思考、多练习、多讨论,不断熟悉书本的基础,并以此为基础将其扩散开来,应用于今后的实践。
不断锻炼自己,向一名合格的程序设计师迈进。
软件项目管理心得体会
1、软件工程是一门指导软件开发和维护的工程学科,主要研究软件开发和维护的工程技术和软件项目管理等内容,其中涉及如何保证软件产品的质量和可靠性,如何提高软件开发效率和拥护满意度等。
2、软件工程目标:生产具有正确性、可用性以及开销合宜的产品。
正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。
开销合宜是指软件开发、运行的整个开销满足用户要求的程度。
这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
3、软件生产历经4大阶段分别为:程序设计阶段(1946-1956年)、软件开发阶段(1956-1968年)、软件工程阶段(1968年以后)、计算机辅助软件工程阶段4、常见的软件过程模型:边改边做模型、瀑布模型、演化模型、增量迭代模型、喷泉模型5、软件过程的研究,标志着人们为解决软件危机问题,把关注的焦点由编程转移到了软件开发的整个过程,包括分析、设计、编程和测试4个核心阶段和需求调研、运行与维护两个延伸阶段说明软件质量、软件开发效率、软件的可靠性、可维护性问题涉及了软件生存周期的所有阶段。
6、软件生存周期:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存周期。
软件的生存周期可分为八个阶段:①问题定义;②可行性研究;③需求分析;④总体(概要)设计;⑤详细设计;⑥编码与单元测试;⑦综合测试;⑧软件维护。
7、需求分析:系统开发前期需求分析很重要,它是为了有效解决用户问题的需要进行的一项工程活动,所需要考虑的需求问题是功能需求、数据需求、性能需求和接口需求,开发者承担分析任务,核心是用户。
其步骤有三个:①获取客户需求,客户泛指某个人或机构部门等,一般方法是调查,包括访谈、座谈、问卷、跟班和收集资料,需求规约可表达用户的软件价值。
②建立需求模型,它是用户需求的图解,一些常用的模型有:业务树图、用例图、活动图。
分别用于结构化需求建模、系统业务举例和反映系统工作流程。
③进行需求验证,要验证的主要内容有:有效性验证、一致性验证、完整性验证、现实性验证和可检验性验证。
。
。
。
感悟:了解了什么是“软件危机”,透过软件工程于解决“软件危机”的重要性、软件工程三条重要线索、软件工程知识体系函括内容及软件工程各类生存期模型,我对软件工程思想及“工程化”软件开发的流程有了较系统的了解,透过软件工程的起源,认识到:实现软件工业的产业化,软件工程必须是真正意义上的工程化。
从软件开发三条线索(开发、管理、改进)来看,软件开发的过程必须规范化(各阶段都必须形成相应文档;编码必须依照通用可读性严格遵照编程规范……);软件项目管理的核心是项目规划和项目跟踪控制,保证软件工程开发的成功完成,软件开发流程的规范化在软件项目中有着重要的作用,通过不断地优化和规范过程,企业可以提高软件生产能力。
从需求分析到维护,透过软件的开发流程具体实施的学习,我对软件项目开发的流程有了更深的理解,例如通过需求规格说明书、可行性研究说明书、数据库设计说明书、需求分析说明书、总体设计说明书、详细设计说明书等六份作业的完成虽然很不完善,但仍让我对需求分析建模和设计中用到的方法有了更好的理解并熟悉了六份文档的格式。
学了这门课才知道软件开发中每一阶段都有文档的产生,其管理与应用也是一门大学问……此外,这门课程里讲授了很多我以前从未接触过的方法和软件如UML模型、MVC模型、visio的强大绘图建模功能、这些知识不仅能应用于软件工程,也能应用于其他的很多领域,这门课结束了,但这些方面学习我还将继续的。
求 信息论与编码 学习心得
学习信息论与编码感想多媒体信息是未来人类获取信息最主要的载体,因此它已成为目前世界上技术开发和研究的热点。
视频信息作为多媒体信息中最被关注、数据量最大的一员,现在也正面临着一场其意义不亚于从模拟到数字的技术进步革新:从传统的矩形DCT变换编码到根据视频内容、划分对象、分别变换编码的新的编码方法。
一、传统的编码方式传统的视频编码是以视频信号的数字量为编码对象的,与视频信息的内容无关,无论是M-JPEG、MPEG-1还是MPEG-2,都是以DCT矩形变换块为变换编码单元,对DCT块内图像的亮度和色度进行特征取样,提取像素;采用帧间编码、运动估测技术,在参考帧帧内DCT编码的基础上,对DCT块内图像的像素特征进行差值预测编码。
基于矩形DCT编码的视频编码在设计思想上只考虑到对信号数据进行处理的需要(比如小的比特率以利于传输、高的比特率以保证质量),但未考虑视频信息--图像内容本身的含义和重要性,以及视频信息应用者的主观需求(比如部分内容的提取功能)。
另外,这种基?quot;块的压缩算法在低码率时容易产生方块效应和抽帧,大大缩小了视频信息的应用领域。
小波变换是一种新的变换编码方法,它与DCT变换相比,考虑到了视频信号对不同应用环境的自适应性(不同的清晰度与比特率),可以将基础图像层与增强图像层分离编码传输,用户可根据实际情况选择是否打开增强图像层。
但无论用户选择是或否,被传送的视频信息却都是一样的。
二、 基于内容对象的编码1、 VO与VOP概念的引入传统的视频编码方式是将整个视频信号作为一个内容单体来处理,其本身不可再分割,而这与人类对视觉信息的判别法则,也就是大脑对视神经导入的视觉信号的处理方法是完全不同的。
这就决定了我们不可能将一个视频信息完整的从视频信号中提取出来,比如:将加有台标和字幕的视频恢复成无台标、字幕的视频。
解决问题的惟一途径就是在编码时就将不同的视频信息载体--视频对象VO(Video Objects)区分开,独立编码传送,将图像序列中的每一帧,看成是由不同的VO加上活动的背景所组成。
VO可以是人或物,也可以是计算机生成的2D或3D图形。
VO具有音频属性,其属性赋值可能?quot;有或者是无。
但音频的具体内容数据是独立于视频编码、传输的。
VO概念的引入,更加符合人脑对视觉信息的处理方式,并使视频信号的处理方式从数字化进展到智能化。
提高了视频信号的交互性和灵活性,使得更广泛的视频应用和更多的内容交互功能成为可能。
现代图像编码理论指出,人眼捕获图像信息的本质是轮廓-纹理,即人眼感兴趣的是VO的一些表面特性,如形状、运动、纹理等。
VO的表面往往是不规则的、千变万化的,但可将其视为一定视角下,n个形状规则的、具有一定纹理的剖面的组合的连续运动,这些剖面的组合称为视频对象面VOP(Video Object Profile)。
VOP描述了VO在一定视角条件下的表面特性。
VOP的编码主要由两部分组成:一个是形状编码,另一个是纹理和运动信息编码。
VOP纹理编码和运动的预测、补偿在原理上同MPEG-2基本一致,而形状编码技术则是首次应用在图像编码领域。
2、新的编码技术合成VO的独立编码 在以前,2D或3D动画被看作是视频的一部分,并一概以视频的方法来处理。
实际上,根据合成VO的合成机理和特性,大部分合成VO都可以用通用的有关图形文本的多种表达方式来描述。
非复杂性合成VO将被视为一种独立于视频的数据类型来编码,并定义了其描述框架、通用的数据流结构和灵活的接口。
而复杂性合成VO和自然VO的编码方法,将采用以下的编码方法。
基于矩形窗口的VOP分割 考虑到与现有标准的兼容,目前已得到应用的VO编码技术,比如MPEG4,仍采用了基于矩形窗口的内容分割法。
编码时,首先利用像素特征统计,将每一个VOP都限定在一个矩形窗口内,称之为VOP窗口(VOP Window),取窗的原则为:长、宽均为16像素的整数倍(便于对现有标准的兼容和将来的扩展),同时保证VOP窗口中非VOP的宏块数目最少。
目前标准中的视频帧可认为是一个无VOP的特例,在编码过程中将形状编码模块屏蔽掉就可以了。
在一个VOP窗口内,VOP剖面的形状也是采用8×8像素的矩形形状。
针对不同的VOP,可以根据不同的应用场合和运动、变化的特点,采用固定的或可变的VOP帧频(即VOP刷新频率)。
矩形窗口分割法并不能体现VOP的具体形状信息。
为了确认采用矩形窗口分割法的VOP的形状信息,就引入了形状编码技术。
形状编码其实并不是什么新技术,它在计算机图形学、计算机视觉领域早有应用。
而目前的视频编码标准中的位图技术其实就是形状编码的简单特例。
位图采用矩阵的形式来表示二值(0或1)的形状信息,具有较高的编码效率和较低的运算复杂度。
VOP的形状信息有两类:边缘信息和灰度信息。
边缘信息用0、1来表示VOP的形状,0表示非VOP区域,1表示VOP区域。
对于包含一定透明度的VOP区域,可以用灰度信息(取值0~255之间)来表示透明程度,其中0表示完全透明,255表示完全不透明。
对于模糊边缘部分,可将其视为灰度信息从周围已知VOP区域的灰度值向0值的过渡区域,采用内插法确定其形状信息。
基于小波变换的VOP分割 基于矩形窗口的VOP分割依旧存在块效应问题,而基于小波变换的VOP分割则可以很好的解决这个问题,而且由于这种分割方法的本身就包含了VOP的形状信息,所以无需另对形状信息进行判别与编码。
基于小波变换的VOP分割方法是目前最为活跃的视频编码课题研究领域,各种算法不断的被发表,但基本上可以划分为两类方法:1、利用图像灰度特征分割:不同的图像具有不同的灰度分布,利用小波变换,将图像变换到小波域,产生各层、各子带图像。
小波变换后,大部分的能量是集中在低频子带图像上,即大面积的平均灰度区域信息主要在低频子带图像中体现。
根据信息论的原理,确定多个灰度阈值,可以将具有不同灰度的VOP从低频子带图像中分离。
同时再利用高频子带图像以及模糊数学模型,确定每一个VOP的边缘信息。
利用图像灰度特征分割的小波变换,是沿扫描方向的单方向变换。
2、利用图像纹理特征分割:纹理是一种局部特征反复出现的结果,它体现了图像的局部频域信息。
对于一幅数字图像,进行多方向的小波变换是可行的,比如对一帧画面进行垂直方向或对角线方向的小波变换。
经过多种小波变换后可得到不同方向的各子带图像,它们各自蕴涵着不同纹理的局部频谱信息和纹理走向等信息。
对具有相同频谱特征的图像局部进行聚类分析,并根据纹理频谱和纹理走向确定该聚类的纹理边缘。
根据信息论原理和运动估测,将运动矢量具有相关性的聚类二次归类于不同的对象(即VOP),并影射成不同灰度显示。
多级小波变换的结果最多可线性的影射成0~255灰度级显示。
进行小波变换的方向越多,各方向的夹角越小,图像分割也就越准确,但计算量也随之迅速膨胀。
根据局域纹理中心频率的变化自适应地选择小波变换的级数(几个方向的变换)和方向,有助于在图像分割的准确性和计算量之间达到平衡。
正如本文前面所述,人眼捕获图像信息的本质?quot;轮廓-纹理,故基于多方向小波变换的提取图像特征、分割纹理图像的方法符合人眼视觉生理的特点,是纹理图像分析的重要发展方向。
无论是哪一种方法,当得到不同VOP的不同灰度表示之后,通过类似于键技术的多通道处理,即可得到多个原始的彩色VOP。
目前实验表明,基于小波变换的图像分割在边界上仍有些模糊,但总体效果还是相当满意的,达到了分割纹理图像的目的。
VOP运动信息编码和运动补偿 人眼在观看图像时,会自动跟踪人所感兴趣的VOP。
即人看的不是时间轴上的信息,而是VOP的运动轨迹---光流轴上的信息。
光流轴是VOP上的一点在活动图像上的运动轨迹,它在不同的帧中位于不同的空间位置,其意义在于:VOP自身的各种变化都将映射于光流轴上的一点。
光流轴信息的独立编码将带来诸多好处:(1)在编码时,对于刚性VOP,由于它在运动中不会发生形状和纹理上的变化,故该VOP只需要完成一次采样、编码,而后就只需发出几个运动矢量指明它的光流轴即可;对于非刚性VOP,只需在发生变化时才需要重新采样、编码,这就使得不同的VOP采用不同的VOP帧频成为可能,将编码的数据率最低限度的降低。
(2)VOP在运动中的各种变化都将留迹于光流轴,当在进行运动补偿时,比如不同制式之间的转换或者慢动作的制作,就可以根据光流轴映射信息,采用内插法得出时间轴上某一确定点的VOP状态,达到无损转换的目的。
(3)在时间轴上,简单的将一个图像序列的两路信号叠加,随即噪波和图像的活动部分都得不到增强;若在光流轴上进行信号叠加,活动图像的降噪问题就得到了简单解决。
VOP的运动估测是指:分析两个或更多帧上的VOP,确定光流轴,以判断下一帧中VOP可能出现的位置。
VOP的运动补偿是指:根据VOP光流轴的取向和光流轴上VOP自身变化得映射信息,矫正VOP在时间轴上的运动矢量。
运动预测和运动补偿技术可以去除图像信息中的时间冗余成分,VOP的运动信息编码可视为从像素向任意形状的VOP的延伸。
纹理编码 在已得到实际应用的MPEG-4中,VOP的纹理编码基本上仍采用基于8×8像素块的DCT方法,有3种模式:帧内编码模式(I-VOP)、帧间预测编码模式(P-VOP)和帧间双向预测编码模式(B-VOP)。
编码时,对于完全位于VOP内的像素块,则采用经典的DCT方法;对于完全位于VOP之外的像素块则不进行编码;对于部分在VOP内,部分在VOP外的像素块则首先采用图像填充技术来获取VOP之外的像素值,之后再进行DCT编码。
依据视觉特性的纹理编码目前仍处于理论研究阶段,其目标是:建立常见纹理局部特征符号集,定义描述纹理分布、走向的多媒体语言。
以人脸为例:人脸定义参数(FDP)描述了特定人脸纹理形状模型与通用人脸模型之间的差别,通过接收到的各种FDP,能把通用的人脸模型变换成由其形状和纹理确定的特定人脸。
人脸动画参数(FAP)描述了特定的人脸表情与中性表情的变化关系,通过接收到的各种FAP能生成人脸的各种表情以及与声音同步的嘴唇活动等。
这样的合成编码不仅可极大地提高编码效率(可获得1kbps的超低码率),而且为制作新的人脸等对象提供了方便。
分级编码 多媒体的应用场合具有不同的信道带宽、处理能力、显示能力及用户需求,要求在解码端支持时域、空间及质量的上伸缩性,即分级编码。
分级编码可以通过视频对象层VOL(Video Object Layer)的数据结构来实现。
每一种分级编码都至少有2层VOL,低层称为基本层,高层称为增强层。
空间伸缩性可通过增强层强化基本层的空间分辨率来实现,因此在对增强层中的VOP进行解码之前,必须先对基本层中相应的VOP进行解码。
同样对于时域伸缩性,可通过增强层来增加视频序列中某个VO(特别是运动的VO)的帧率,使其与其余区域相比更为平滑。
三、 新的技术标准--MPEG 4首次采用VO编码技术的视频编码标准是由MPEG 4。
MPEG 4于1999年年初正式成为国际标准(标准号为ISO\\\/IEC 14496),在1999年12月的后继版本中增加了可变形、半透明视频对象及其工具的先进功能,它进一步提高了编码效率,并与第一版反向兼容。
1、MPEG 4标准的构成1) DMIF(The Dellivery Multimedia Integration Framework):多媒体传送整体框架协议。
MPEG-4标准将众多的多媒体应用集成于一个完整的框架内,旨在为多媒体通信及应用环境提供灵活的算法及工具,用于实现音视频数据的有效编码及更为灵活的存取。
它解决了多领域中多媒体应用个性化交互操作的问题。
2) 解码器:定义了MPEG-4系统特殊的解码模式(SDM),要求特殊的缓冲区和实时模式。
3) 音频编码:支持自然声音和合成声音,支持音频的对象特征。
4) 视频编码:支持自然和合成的视觉对象,合成的视觉对象包括2D、3D动画和人面部表情动画等。
5) 场景描述BIFS(Binary Format for Scene description):关于一组VO的时空结构关系的参数信息,主要描述了各VO在一具体背景下的相互关系与同步等问题,以及VO及其背景的知识产权保护等问题。
BIFS与VO对象特征信息的编码、传输是相对独立的。
场景描述信息编码及其的独立传输是实现用户端编辑操作的关键:在解码之后和场景合成之前,用户可以通过对BIFS参数的重新设置来对VO 进行多种编辑操作,如增减、缩放、平移,甚至一些特技效果。
下面的表格反映了MPEG体系的部分技术指标。
MPEG-4是高比率有损压缩(比如将一个9 GB的DVD视频压缩拷贝到只有700MB空间的CD-ROM上),其图像质量始终无法与MPEG-2相比。
当MPEG-4与MPEG-2的码率输出相同时,其质量仍稍逊于MPEG-2。
同时,MPEG 4对硬件的要求也较高。
事实上,我们注意到MPEG-4在保证令人满意的图像质量的情况下,更注重较低的数据率和灵活的交互功能。
2、MPEG 4编码器MPEG 4编码简化原理图如图一。
对于输入视频序列,通过分析确认n个视觉目的对象为编码对象,将其认定为n个VO(n=1,2,3…),对每一个VO编码后形成这个VO的VOP数据流。
VOP的编码包括对运动(采用运动预测方法)及形状、纹理(采用变换编码方法)的编码。
由于VOP具有任意形状,因此要求编码方案可以处理形状(Shape)和透明(Transparency)信息,这就是与只能处理矩形帧序列的现有视频编码标准的根本区别。
在MPEG-4中,矩形帧被认为是VOP的一个特例,这时编码系统不用处理形状信息,退化为类似于MPEG-1、MPEG-2的传统编码系统,同时也实现了与现有标准的兼容。
除去VO的其余图像部分--背景,仍采用传统的矩形DCT变换编码;VO场景描述信息(VO自身信息,如VO对象的知识产权、和VO间的位置、逻辑关系等)也要进行编码,最后和VOP流、背景一起送入MPEG 4帧复合器,生成MPEG 4流输出。
需指出的是:在VO分割后,每一个VO都需要一个VOP编码通道,在图一中只画出了一个。
多个VOP帧发生器的输出在MPEG 4帧复合器中可实现灵活地多路复用编码或同步并行传输编码,以适应各种传输环境和要求。
MPEG 4解码是以上编码过程的逆过程。
可以看出,独立于背景的VO编码可以实现接收端的用户对VO对象进行选择性地操作。
3、MPEG 4视频编码功能与特点MPEG 4标准的制定有两个目标:低比特率的多媒体通信和多工业的多媒体通信的综合。
即MPEG-4遵循灵活的编码工具框架体系,设计了一个开放的编码系统,对于不同的应用采用不同的编码算法,以达到低比特率通信的目标。
MPEG-4解码器是可编程的,相应的解码信息可与内容本身一起传输下载。
与现有的MPEG-1和MPEG-2视频压缩相比,MPEG-4视频有一些重要的改进:1)基于内容的交互功能: MPEG-4提供了全新的交互方式,根据制作者的具体自由度设计,在有限的时间内可实现对多媒体VO的时域随机存取(从不同的源获取内容或向不同的源发送内容)、快速搜索、改变场景的视角、改变场景中物体的位置、大小和形状,或对该对象进行置换甚至清除。
2)支持自然及合成信息的混合编码(NHC:Synthetic and Natural Hybrid Coding):MPEG-4支持合成信息的编码,可对合成的VO及其活动信息进行参数化描述。
对于频繁出现的视觉对象则分别定义了它们的纹理形状和动画参数。
3)高效编码:包括视频VO数据的高效编码和多个并发数据的有效同步编码。
4)基于内容的伸缩性:是指分级编码后,纹理、图像和视频基于内容的伸缩性,视频序列中时域、空间及质量的伸缩性,表现为时域实时或非实时、数据率大小及重建的图像质量上。
5)可变的最终输出:不同的码率意味着支持不同的功能集。
功能集的底层是VLBV核心(VLBV:Very Low Bit Rate Video),它为最低达5-64kbits\\\/s视频操作与应用提供算法与工具,支持较低的空间分辨率(低于352×288像素)和较低的帧频(低于15Hz)。
VLBV核心功能包括:矩形图像序列的有效编码、多媒体数据库的搜索和随机存取。
MPEG-4的HBV(HBV: High Bit Rate Video,范围在64kbits\\\/s-4Mbits\\\/s之间)同样支持上述功能,但它同时还支持较高的空间与时间分辨率。
其输入可以是ITU-R 601的标准信号,因此其典型应用为数字电视广播与交互式检索。
与MPEG-1和MPEG-2相比,MPEG-4的特点是其更适于交互式AV服务以及远程监控。
MPEG-4是第一个允许用户端操作的的视频编码标准。
MPEG 4的特点非常适合于互联网上的交互式影视服务:可适应各种应用终端的物理网络环境,可实现对视音频内容的交互操作,具有下载解码能力(在一定的硬件基础上,可下载解码工具,对不同编码方式的内容进行解码处理)。
MPEG-4的设计目标还有更广的适应性和可扩展性:因特网多媒体应用、交互式视频游戏、实时可视通信、交互式存储媒体应用、广播电视、演播室技术及电视后期制作、多媒体内容存储和检索、采用面部动画技术的虚拟会议、多媒体邮件、移动通信条件下的多媒体应用、可视化合作实验室场景应用、远程视频监控、通过ATM网络等进行的远程数据库业务等等。
从矩形帧到VOP,MPEG-4顺应了现代图像压缩编码的发展潮流,即从基于DCT的传统编码向基于对象和内容的现代编码的转变。
从这个意义上讲,MPEG-4视频编码技术翻开了图像编码史上崭新的一页。
四、 MPEG 4视频产品在2001 NAB会展上,多家公司推出了他们的MPEG 4产品。
Amnis公司推出了基于IP平台的MPEG4视频流技术,展示了可以重放MPEG1, MPEG2和MPEG4的桌面软件。
Envivo 公司陈列了他们的应用于IP网络或MPEG2节目数据广播的MPEG4端到端解决方案。
该方案是纯软件的,支持视频、音频和合成的2D动画的MPEG4方式编码,以及对MPEG 4文件的版权保护。
Optibase公司推出的MGW系列是一个插件式的多通道流服务器系列,可插入不同的编码模块以适应不同的需求,其中MGW 4000是支持MPEG4(兼容MPEG1和MPEG2)的流服务器。
Optibase还推出了支持多媒体和交互MPEG4流的IP实时编码、分配平台。
最后,Optibase展示了从MPEG 1到MPEG 4的实时转码技术。
Philips 提供了一个从制作到重放的、端到端的网上MPEG-4解决方案:包括互动内容编辑器(支持网上MPEG-4视频流的搜索、剪辑和编辑)、实时软件MPEG-4编码器(甚至支持简单视频和AAC音频的无线编码)、通用多点分配IP平台和解码软件(WebCine' player支持Win95,Win2000和NT操作系统;WinCE用于手提电脑;Trimedia是一个网上广播机顶盒)。
SUN 公司也推出了他们的通用MPEG-4流服务器。
微软在它现在的WIN98和WIN2000操作系统中也已加入了一个MPEG-4的播放器,叫做Divx。
它可以回放仍是以.AVI为后缀的MPEG 4文件。
Divx可以附加到MPEG-4的数据流中,并可以进行设置以适应不同的使用要求。
Divx视频编码技术是由 Microsoft MPEG4 V3 修改而来,使用MPEG 4压缩算法,打破了ASF的种种协定。
但MPEG4毕竟是一种高比率有损压缩,其图象质量始终无法和 DVD 的 MPEG2 相比,即便是在MPEG4码率和DVD码率差不多时,总体效果还是有距离(在杂乱的细节上稍有模糊)。
所以目前的MPEG4 只能面向于娱乐和欣赏方面的市场。
市场上的第一张DIVX-MPEG4格式的影碟《活火熔城》,长98分钟,采用512×288 16:9格式,帧频24帧\\\/秒,64KB立体声音频。
影片由720×480 16:9 30帧\\\/秒的MPEG2制式转刻,刻在单张CD盘片上。
六、结 尾在最后结束本文的时候,作者还想说一些与本文有关的阐述文字。
由于工程实现与商机、市场的原因,我们所获得的工程技术成果经常是落后于科学家已经得心应手、并能信手拈来的实际的最前沿科技成果。
MPEG-4标准即是多因素集合作用的结果,如果不考虑对已有产品的兼容,它还可以做得更好。
VOP编码方式是视频信号处理技术从数字化进入智能化得初探。
另外,已VOP技术为依托,也使得模式识别技术从对符号的识别进入到对图形识别的更新的领域。
资料表明,此类研究已经更进一步的逼近人脑对视觉信息的处理方式。
人类永远不停的在揭示自然界无穷奥妙的同时,也更深入的探索人类自身。
软件开发工作感想
1、软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
在现代社会中,软件应用于多个方面。
典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。
同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。
这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。
2、开发流程▪ 需求分析 ▪ 概要设计▪ 详细设计▪ 编码▪ 测试▪ 软件交付▪ 验收▪ 维护3、软件架构(softwarearchitecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
软件架构是一个系统的草图。
软件架构描述的对象是直接构成系统的抽象组件。
各个组件之间的连接则明确和相对细致地描述组件之间的通讯。
在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。
在面向对象领域中,组件之间的连接通常用接口_(计算机科学)来实现。
软件体系结构是构建计算机软件实践的基础。
与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础。
软件构架是一个容易理解的概念,多数工程师(尤其是经验不多的工程师)会从直觉上来认识它,但要给出精确的定义很困难。
特别是,很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征。
在“软件构架简介”中,David Garlan 和 Mary Shaw认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。
结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。
但构架不仅是结构;IEEE Working Groupon Architecture 把其定义为“系统在其环境中的最高层概念”。
构架还包括“符合”系统完整性、经济约束条件、审美需求和样式。
它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。
在Rational Unified Process 中,软件系统的构架(在某一给定点)是指系统重要构件的组织或结构,这些重要构件通过接口与不断减小的构件与接口所组成的构件进行交互。
从和目的、主题、材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟。
一个软件架构师需要有广泛的软件理论知识和相应的经验来事实和管理软件产品的高级设计。
软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作、逻辑和流程。
一般而言,软件系统的架构(Architecture)有两个要素:它是一个软件系统从整体到部分的最高层次的划分。
一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。
详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(Task-flow)。
所谓架构元素,也就是组成系统的核心砖瓦,而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。
建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定。
建造一个系统之前会有很多的重要决定需要事先作出,而一旦系统开始进行详细设计甚至建造,这些决定就很难更改甚至无法更改。
显然,这样的决定必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察。
4、自己写了
一个软件工程师应该具备什么样的素质
软件工程师应该具备的技能有哪些 软件工程师应该具备的技能有哪些
小编认为,软件工程师用该具备的技能主要为以下几点: 1.编程语言能力 作为一名专业的软件工程师,应该能够熟练掌握JAVA语言,并且能够深入理解OOP、OOA、OOD等编程思想。
精通一门编程语言能为以后的软件开发打下坚实的基础。
2.编码能力 这里说的编码可不是照着书本敲代码,而是能够独立的运用代码,编写一个程序出来。
有很多软件工程师,他们都是随意堆砌网上搜来的代码,根本不管可读性和可维护性,只要能实现功能就行了,缺乏最基本的职责素养。
小编认为,对于软件工程师或程序员来说,代码就像自己的孩子一样,一定要付出感情,这样才能编写出好的程序。
3.学习能力 IT技术可谓是更新换代最快的了,从市面上的电脑和手机就可以看出来。
所以,只依靠自己之前学到的知识,很快就会被这个时代所淘汰,软件工程师应具备的技能里很重要的一点就是学习能力。
因为只有具备了学习能力,才能在离开学校之后仍然能够独立地学习最新的技术,同时能够自主的发现现在有什么新技术,市场上流行的技术元素与市场需求的变化。
4.设计能力 一个优秀的软件工程师不仅仅具备扎实的专业知识与技能,而且还要具备一定的设计能力。
因为只有这样,才能使一个软件或者应用更加完美,更加容易受到人们的欢迎,从而获得更广阔的市场。
5.团队协作能力 软件开发并不是孤军奋战,很多时候一个软件需要几个人
学习了《建筑工程计量与计价》心得体会1500字
《建筑工程计量与计价》学习心得 《建筑工程计量与计价》是建筑工程及相关专业的一门重要专业课,本课程的主要任务是学习建筑工程造价的构成及工程造价计价的原理和方法,掌握建筑工程造价确定的方法及工程量计算规则。
通过本课程的学习,要求能参考相关资料完成一套建筑工程施工图工程量清单的编制,会进行投标报价。
该课程介绍了建筑工程计量与计价基本知识,介绍了定额计价模式与清单计价模式下,建筑工程费用构成的方法与不同,介绍了建筑工程消耗量定额的基础知识,阐述了建筑面积计算规则及方法,分章节说明工程量计算规则,并以实例解释计算规则的应用方法。
熟读教材内容,结合当地建筑工程定额掌握定额的组成及应用方法,读懂建筑工程施工图,大量练习工程量的计算,多读,多看,多练,不断实践。
一、学习要点(一)建筑工程计量与计价基本知识1. 定额计价模式定额是在合理的劳动组织和合理地使用材料和机械的条件下,完成单位合格产品所需消耗的资源数量的标准。
定额按生产要素分,劳动定额(人工定额)、材料消耗定额、机械台班使用定额2. 工程量清单计价模式工程量清单是表现拟建工程的分部分项工程项目、措施项目、其它项目名称和相应数量的明细清单。
工程量清单项目设置规则概括为:四个统一,统一的项目编码,统一的项目名称,统一的计量单位,统一的工程量计算规则。
3. 预算定额 预算定额是确定一定计量单位的分项工程或结构构件的人工、材料、施工机械台班损耗量的标准的技术经济文件。
(二)建筑面积计算建筑面积是指房屋建筑各层外围水平投影面积相加后的总面积。
也是建筑物外墙勒脚以上各层水平投影面积的总和。
包括使用面积、辅助面积和结构面积。
(三)工程量计算规则根据《建设工程工程量清单计价规范》GB50500
求一篇《软件工程导论》(第五版)的读后感,2000字左右,谢谢大家了,急用
你的项目对你很重要,在实践中总结自己的知识和经验;然后,尝试着去设计自己的软件,想象一下自己将要做的软件会是什么样子,之后运用你的知识去实现它;如果无法实现的话,学习参考别人的编码,之后掌握成为自己的知识。
软件开发是一个需要很多实践的行业,你需要不断地自己去编码完成你需要的功能,不会的就去学习:数据结构;操作系统API;软件工程思想;等等。
希望你能够先找出自己的缺乏的知识,然后再找书或者在实践中去学习总结,早日得以提升。



