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

📄 ebma2.m

📁 数字视频技术中用的很多的穷尽快匹配算法 对与很多数来说的话是相当有用的啊
💻 M
字号:
%f1: anchor frame; f2: target frame, fp: predicted image;
%mvx,mvy: store the MV image
%widthxheight: image size; N: block size, R: search range
f2=imread('e:\car\car1.bmp');
f1=imread('e:\car\car2.bmp');
fp=0;

figure,imshow(f2),title('target');
figure,imshow(f1),title('anchor')

N=16;R=16;
height=256;
width=256;

for i=1:N:height-N+1
for j=1:N:width-N+1 %for every block in the anchor frame
    
% for every block (i,j), culculate the best matching block (i+k,j+l) in the rectangle scope
% [(i-R,j-k),(i+R,j+k)]
MAD_min=256*N*N;
dy=0;dx=0;
for k= -R:1:R,
for l= -R:1:R %for every search candidate
    if i+k<1
        MAD=256*N*N;
    elseif i+k>height-N
        MAD=256*N*N;
    elseif j+l<1
        MAD=256*N*N;
    elseif j+l>width-N
        MAD=256*N*N;
    else
% calculate MAD for this candidate
    MAD=sum(sum(abs(double(f1(i:i+N-1,j:j+N-1))-double(f2(i+k:i+k+N-1,j+l:j+l+N-1)))));
    end
if MAD<MAD_min
MAD_min=MAD;
dy=k;dx=l;
end;end;end;

%put the best matching block in the predicted image
fp(i:i+N-1,j:j+N-1)= f2(i+dy:i+dy+N-1,j+dx:j+dx+N-1);

iblk=floor((i-1)/N+1); jblk=floor((j-1)/N+1); %block index
mvx(iblk,jblk)=dx;
mvy(iblk,jblk)=dy;  %record the estimated MV
end;end;
figure,imshow(uint8(fp)),title('predict');

% figure,quiver(mvx,mvy);title('move vector');
[X,Y]=meshgrid(N/2:N:256-N/2);
Y=256-Y;
figure,quiver(X,Y,mvx,mvy),title('motion vector');

diff=abs(double(f1)-fp);
figure,imshow(uint8(diff)),title('diff');

PSNR=20*log10(255)+20*log10(256)-10*log10(sum(sum(diff.*diff)));

⌨️ 快捷键说明

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