矢量量化典型的快速搜索算法.DOCVIP

  • 6
  • 0
  • 约3.5千字
  • 约 7页
  • 2018-12-03 发布于天津
  • 举报
矢量量化典型的快速搜索算法

矢量量化典型的快速搜索算法 一、三角不等式删除算法 定理4:假定目前最小失真为,令为相异码字,,为输入矢量,若: 则: 证明:由得 根据三角形两边之和大于第三边知: + 所以 即 定理5:假定目前最小失真为,令为相异码字,,为输入矢量,若: 则: 证明:由三角形的两边之差小于第三边知: 当, , 的终点在同一直线上时,等号成立,即 又因为 所以。 二、均值不等式删除算法 定理6:假定目前最小失真为,为码字的均值,如果 则: 证明:由已知得 ,即 由绝对误差不等式定理知 所以 即 定理7:假定目前最小失真为,为码字的方差,如果 则: 证 明:首先定义k微矢量的方差为 设L为上的一条直线,如果L上任何点都满足,则称L为的中心线。 设分别为x和在中心线上的投影,根据以上定义可得 , 根据三角不等式,可得 而是x 在中心线上的投影,所以 则 同理 合并以上两式可得 由已知条件得 所以 用PDS算法编码 部分失真搜索(PDS)算法是一种简单有效的最近邻码字搜索算法。在搜索过程中,它通过引入一个提前退出条件,以便较早地终止输入矢量和码字之间的失真计算。基本思想是:在计算某个码字与输入矢量之间失真测度的过程中始终判断累加的部分失真是否已超过目前的最小失真,一旦超出则终止该码字与输入矢量之间的失真计算。 %编码 figure(1); sig=imread(lena.jpg); [m_sig,n_sig]=size(sig); siz_word=4; siz_book=256; subplot(1,2,1); imshow(sig); load codebook_256; num=m_sig/siz_word; ss=siz_word*siz_word; nn=num*num; d1=0.0; re_sig=[]; for i=1:m_sig for j=1:n_sig f1=floor(i./siz_word); m1=mod(i,siz_word); if m1==0 m1=siz_word; f1=f1-1; end f2=floor(j./siz_word); m2=mod(j,siz_word); if m2==0 m2=siz_word; f2=f2-1; end re_sig(num*f1+f2+1,siz_word*(m1-1)+m2)=sig(i,j); end end for i=1:nn codenumber(i)=1; min=VectorDistance(ss,re_sig(i,:),codebook(1,:)); for j=2:siz_book d=0.0; for l=1:ss d=d+(re_sig(i,l)-codebook(j,l)).^2; if d=min break; end end if dmin min=d; codenumber(i)=j; end end d1=d1+min; end %解码 for i=1:nn re_sig(i,:)=codebook(codenumber(i),:); end for ni=1:nn for nj=1:ss f1=floor(ni./num); f2=mod(ni,num); if f2==0 f2=num; f1=f1-1; end m1=floor(nj./siz_word)+1; m2=mod(nj,siz_word); if m2==0 m2=siz_word;

文档评论(0)

1亿VIP精品文档

相关文档