《基于矢量量化的图像压缩系统设计与实现》9300字(论文)_第1页
《基于矢量量化的图像压缩系统设计与实现》9300字(论文)_第2页
《基于矢量量化的图像压缩系统设计与实现》9300字(论文)_第3页
《基于矢量量化的图像压缩系统设计与实现》9300字(论文)_第4页
《基于矢量量化的图像压缩系统设计与实现》9300字(论文)_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第页1绪论1.1研究目的及意义在当今的信息时代,数字图像的应用已经非常普遍。尽管技术的进步极大地提高了处理器的速度和传输网络的性能,人们还是希望更有效地捕获和存储信息。在数字图像压缩领域,对更高的压缩比和更好的压缩质量的要求从未停止过。从传输和存储的角度来看,数据压缩的重要性不言而喻。如果压缩技术没有达到一定的水平,很多相关的技术势必会受到极大的阻碍,如无线传输、实时传输与接收、海量数据库等。目前常用的图像压缩方法有笔画编码、字典编码、霍夫曼编码、算术编码、炮编码、变换编码、预测编码、小波技术等。近年来,矢量量化理论的提出和发展,为人们研究图像压缩提供了新的启示。量化作为一种有损数据压缩技术,在图像压缩中起着重要作用,它包含有记忆量化和无记忆量化两种。其中,有记忆量化即标量量化,无记忆量化包含序列量化和矢量量化两种。虽然标量量化和矢量量化均可通过不同的方式对数据进行压缩,但前者针对一维数据,而后者则是针对多维数据,可以说前者是后者的一种特殊情况。与其它两种量化相比,标量量化较为简单,每次对数据进行量化处理时仅针对一个采样数据,且其对所要采样的数据均使用相同特性的量化器进行独立量化,而其它两种量化则是以采样数据之间的相关性为基础进行量化的。矢量量化指的是利用系统输出的一组最佳数据的索引来代替一组采样数据进行传输的过程,能够巧妙地利用采样数据之间所存在的各种关系最大限度地去除采样数据之间的冗余,从而达到数据压缩的目的。1.2国内外发展现状在矢量量化的整个过程中,无论是码字搜索还是码字索引分配均需要码书,因此码书的质量高低会对矢量量化最终的质量以及有效性产生影响,故码书设计是整个矢量量化过程最核心的技术。20世纪80年代,Linda、Gray等学者给出了经典的LBG算法,该算法呈现了构造矢量量化器的实现过程。LBG算法的理论较为严谨且算法简单、直观,已经被广泛应用,是码书设计各种算法的研究基础。但LBG算法存在三个问题,一是每一次迭代过程中利用最近邻条件求取每一个训练矢量的最近邻码字时需要较高的计算量,同时还需要充足的存储空间保存结果;二是一旦所选择的初始码书存在一定的偏差,极有可能对码书收敛的快慢以及码书的性能造成影响;三是码书自适应能力不强。针对第一个问题,通常情况下采取快速搜索的方法,但这有可能导致码书质量下降,故在接下来的研究中,学者们对上述问题进行分析,并提出了一系列的改进算法。1.3本课题主要工作本文章首先介绍了研究的背景和意义,了解国内外研究现状的分析,然后系统使用的相关技术和开发工具环境阐述,其次是系统的分析,包括功能需求、系统和系统开发环境的可行性进行了分析,在分析的基础上进行了系统设计,包括体系结构设计、功能设计、过程设计等,通过设计编码来实现系统的各个功能,本系统采用MATLAB语言开发,研究矢量量化图像压缩方法,构建了一个基于矢量量化的图像压缩系统。最后,对系统功能进行整合和测试。2相关技术简介2.1MATLAB简介MATLAB是由美国mathwork公司发布的,主要是从事数学商业计算的软件,它包含了matrix&laboratory两个词的组合,英文翻译过来为矩阵工厂。它既是一种开发语言也是一种开发环境。主要作用即为科学计算和可视化。它把把很多的功能集成在一个好用的视窗环境中,包含了矩阵的计算、数值的分析、数据的可视化,还包括了非线性动态系统建模、系统仿真等等。它提供了科学的解决方案可以用于科学研究或者是工程设计等项目。比传统的非交互式语言(c或者Fortran等)更加易用,是目前非常流行的有关数学计算方面的开发环境。1.matlab的界面左上角,home标签下,找到layout进行设置/复位,可以设置各板块的显示与隐藏。其中有几个部分,请务必要显示

①CurrentFolder:中文一般翻译成工作路径,一般设置成一个自己建立的、有读写权限的文件夹,例如我的文档下建立一个matlab文件夹

②CommandWindow:字面意思是命令窗口,用来运行代码,所有的代码都是在这里输入

③Workspace:字面意思是工作空间,其实就是暂存所有运行结果的地方,“暂”的具体含义是:关闭matlab后丢失

2.函数

matlab之所以强大,就是因为提供大量的函数,你也可以建立自定义函数,方法是:Home->New->function。自定义函数一般保存在工作路径下。函数文件的特征是:扩展名m,内容的第一行以function开头,后续内容是“输出变量=函数名(输入变量)”。且函数名和文件名相同。

每个函数在CommandWindow中运行,用来完成特定的计算任务,运行方式是输入“输出变量=函数名(输入变量)”,然后按回车。例如有个系统自带的函数是用来求绝对值的,函数名abs,所以在CommandWindow里输入“a=abs(-1)”,就会显示运算结果为“a=1”。且运算结果会在Workspace里出现一个变量a,双击后可看到a的值是1。

3脚本

可以理解为特殊的函数,这种函数内容的开头没有function那行,因此没有输入、输出变量,也没有函数名。文件扩展名和函数一样是m,也需要在CommandWindow里运行。脚本都是用户建立的,方法是:Home->NewScript。一般保存在工作路径下。脚本的功能就是完成用户需要的、复杂的计算任务,通常脚本里会调用很多函数。

4GUI

一般翻译为界面,就是人机交互界面的意思。写脚本处理问题的方法有点麻烦,让人看起来更像是码农,所以现在很多问题可以通过界面点点鼠标解决。这时候就需要打开界面,打开方法是:在APPS标签里可以找到所有已安装的GUI工具,单击即可。注意右边有个小三角可以点开。和函数一样,用户也可以自己建立自定义GUI,这部分较为复杂,对新手而言有点遥远。

toolbox

一般翻译成工具箱,matlab将功能相近或者应用上自成体系的一组函数和GUI打包成一个toolbox。正版的matlab在购买时,几乎每一个toolbox都是要单独收费的,所以toolbox也可以理解为matlab产品的模块,一个工具箱就是一个产品/商品。

simulink

一般用matlab解决问题的过程是:用户自定义脚本,在CommandWindow里运行脚本。而脚本的运行逻辑是顺序执行,和一般的编程一样。simulink则提供另一种思路,图形化编程,有点像labview,这种方法很适合于物理模型的仿真,因此有时用“matlab编程”和“simulink仿真”强调。使用方法是在home标签下点击simulink。

4获得帮助

常用的获得帮助有四种方法

①home标签里,有个Help标志,点开后可以获得各工具箱/产品的完整帮助文档。新版本中默认使用在线,改用本地帮助的办法是在home标签里,Preferences下的matlab/Help里选择installedlocally

②官网上找到支持,然后可以获得教程。这种方法获得的帮助文档和第一种方法一样。

③在CommandWindow里输入doc+函数名来获得帮助。比如输入"docfft"可以获得离散傅里叶变换函数fft的帮助和范例。这种方法获得的文档是前两种方法文档中的部分。当然,前提是你要知道函数名,才能找到帮助。这种方法适合于获得系统自带函数的使用说明。

④使用GUI时,通常界面的角落里有Help,点开可以获得帮助。这种方法获得的文档是第一和第二种方法文档中的部分。这种方法适合于获得系统自带GUI的使用说明。

这几种方法中,最常用的是第三种,只要知道自己需要的函数名,就可以用这种方式获得说明和范例。而实际使用中,一般常用的系统自带函数,也并不是非常多,大概几十个?真正需要牢记使用方法的可能就几个,通常都是知道函数名,要用的时候doc一下。2.2图像压缩技术数字图像压缩是将原始图像信息存储在一个相对较小的空间内,分为有损压缩和无损压缩。数字图像压缩的方法是通过一定的算法消除图像信息的冗余,使用户能够更有效地存储和传输大量的数字图像。2.2.1图像压缩理论基础数字图像压缩的理论基础是信息论。在信息论中,数据压缩就是尽可能多地去除信息中的冗余,保留不确定信息。所谓的冗余作为识别信息被删除。在数字图像中,必须存在数据冗余。同时,在数字图像中,每个部分、每个部分与整体之间总是存在着一种相关性。因此,当我们去除数字图像内部的数据冗余时,图像的质量(即有效信息)不应受到尽可能大的损害。因此,有必要对数字图像中的数据冗余进行研究。2.2.2图像压缩类型在数字图像压缩方法中,将数字图像的压缩过程称为图像编码,将压缩数据的解压过程称为图像解码。根据解码后的图像与原始图像是否完全一致,数字图像压缩方法可分为无损压缩编码方法和有损压缩编码方法。无损压缩编码是指对压缩后的图像进行解码,其数据与压缩前的图像是完全相同的编码方法。在压缩期间,数据被当作完全无用的数据丢弃。无损压缩编码通常用于需要数据存储或传输的一致性和稳定性的情况。目前常用的无损压缩编码方法可以达到1倍的压缩比,具体的压缩比与图像的内容有关。这也证明了在实际应用中,未经处理的数字图像具有相当大的数据冗余。常用的无损压缩代码如下:笔画编码,熵编码,字典编码,算术编码。无损压缩编码在压缩过程中可以保持图像的质量,但与有损压缩编码相比,无损压缩编码的压缩比过低。有损压缩编码是指对数据和原始图像采用不同的解码和编码方法。在无损压缩编码不影响人们对原始图像理解的前提下,大量的原始图像冗余信息被丢弃。尽管有损压缩会损害图像质量,但从更高的压缩比来看,有损压缩编码仍具有广泛的应用前景。常见的有损压缩代码如下:色度采样法,变换编码,矢量量化编码。2.3矢量量化矢量量化的定义,其实质是一个映射,即将k维的矢量空间Rk映射到其中的一个含有有限个矢量的集合C的过程,且集合C是矢量空间Rk的一个子集,可表示为:上式中,C表示码书,y,表示C中的码字,N表示C的尺寸大小,k表示R'中训练矢量的维度。对于R'中任意训练矢量,均满足映射,并满足:式中,码字表示训练矢量x与码书中码字y,之间产生的失真。也就是说,Rk中任意的训练矢量x,都能在码书C中搜寻到与其失真最小的码字。对于任意的矢量空间,经过矢量量化器Q量化后均可被划分为N个相互无任何重叠的子空间,R,表示k维矢量空间中所有映射为码字y;的训练矢量的集合,即N个子空间满足下列条件:矢量量化器的编码和解码两个过程如下图2.1所示:矢量量化器的编码过程指的是在给出一定失真条件和一定尺寸码书的情况下,从中搜寻出距离与输入矢量量化器的训练矢量最近的码字,即二者之间失真最小的码字。在信道整个传输的过程中,并不传输真正的码字而是传输与其相对应的索引值。而矢量量化器的解码过程指的是在接收端和输入端存储相同码书的前提下,将接收到的索引值与码书中的码字相匹配,并将匹配后的码字看作输入端输入的训练矢量重构后的矢量。

3系统分析所谓系统分析,就是要求人员通过与客户的沟通,获取信息,然后通过信息需求的方式向用户和开发人员展示。在软件功能发展的历史,很长一段时间,特别是在一开始,需求分析的重要性没有被人认出,比如IBM英国电信公司在美国开发的一套信息管理系统,需求不明确的条件下开始发展,最初的时期是一年,需求不清楚导致月经推迟了半年多,造成巨大的损失。这也是我们很多软件公司的情况,他们在开发的时候直接复制同类型的项目来进行变更,甚至没有与客户进行清晰的沟通,导致系统接受、重新变更,造成了巨大的人力和物力的浪费。导致所有这些后果的原因是需求不及时,不明确,不全面。3.1系统功能需求系统主要是通过研究分析矢量量化压缩算法,使用此算法进行图像的压缩。3.2可行性分析系统的目的是对图像进行压缩。在确定了目标后,我们从以下四方面对能否实现本系统目标进行可行性分析。3.2.1技术可行性基于矢量量化的图像压缩系统主要采用MATLAB技术,通过使用矢量量化理论来进行图像的压缩。可以看出,该系统技术是没有问题的。3.2.2操作可行性基于矢量量化的图像压缩系统的界面简单易于操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用MATLAB语言开发,这些开发环境使系统更加完善。本系统具有易操作、易管理、交互性好的特点,在操作上是非常简单的。因此本系统可以进行开发。3.2.3经济可行性由于本系统是面向用户提供图像压缩,而且是针对调用相关库来实现,在系统开发上并不是很大,整个系统是不是非常大,耗用的时间也不太长,所以开发成本不会太高。在整个发展过程是由自己独立完成,只需一台电脑和多种上面提到的软件,就可以实现所有的发展的任务。基于矢量量化的图像压缩系统所要求的硬件和软件环境,市场上都很容易购买,程序开发主要是管理系统的开发和维护。所以程序在开发人力、财力上要求不高,而且此系统不是很复杂,开发周期短,在经济方面具有较高的可行性。综上所述,基于矢量量化的图像压缩系统在技术、经济、操作和都具有很高的可行性,开发此程序是可行的。3.3开发环境分析(1)开发硬件平台:CPU:酷睿I7及以上内存:4G以上硬盘:320G以上显卡:独立显卡(2)开发软件平台:操作系统:Windows7开发语言:MATLAB3.4系统性能分析一个系统的性能的好坏,直接决定了用户的体验度。而性能的好坏又取决于系统的架构的好与坏。一个优秀的系统架构一般包含以下几个方面:1模块化设计明确。一个大的系统,分为很多小的模块,每个模块的划分清晰明确,每个模块的功能明确,且模块之间可以灵活的调用,实现低耦合高内聚。2模块的划分,分为很多种类,要保证通用模块实现灵活的调用,特殊模块,可以随时根据系统功能等的变更及时进行更改。让系统的灵活性更高。3稳定、安全、高效的数据建模。数据是整个系统的仓库,只有一个稳定、安全、高效的仓库,才能为系统提供好的数据存取和变更。4整体结构稳定而又灵活。系统的整体架构在初期部署的时候,一定要有高度,不但结构清晰,运行稳定,当运行出现问题的时候,能够提供快速的解决方案。

4系统设计与实现4.1设计目标及原则系统的设计是系统开发的关键节点,系统设计是系统的上层架构,设计的好坏决定了系统后期是否能开发完成,及系统完成后的性能优劣。只有设计达到这一目标的系统才能有更好的扩展空间来适应系统未来的发展。在整个系统的设计中,系统必须满足以下要求:(1)数据安全性系统的开发涉及到很多数据,包括用户数据或者是系统数据等,无论需要什么样的数据来保证数据的安全性,在系统设计中都必须采取安全防范措施来解决潜在的安全问题。(2)易用性系统最终会交付给客户,用户通过其权限进行系统的使用,能不能用,以及是否好用,都决定了客户对系统甚至是开发公司的印象。好用的系统能够大大提高操作员的工作效率,从而提升用户的好感度和忠诚度。(3)柔软性柔软性包含范围较广,主要是能够处理各种突发的情况,也就是我们所说的应急能力。由于任何人都无法保证系统的绝对安全,当系统出现错误时,能够及时的进行补救。(4)扩展性随着基于矢量量化的图像压缩系统需求的不断变化,系统必然会涉及业务的更新和扩展,这就要求在设计之初就考虑一个良好的可扩展性方案。4.2系统流程设计基于矢量量化的图像压缩系统开发时,首先进行需求分析,进而对系统进行总体的设计规划,设计系统功能模块等,本系统的开发流程如图4.2所示图4.2系统开发流程图4.4系统实现4.4.1系统实现步骤LBG算法的主要思想为首先通过一定的方法从训练矢量中获取初始码书,然后以获取的初始码书为准对训练矢量进行聚类操作,同时根据选定的目标函数对聚类的结果进行判定,通过判定的结果决定LBG算法迭代的次数,从而获取较优的码书。设训练矢量集其中训练矢量的维数为k,码书的大小为N,那么LBG算法的步骤如下:步骤1:初始化操作。利用某种算法对给定的训练矢量集进行处理,获取初始码书,设迭代次数n的初始值为0,固定失真阈值为总的平均失真为。步骤2:最佳划分。首先将每一次迭代获取的码书Yn中的每一个码字均看作质心,接着将训练矢量集X中的每一个训练矢量均按照上述所提的最佳划分原则进行胞腔的划分,从而获得N个胞腔,即且要满足步骤3:总的平均失真的计算。如果两个相邻的总的平均失真的相对误差满足下列不等式或者当该算法的迭代次数恰好和所设定的值相等时,终止该算法,否则转到步骤4。根据公式(2.20)可获得N个新的质心,这些新的质心组成新的码书,然后将n设置为n+1,接着转入步骤2。LBG算法的流程图如下所示:图4.3LBG流程图4.4.2系统运行效果运行系统,可以在选择图片进行压缩。效果如图4.4所示。图4.4系统压缩效果图4.4.3系统核心代码核心代码见附录。5软件测试与分析系统开发的最后一个步骤就是系统测试,系统测试也是整个系统十分重要的一个环节,测试的好坏关系到产品的发展。客户对软件的质量、性能和可靠性等需求就要通过测试来实现。测试过程要必须遵循严谨性、完善性、规范性的原则,测试的主要目的就是看看在系统运行中,是否会出现bug,然后对出现的bug进行调试,直到程序完美运行。但是软件的测试只能尽可能的减少bug,理论上来说是无法达到消除bug。但是bug越少,系统出错的几率就越低,用户使用起来也更方便、更安全。系统测试包括很多种,一般来说有功能测试,安全测试,可用性测试,性能测试和兼容性测试等。5.1测试环境与测试条件处理器:因特尔酷睿处理器I5内存:4GB硬盘:80G以上操作系统:Win7-10或windowsXP5.2功能测试功能测试包括很多种,通常有五个方面,分别为:安全性、依从性、适用性、准确性以及可操作性行。本系统功能测试如表5-1所示:表5-1系统功能测试5.3性能测试性能测试主要是通过模拟系统的运行环境来测试系统的性能是否满足客户的需求。性能测试的重要技术指标是:系统运行速度、系统响应时间。1)系统运行速度:系统运行在不同的计算机上,没有任何的暂停或延迟。2)系统响应时间:系统响应时间主要包括三个方面:一是系统最小响应时间;系统的平均响应时间;三是系统最大响应时间这三个参数。经过测试,在正常情况下,响应时间的三个数值分别为:0.2/0.5/0.8s,速度非常快,用户满意。5.4系统运行情况综上所述,系统已经通过了功能测试和性能测试。在规定的时间内,系统完成了系统分析时确定的系统开发目标,达到了设计要求,达到了良好的压缩效果。投入使用以后,也能够为用户节省大量的人力、物力和财力资源,大大提高科学管理水平。结论本系统通过对MATLAB和矢量量化理论等技术的简介,从硬件和软件两反面说明了基于矢量量化的图像压缩系统的可行性,本文结论及研究成果如下:实现了基于MATLAB的基于矢量量化的图像压缩系统,通过本次系统的研究与实现,我感触到学习一门新技术,最重要的是实践,只有多动手才能尽快掌握它,一个系统的开发,经验是最重要的,经验不足,就难免会有许多考虑不周之处。由于在此之前对于MATLAB及矢量量化理论等知识没有深入了解,所以从一开始就碰到许多困难,例如一开始的算法的无法调用,图像无法显示、无法实现参数的传递等等,不过通过在网上寻找有关资料以及同学的帮助下最后都得到了解决,在此过程中,我不仅学到了很多知识,也提高了自己解决问题的能力,尤其是学会如何从大量的信息中筛选出所需有用的信息,同时我更加深刻的体会到了,虽然书本上的大部分知识都是有价值,正确的,但实际上每个人编程的思路和对数据处理的方法、思想都是不同的,这就要求我们一定要通过实践才能找到解决问题的方案。在此次毕业设计活动中,我不断的提高了自己,也得到了宝贵的经验,我相信这些对我以后的发展都会有很大帮助。通过这次系统的开发,我参考了很多相关系统的例子,取长补短,吸取了其他系统的长处,逐步对该系统进行了完善,但是该系统还是有很多的不足之处,有待以后进一步学习。参考文献[1]滕佳东.图像基于矢量量化的图像压缩系统[M].东北财经大学出版社.2018.2.[2]B.B.Mandelbrot.Thefractalgeometryofnature[M].Freeman,NewYork,2013.[3]李后强,汪富泉.矢量量化理论及其发展历程[J].自然辩证法研究,2012(11):20-23.[4]徐冰.国外星上数据压缩算法发展研究[J].国际太空,2014(1).[5]法尔科内(英).矢量量化几何--数学基础及其应用(第2版)[M].人民邮电出版社,2017.[6]FernándezE,JelinekHF.Useoffractaltheoryinneuroscience:methods,advantages,andpotentialproblems.[J].Methods,2001,24(4):309-321.[7]JacobsEW,FisherY,BossRD.Imagecompression:Astudyoftheiteratedtransformmethod[J].SignalProcessing,1992,29(3):251-263.[8]彭立国.图像无损压缩传输技术研究[J].科技致富向导,2015(18):316-316.[9]JacobsEW,FisherY,BossRD.Imagecompression:Astudyoftheiteratedtransformmethod[J].SignalProcessing,1992,29(3):251-263.[10]陈颙,陈凌.矢量量化几何学[M].地震出版社,1998.[11]BastaniV,HelfroushMS,KasiriK.Imagecompressionbasedonspatialredundancyremovalandimageinpainting[J].FrontiersofInformationTechnology&ElectronicEngineering,2010,11(2):92-100.[12]JacquinAE.Imagecodingbasedonafractaltheoryofiteratedcontractiveimagetransformations[J].IEEETransactionsonImageProcessing,1992,1(1):18.[13]王曙光.矢量量化图像压缩编码的原理与发展趋势[J].福建电脑,2014(9):9-10.[14]Ching-ChungYin;Tzu-KueiWen.ESPIsolutionfordefectdetectionincrystallinephotovoltaiccells[J].SeventhInternationalSymposiumonPrecisionEngineeringMeasurementsandInstrumentation.Yunnan,China,7-11Aug.2011.[15]SchajerG.S.Quan,C.PhaseretrievalinESPIfromadensephasefringepattern:ProceedingsofSPIE-TheInternationalSocietyforOpticalEngineering,Brussels,APR13-16,2010.[16]王志芳.基于傅立叶变换的电子散斑干涉信息提取方法研究及应用[D].天津大学,2014.[17]齐浩.电子散斑干涉测量技术在微结构测试中的应用研究[D].天津大学,2017.[18]LoweD.Distinctiveimagefeaturesfromscale-invariantkeypoints[J].InternationalJournalofComputerVision,2004,60(2):91-110.[19]贾洪哲.降维算法的改进与应用[D].北京:北京师范大学,2014.[20]董洛丞,陈张平.基于改进的卷积神经网络的人脸识别算法[J].杭州电子科技大学学报(自然科学版),2018,38(05):59-63+101.

附录系统主要代码:function[Codebook,ClosestMatch_Index,row,col]=LBG(Image)[row_src,col_src]=size(Image);Pixels=2;row_pad=ceil(row_src/Pixels)*Pixels;col_pad=ceil(col_src/Pixels)*Pixels;tmp_img=zeros(row_pad,col_pad,'uint8');tmp_img(1:row_src,1:col_src)=Image;Image=tmp_img;[row,col]=size(Image);%NumberofpixelsTotalPixels=row*col;%8*8PixelspersetSetPixels=Pixels*Pixels;%NumberofSetNum_Set=TotalPixels/SetPixels;%CodeBookSizeCodebook_Size=256;%ArrayofSetsTotal_Sets=zeros(Num_Set,SetPixels);value_index=1;set_index=1;tic;%AllocatingSetsValuefori=1:Pixels:row%outerforj=1:Pixels:colfora=i:1:i+Pixels-1%Subsetforb=j:1:j+Pixels-1Total_Sets(set_index,value_index)=Image(a,b);value_index=value_index+1;endendvalue_index=1;set_index=set_index+1;endendRandomNums=randi(Num_Set,1,Codebook_Size);Codebook=zeros(Codebook_Size,SetPixels);%InitialCodebookfori=1:1:Codebook_Sizeforj=1:1:SetPixelsCodebook(i,j)=Total_Sets(RandomNums(1,i),j);endend%Part2Processesy=1;dist=1;dist_prev=1;error=1;iterations=0;%TrainingSamplesT_Size=Num_Set;Training=zeros(T_Size,SetPixels);Training=Total_Sets;whileerror>0.0005dist_prev=dist;%TrainingvsCodeBookValuediff=zeros(T_Size,Codebook_Size);fori=1:1:T_Sizefora=1:1:Codebook_Sizeforb=1:1:SetPixelsValuediff(i,a)=Valuediff(i,a)+((Training(i,b)-Codebook(a,b))^2);%SumofDistancefor64codebookendendendClosestDistV=zeros(T_Size,1);%ClosestValueforeachTrainingSetsfori=1:1:T_SizeClosestDistV(i,1)=min(Valuediff(i,:));end%GettingTheCodebook_IndexoftheclosestMatch(checked)ClosestMatch_Index=zeros(T_Size,1);fori=1:1:T_Sizeforj=1:1:Codebook_Sizeif(Valuediff(i,j)==ClosestDistV(i,1))ClosestMatch_Index(i,1)=ClosestMatch_Index(i,1)+1;break;elseClosestMatch_Index(i,1)=ClosestMatch_Index(i,1)+1;endendend%LengthForAveraging(checked)ClosestMatch_Length=zeros(Codebook_Size,1);Counter=0;fori=1:1:Codebook_SizeCounter=Counter+1;forj=1:1:T_SizeifCounter==ClosestMatch_Index(j,1)ClosestMatch_Length(i,1)=ClosestMatch_Length(i,1)+1;endendend%GeneratingNewCodeBookCodebookNew_Sum=zeros(Codebook_Size,SetPixels);fori=1:1:Codebook_Sizefora=1:1:T_SizeifClosestMatch_Index(a,1)==iforj=1:1:SetPixelsCodebookNew_Sum(i,j)=CodebookNew_Sum(i,j)+Training(a,j);endendendendCodebookNew=zeros(Codebook_Size,SetPixels);fori=1:1:Codebook_Sizeforj=1:1:SetPixelsifClosestMatch_Length(i,1)==0CodebookNew(i,j)=Codebook(i,j);elseCodebookNew(i,j)=CodebookNew_Sum(i,j)/ClosestMatch_Length(i,1);endendend%CorrectCodebook=CodebookNew;%Part4CalculatingDistortiondist=sum(sum(Valuediff))/(Codebook_Size*SetPixels);error=abs(dist_prev-dist);error=error/dist_prev;iterations=iterations+1;disp(['error=',num2str(error),'iterations=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论