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

📄 fig6_21_hbma.m

📁 these are the Mtlab functions to plot the figures in the book Communication system (by Haykin)
💻 M
字号:
%for performing HBMA between two images
%main file

%function[]=hbma(FileName1, FileName2,dx,dy, MVname, PImgName);
%Img1=fread(fopen(FileName1),[dx,dy]);
%Img2=fread(fopen(FileName2),[dx,dy]);

dx=352;dy=288;
Img1=fread(fopen('foreman69.Y'),[dx,dy]);
Img2=fread(fopen('foreman72.Y'),[dx,dy]);

img13=zeros(dy,dx);img23=zeros(dy,dx);
img13=Img1'; img23=Img2';
figure(1);
image(img13), colormap(gray(256)); axis image;
figure(2);
image(img23), colormap(gray(256)); axis image;

%level 2 image, use averaging filter
dy2=dy/2; dx2=dx/2;
img12=zeros(dy2,dx2);img22=zeros(dy2,dx2);
img12(1:dy2,1:dx2)=(img13(1:2:dy,1:2:dx)+img13(1:2:dy,2:2:dx)+img13(2:2:dy,1:2:dx)+img13(2:2:dy,2:2:dx))/4;
img22(1:dy2,1:dx2)=(img23(1:2:dy,1:2:dx)+img23(1:2:dy,2:2:dx)+img23(2:2:dy,1:2:dx)+img23(2:2:dy,2:2:dx))/4;


figure(3);
image(img12), colormap(gray(256)); axis image;
figure(4);
image(img22), colormap(gray(256)); axis image;

%level 1 image (top level)  use averaging filter from level 2
dy1=dy2/2; dx1=dx2/2;
img11=zeros(dy1,dx1);img21=zeros(dy1,dx1);
img11(1:dy1,1:dx1)=(img12(1:2:dy2,1:2:dx2)+img12(1:2:dy2,2:2:dx2)+img12(2:2:dy2,1:2:dx2)+img12(2:2:dy2,2:2:dx2))/4;
img21(1:dy1,1:dx1)=(img22(1:2:dy2,1:2:dx2)+img22(1:2:dy2,2:2:dx2)+img22(2:2:dy2,1:2:dx2)+img22(2:2:dy2,2:2:dx2))/4;
figure(5);
image(img11), colormap(gray(256)); axis image;
figure(6);
image(img21), colormap(gray(256)); axis image;


% level 1 matching 
bsize=16; srange=4;
pimg1=zeros(dy1,dx1);
pimg1=img11;
bdy1=ceil(dy1/bsize); bdx1=ceil(dx1/bsize);
mvy1=zeros(bdy1,bdx1); mvx1=zeros(bdy1,bdx1);
[mvy1,mvx1,pimg1]=matching(img11, img21, dy1, dx1, bsize, srange, srange, mvy1, mvx1, pimg1);


figure(7);
image(pimg1), colormap(gray(256)); axis image;axis off;
print -deps2 foreman_HBMA1_pimg.eps
figure(8);
imagesc(abs(img21-pimg1)), colormap(gray(256)); axis image;axis off;
figure(9);
plot_MV_function(dy,dx,bsize*4,mvy1*4,mvx1*4);set(gca,'XTick',[],'YTick',[]);
print -deps2 foreman_HBMA1_MV.eps

% level 2 matching
% interpolate MV from level 1 by replication at block level
bsize=16; srange=4;
pimg2=zeros(dy2,dx2);
pimg2=img12;
bdy2=ceil(dy2/bsize); bdx2=ceil(dx2/bsize);
mvy2=zeros(bdy2,bdx2); mvx2=zeros(bdy2,bdx2);

mvy2(1:2:bdy1*2,1:2:bdx1*2)=2*mvy1(1:bdy1,1:bdx1);
mvy2(1:2:bdy1*2,2:2:bdx1*2)=2*mvy1(1:bdy1,1:bdx1);
mvy2(2:2:bdy1*2,1:2:bdx1*2)=2*mvy1(1:bdy1,1:bdx1);
mvy2(2:2:bdy1*2,2:2:bdx1*2)=2*mvy1(1:bdy1,1:bdx1);

mvx2(1:2:bdy1*2,1:2:bdx1*2)=2*mvx1(1:bdy1,1:bdx1);
mvx2(1:2:bdy1*2,2:2:bdx1*2)=2*mvx1(1:bdy1,1:bdx1);
mvx2(2:2:bdy1*2,1:2:bdx1*2)=2*mvx1(1:bdy1,1:bdx1);
mvx2(2:2:bdy1*2,2:2:bdx1*2)=2*mvx1(1:bdy1,1:bdx1);

[mvy2,mvx2,pimg2]=matching(img12, img22, dy2, dx2, bsize, srange, srange, mvy2, mvx2, pimg2);

figure(10);
image(pimg2), colormap(gray(256)); axis image;axis off;
print -deps2 foreman_HBMA2_pimg.eps
figure(11);
imagesc(abs(img22-pimg2)), colormap(gray(256)); axis image;axis off;
figure(12);
plot_MV_function(dy,dx,bsize*2,mvy2*2,mvx2*2);set(gca,'XTick',[],'YTick',[]);
print -deps2 foreman_HBMA2_MV.eps

% level 3 matching
% interpolate MV from level 1 by replication at block level
bsize=16; srange=4;
pimg3=zeros(dy,dx);
pimg3=img13;
bdy3=ceil(dy/bsize); bdx3=ceil(dx/bsize);
mvy3=zeros(bdy3,bdx3); mvx3=zeros(bdy3,bdx3);

mvy3(1:2:bdy2*2,1:2:bdx2*2)=2*mvy2(1:bdy2,1:bdx2);
mvy3(1:2:bdy2*2,2:2:bdx2*2)=2*mvy2(1:bdy2,1:bdx2);
mvy3(2:2:bdy2*2,1:2:bdx2*2)=2*mvy2(1:bdy2,1:bdx2);
mvy3(2:2:bdy2*2,2:2:bdx2*2)=2*mvy2(1:bdy2,1:bdx2);

mvx3(1:2:bdy2*2,1:2:bdx2*2)=2*mvx2(1:bdy2,1:bdx2);
mvx3(1:2:bdy2*2,2:2:bdx2*2)=2*mvx2(1:bdy2,1:bdx2);
mvx3(2:2:bdy2*2,1:2:bdx2*2)=2*mvx2(1:bdy2,1:bdx2);
mvx3(2:2:bdy2*2,2:2:bdx2*2)=2*mvx2(1:bdy2,1:bdx2);

%integer level
[mvy3,mvx3,pimg3]=matching(img13, img23, dy, dx, bsize, srange, srange, mvy3, mvx3, pimg3);
figure(13);
image(pimg3), colormap(gray(256)); axis image; axis off;
figure(14);
imagesc(abs(img23-pimg3)), colormap(gray(256)); axis image;axis off;
figure(15);
plot_MV_function(dy,dx,bsize,mvy3,mvx3);axis off;


%refine using half-pel at the last level
srange=1;
[mvy3,mvx3,pimg3]=matching_half(img13, img23, dy, dx, bsize, srange, srange, mvy3, mvx3, pimg3);

figure(16);
image(pimg3), colormap(gray(256)); axis image;axis off;
print -deps2 foreman_HBMA3_pimg.eps
figure(17);
imagesc(abs(img23-pimg3)), colormap(gray(256)); axis image;axis off;
figure(18);
plot_MV_function(dy,dx,bsize,mvy3,mvx3);set(gca,'XTick',[],'YTick',[]);
print -deps2 foreman_HBMA3_MV.eps

mse=sum(sum((img23-pimg3).*(img23-pimg3)))/dx/dy;
psnr=10*log10(255*255/mse)

⌨️ 快捷键说明

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