多媒体信息处理-视频运动估计算法(6)

2019-02-15 15:32

武汉理工大学《通信工程应用技术综合训练与实习》报告

%%%%%

[rownum colnum] = size(I1);

II=zeros(rownum+2*dm,colnum+2*dm); II(dm+1:dm+rownum,dm+1:dm+colnum)=I1; for i=1:dm

II(i,dm+1:dm+colnum)=II(dm+1,dm+1:dm+colnum);

II(rownum+dm+i,dm+1:dm+colnum)=II(dm+rownum,dm+1:dm+colnum); end for j=1:dm

II(1:rownum+2*dm,j)=II(1:rownum+2*dm,dm+1);

II(1:rownum+2*dm,colnum+dm+j)=II(1:rownum+2*dm,dm+colnum); end

blocksize=16;

rowblocks =rownum/blocksize; colblocks =colnum/blocksize;

A=99999999999999999999; %为了找到最小的均方误差,A用于设定一个很大的初值

Eij=0;

xrecord=ones(16,16); %xrecord,yrecord用于存放匹配块的块号,即运动矢量

yrecord=ones(16,16);

diff=zeros(256,256); %这幅图像的大小为256*256,diff用于存放像素差值

tic

for x=0:(rowblocks-1) %x表示行中第几个子块 row=x*blocksize;

22

武汉理工大学《通信工程应用技术综合训练与实习》报告

for y=0:(colblocks-1) %y表示列中第几个子块

col=y*blocksize;

tempx=x*blocksize+1:(x+1)*blocksize; tempy=y*blocksize+1:(y+1)*blocksize;

for p=-dm:dm

for q=-dm:dm %(p,q)表示在x,y对应子块在前一帧中所的搜索位置

Eij=0;

Eij=sum(sum((I2(row+1:row+blocksize,col+1:col+blocksize)-II(row+dm+p+1:row+dm+p+blocksize,col+dm+q+1:col+dm+q+blocksize)).^2))/(blocksize^2);

if Eij

A=Eij; xrecord(x+1,y+1)=p;

yrecord(x+1,y+1)=q;

end end end

A=999999999999999999; for mx=1:blocksize for ny=1:blocksize

diff(row+mx,col+ny)=I2(row+mx,col+ny)-II(row+mx+dm+xrecord(x+1,y+1),col+ny+dm+yrecord(x+1,y+1));

23

武汉理工大学《通信工程应用技术综合训练与实习》报告

end end end end

for x=0:(rowblocks-1) %x表示行中第几个子块

row=x*blocksize;

for y=0:(colblocks-1) %y表示列中第几个子块

col=y*blocksize;

III(row+1:row+blocksize,col+1:col+blocksize)=II(row+dm+xrecord(x+1,y+1)+1:row+dm+xrecord(x+1,y+1)+blocksize,col+dm+yrecord(x+1,y+1)+1:col+dm+yrecord(x+1,y+1)+blocksize)+diff(row+1:row+blocksize,col+1:col+blocksize);

end end toc FS_time=toc; mse=sum(sum(diff.^2)); mse=mse/(rownum*colnum); FS_PSNR=10*log10(255*255/mse); 三.三步搜索法子程序 %三步搜索法

24

武汉理工大学《通信工程应用技术综合训练与实习》报告

function [TSS_PSNR,TSS_time,diff,III,xrecord,yrecord]=TSS(I1,I2) dm=7;

%给图像扩边,每个边都扩dm大小 [rownum colnum] = size(I1);

II=zeros(rownum+2*dm,colnum+2*dm); II(dm+1:dm+rownum,dm+1:dm+colnum)=I1; for i=1:dm

II(i,dm+1:dm+colnum)=II(dm+1,dm+1:dm+colnum);

II(rownum+dm+i,dm+1:dm+colnum)=II(dm+rownum,dm+1:dm+colnum); end for j=1:dm

II(1:rownum+2*dm,j)=II(1:rownum+2*dm,dm+1);

II(1:rownum+2*dm,colnum+dm+j)=II(1:rownum+2*dm,dm+colnum); end

blocksize=16;

rowblocks =rownum/blocksize; colblocks =colnum/blocksize;

A=99999999999999999999; %为了找到最小的均方误差,A用于设定一个很大的初值

Eij=0;

xrecord=ones(16,16); %xrecord,yrecord用于存放匹配块的块号,即运动矢量

yrecord=ones(16,16);

diff=zeros(256,256); %这幅图像的大小为256*256,diff用于存放像素差值

tic

for x=0:(rowblocks-1) %x表示行中第几个子块

25

武汉理工大学《通信工程应用技术综合训练与实习》报告

row=x*blocksize;

for y=0:(colblocks-1) %y表示列中第几个子块

col=y*blocksize;

tempx=x*blocksize+1:(x+1)*blocksize; tempy=y*blocksize+1:(y+1)*blocksize;

for p1=-4:4:4 %第一步

for q1=-4:4:4 %(p,q)表示在x,y对应子块在前一帧中所的搜索位置

Eij=0;

Eij=sum(sum((I2(row+1:row+blocksize,col+1:col+blocksize)-II(row+dm+p1+1:row+dm+p1+blocksize,col+dm+q1+1:col+dm+q1+blocksize)).^2))/(blocksize^2);

if Eij

A=Eij; xrecord(x+1,y+1)=p1;

yrecord(x+1,y+1)=q1;

end end end

p1=xrecord(x+1,y+1); q1=yrecord(x+1,y+1);

26


多媒体信息处理-视频运动估计算法(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:柜员综合理论知识题库(一)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: