⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matching_half.m

📁 these are the Mtlab functions to plot the figures in the book Communication system (by Haykin)
💻 M
字号:
% exhaustive search block matching (EBMA) algorithm
%
function [vm,hm,pframe]=EBMA_half(refframe, newframe, row, col, bsize, Vrange, Hrange, vm, hm, pframe);

%assumes bsize=16
clear err
err=zeros(4*Vrange+1, 4*Hrange+1);

clear x;
x=zeros(16,16);

MAX_ERROR=255^2*16^2;

%up sample refframe
row2=row*2; col2=col*2;

refframe2(1:2:row2,1:2:col2)=refframe(1:row,1:col);
refframe2(1:2:row2,2:2:col2-2)=(refframe(1:row,1:col-1)+refframe(1:row,2:col))/2;
refframe(1:2:row2,col2)=refframe(1:row,col);

refframe2(2:2:row2-2,1:2:col2)=(refframe(1:row-1,1:col)+refframe(2:row,1:col))/2;
refframe2(row2,1:2:col2)=refframe(row,1:col);
refframe2(2:2:row2-2,2:2:col2-2)=(refframe(1:row-1,1:col-1)+...
   refframe(1:row-1,2:col)+refframe(2:row,1:col-1)+refframe(2:row,2:col))/4;
refframe2(2:2:row2-2,col2)=(refframe(1:row-1,col)+refframe(2:row,col))/2;
refframe2(row2,2:2:col2-2)=(refframe(row,1:col-1)+refframe(row,2:col))/2;
refframe2(row2,col2)=refframe(row,col);

%figure;image(refframe2);colormap(gray(256));

br=0;
for r=1:bsize:row-15
   br=br+1;
   bc=0;
   for c=1:bsize:col-15
      bc=bc+1;
      
      
      
      %assuming vm,hm store initial motion field
      v0=vm(br,bc);
      h0=hm(br,bc);
      x=newframe(r:r+15, c:c+15)-refframe2(2*(r+v0)-1:2:2*(r+v0+15)-1, 2*(c+h0)-1:2:2*(c+h0+15)-1);
      err0=sum(sum(abs(x)));
      minerr=err0;
      vmin=v0;hmin=h0;
      
      %bbr=0;
      for v=-Vrange+v0:0.5:Vrange+v0
         %bbr=bbr+1;
         %bbc=0;
         for h=-Hrange+h0:0.5:Hrange+h0
            %bbc=bbc+1;
            if ((r+v>=1) & (r+v<=row-15) & (c+h>=1) & (c+h<=col-15))
               x=newframe(r:r+15, c:c+15)- ...
                  refframe2(2*(r+v)-1:2:2*(r+v+15)-1, 2*(c+h)-1:2:2*(c+h+15)-1);
               err=sum(sum(abs(x))); 
               
               if (err<minerr)
                  minerr=err;
                  hmin=h; vmin=v;
               end;       
            end
         end     %the motion search window    
      end
      
      if (minerr>(err0-100))%favor 0 MV if error is similar
         hmin=h0;
         vmin=v0;
      end;
      
      vm(br,bc)=vmin;
      hm(br,bc)=hmin;
      
      disp([r,c,br,bc,vmin,hmin,v0,h0]);
      pframe(r:r+15, c:c+15)=refframe2(2*(r+vmin)-1:2:2*(r+vmin+15)-1, 2*(c+hmin)-1:2:2*(c+hmin+15)-1);
      
   end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -