-
大小: 16KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-03
- 語(yǔ)言: 其他
- 標(biāo)簽: 運(yùn)動(dòng)估計(jì)??
資源簡(jiǎn)介
各種運(yùn)動(dòng)估計(jì)算法代碼,包括三步法,四步法,鉆石搜索等等,通俗易懂,對(duì)想學(xué)這塊內(nèi)容的初學(xué)者來(lái)說(shuō)是個(gè)不錯(cuò)的入門資料。

代碼片段和文件信息
#include?“stdio.h“
#include?“stdlib.h“
#include?“malloc.h“
#include?“string.h“
#include?“sys/timeb.h“
#include?“math.h“
#include?“inf.h“
#define?MIN(ab)?((a)<(b))?(a):(b);
#define?MAX(ab)?((a)>(b))?(a):(b);
int?SAD(const?int?oxconst?int?oyconst?int?dxconst?int?dyconst?int?heightconst?int?widthuint32?&best_sad)
{
const?int?rx=ox+dxry=oy+dy;
if(?abs(dx)>MAX_MOTION?||?abs(dy)>MAX_MOTION?||?flag_search[dx][dy]>0?)
return?0;
if(?rx<0?||?ry<0?||?rx+height>XX?||?ry+width>YY?)
return?0;
uint32?sad=0;
frame_info.frame_pot++;
const?uint8?*p1=¤t_frame[ox][oy]*p2=&ref_frame[rx][ry];
for(int?i=0;i {
for(int?j=0;j {
sad+=abs(*(p1++)-*(p2++));
}
p1+=(YY-width);p2+=(YY-width);
}
flag_search[dx][dy]=1+sad;
if(sad>=best_sad)
return?0;
best_sad=sad;
return?1;
}
void?rebuilt(const?int?xconst?int?yconst?int?heightconst?int?width)
{
const?int?dx=frame_info.mv[x][y].dxdy=frame_info.mv[x][y].dy;
const?int?ox=x*BLOCK_HEIGTHoy=y*BLOCK_WIDTH;
const?int?rx=ox+dxry=oy+dy;
int?tmp;
const?uint8?*p1=¤t_frame[ox][oy]*p2=&ref_frame[rx][ry];
if(?abs(dx)>MAX_MOTION?||?abs(dy)>MAX_MOTION?)
exit(0);
if(?rx<0?||?ry<0?||?rx+height>XX?||?ry+width>YY?)
exit(0);
for(int?i=0;i {
for(int?j=0;j {
tmp=*(p1++)-*(p2++);
frame_info.frame_sse+=tmp*tmp;
}
p1+=(YY-width);p2+=(YY-width);
}
}
void?search_FS(const?int?xconst?int?yconst?int?heigthconst?int?width)
{
const?int?ox=x*BLOCK_HEIGTHoy=y*BLOCK_WIDTH;
uint32?sad=0xffffff;
MV?mv;
for(int?i=-MAX_MOTION;i<=MAX_MOTION;i++)
{
for(int?j=-MAX_MOTION;j<=MAX_MOTION;j++)
{
if(SAD(oxoyijheigthwidthsad)==1)
{
mv.dx=i;mv.dy=j;
}
}
}
frame_info.mv[x][y]=mv;
frame_info.sad[x][y]=sad;
frame_info.frame_sad+=sad;
}
#define?PATTERN_SEARCH(patternnumflag)?\
do\
{\
mvx=mv.dx;mvy=mv.dy;\
for(int?i=0;i {\
if(SAD(oxoymvx+pattern[i][0]mvy+pattern[i][1]heigthwidthsad)==1)\
{\
mv.dx=mvx+pattern[i][0];mv.dy=mvy+pattern[i][1];\
}\
}\
}while?(?(mv.dx!=mvx?||?mv.dy!=mvy)?&&?flag==1?);
void?search_4SS(const?int?xconst?int?yconst?int?heigthconst?int?width)
{
const?int?ox=x*BLOCK_HEIGTHoy=y*BLOCK_WIDTH;
const?int?L4SS[9][2]={{00}{02}{-22}{-20}{-2-2}{0-2}{2-2}{20}{22}};
const?int?S4SS[9][2]={{00}{01}{-11}{-10}{-1-1}{0-1}{1-1}{10}{11}};
uint32?sad=0xffffff;
MV?mv={00};int?mvxmvy;
PATTERN_SEARCH(L4SS91)
PATTERN_SEARCH(S4SS90)
frame_info.mv[x][y]=mv;
frame_info.sad[x][y]=sad;
frame_info.frame_sad+=sad;
}
void?search_BBGDS(const?int?xconst?int?yconst?int?heigthconst?int?width)
{
const?int?ox=x*BLOCK_HEIGTHoy=y*BLOCK_WIDTH;
const?int?BBGDS[9][2]={{00}{01}{-11}{-10}{-1-1}{0-1}{1-1}{10}{11}};
uint32?sad=0xffffff;
MV?mv={00};int?mvxmvy;
PATTERN_SEARCH(BBGDS91)
frame_info.mv[x][y]=mv
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????1122??2007-03-05?15:06??運(yùn)動(dòng)估計(jì)方法比較\inf.h
?????文件??????18105??2007-03-06?16:58??運(yùn)動(dòng)估計(jì)方法比較\main.cpp
?????文件???????4329??2006-05-20?14:41??運(yùn)動(dòng)估計(jì)方法比較\zhang.dsp
?????文件????????535??2006-05-20?10:07??運(yùn)動(dòng)估計(jì)方法比較\zhang.dsw
?????文件??????66560??2007-03-14?19:31??運(yùn)動(dòng)估計(jì)方法比較\zhang.ncb
?????文件??????48640??2007-03-14?19:31??運(yùn)動(dòng)估計(jì)方法比較\zhang.opt
?????文件???????2887??2007-03-06?16:58??運(yùn)動(dòng)估計(jì)方法比較\zhang.plg
?????文件????????991??2007-03-14?19:32??運(yùn)動(dòng)估計(jì)方法比較\說(shuō)明.txt
?????目錄??????????0??2007-03-14?19:31??運(yùn)動(dòng)估計(jì)方法比較
-----------?---------??----------?-----??----
???????????????143169????????????????????9
- 上一篇:遺傳算法——最短路徑問(wèn)題
- 下一篇:幾個(gè)重要的prolog程序
評(píng)論
共有 條評(píng)論