基于MATLAB实现对图像的矢量量化.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MATLAB实现对图像的矢量量化

题目:基于MATLAB实现对图像的矢量量化 姓  名: 学  号: 系 别: 电子信息工程 专 业: 电子科学与技术 2014年 10月 11日 基于MATLAB实现对图像的矢量量化 一、实验要求: 1.对于图像的数据可以只选用灰度图像; 2.实现对四个像素值的矢量量化,自己选择如何建立码表的方法及最佳匹配的方法; 3.比较原始图像和重构图像的效果; 二、实验内容: 1.实验素材: 在本次的对图像矢量量化的过程中,选取了琳娜(Linna)图像,256×256,12KB,如图2.1所示: 图2.1 2.码表的建立和最佳的匹配方法: 本次实验中选取的码表设计方法为LBG算法,该算法基于最佳矢量量化器设计的最佳划分和最佳码书这两个必要条件,且是Lloyd算法在矢量空间的推广,其特点为物理概念清晰、算法理论严密及算法实现容易。 设训练矢量集为,待产生的码书为,其中,,,则码书设计过程就是需求把训练矢量集分成个子集的一种最佳聚类方案,而子集的质心矢量作为码字。假设平方误差测度用来表征训练矢量和码字之间的失真,即: 则码书设计的准则可用下列数学形式表达: 最小化 约束条件 , 其中为矩阵,其元素满足: 矩阵可看作训练矢量的聚类结果。根据,可计算码字: 其中 代表子集中训练矢量的数目,或者说是矩阵第行中非零元素的数目。 针对训练矢量集为,其LBG算法的具体步骤如下,流程图如图2.2所示: 图2.2 步骤1:给定初始码书,令迭代次数,平均失真,给定相对误差门限。 步骤2:用码书中的各码字作为质心,根据最佳划分原则把训练矢量集划分为个胞腔,满足 步骤3:计算平均失真 判断相对误差是否满足 若满足,则停止算法,码书就是所求的码书。否则,转步骤4。 步骤4:根据最佳码书条件,计算各胞腔的质心,即 由这个新质心形成新码书,置,转步骤2。 3.实验方法:在对同一幅琳娜(Linna)图像进行矢量量化时,分别采用在不同的码书条件下:512、256、1024观察比较相应的结果。 三、程序代码 clear all; I=imread(C:\linna.JPG); g=rgb2gray(I); imwrite(g,C:\Users\Johnson_Li\Desktop\Mr.Li.JPG,JPG) data=imread(Mr.Li.JPG); %调入原始图像 data=double(data)/255; %归一化 [m,n]=size(data); %求出图像的行数和列数 figure(1) subplot(1,2,1); imshow(data); %显示原始图像 title(原始图像) subplot(1,2,2); imhist(data); %用以提取图像中的直方图信息 title(直方图)siz_word=4; %设置码字的大小 siz_book=512; %设置码书的大小 data1=zeros(m*n,1); for i=1:m for j=1:n data1((i-1)*n+j)=data(i,j); end end M1=floor(m*n/siz_word); r=mod(m*n,siz_word); if r0 M1=M1+1; end data2=zeros(M1,siz_word); l=1; A=zeros(siz_word,1); r=1; for i=1:m*n A(r)=data1(i); if r==siz_word data2(l,:)=A; l=l+1; r=1; else r=r+1; end end code_book=zeros(siz_book,siz_word); %LBG算法开始 %初始化码书 l=1; r=1; A=zeros(siz_word,1); for i=1:siz_book*siz_word A(r)=data1(i); if r==siz_word

文档评论(0)

zilaiye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档