对蓝风车的运动估计算法代码的个人理解
最近在看蓝风车的运动估计算法程序的一些注释与理解:现贴在这里希望对大家能有所帮助,当然有理解不当的地方还请各位指正!
(上传文字有限对程序的注释防在附件里)
注意几点
注意我这个x 表示列,y 表示行)(XX代表高度,YY代表宽度)
1. 这个地方图象的存放地点和图象的尺寸 (图象固定使用一种16*16的宏块没有子宏块的划分.参考帧只有一个.)
#define XX 288#define YY 352(我的图象是这样的采用foreman.yuv和foremanrec.yuv命名)(若自己不清楚可以用YUV播放器看一下!)重构图象在编码的时候将配置文件写好.比如(关于怎样修改配置参数请参照本人的关于配置参数设定的一个帖子<<JM测试模型参数的设定>>)http://bbs.chinavideo.org/viewthread.php?tid=2053&page=1&extra=#pid5847(主要是在DEBUG里设置为-d myencoder.cfg,在config.hDEFINE里设置为myencoder.cfg)InputFile = "E:\\foreman.yuv" # Input sequence (先将YUV文件放至E:\\foreman.yuv)
FramesToBeEncoded = 8 # Number of frames to be coded
SourceWidth = 352 # Frame width
SourceHeight = 288 # Frame height
ReconFile = "E:\\foremanrec.yuv"
2.////宏定义函数由于C语言宏定义只有一行故使用"\"表示转入下一行
#define PATTERN_SEARCH(pattern,num,flag) \do\.......hile ( (mv.dx!=mvx || mv.dy!=mvy) && flag==1 ); 类似还有#define CHECK_ONE_PIXEL(i,j) \
////取a,b,c的中值
2. int x264_median( int a, int b, int c=0 )///用于求MVA,MVB,MVC,MVD等的运动矢量的中值
3. uint32 sad=0xffffff;//有符号为0 用于初始化//????为何取有符号数原因?// MV mv={0,0};上一帧当前位置的运动矢量
4.///获取常用的预测运动矢量列表本人做了一些改动:
/// D B C ////E为当前宏块
A E
if(x>0){pre_mv[1]=frame_info.mv[x-1][y];sad[1]=frame_info.sad[x-1][y];//存放A MVA}
5. #undef PATTERN_SEARCH!!!!!!!!!!!!!!!!!宏定义函数结束
void main()//添加一些输出信息可能对大家理解起来教方便些..for( i=0;i<X;i++)
printf("%d\t\t\t%d\t\t\t%d\n",frame_info.frame_pot,frame_info.frame_sad,frame_info.frame_sse);}
printf("last time display :\nframe\tcost\t峰值信噪比psnrsad/see\n") printf("%d\t\t%.2f\t\t%.2f/%.2f\n",k,(float)frame_info.frame_pot/X/Y,10*log10(XX*YY*255*255.0/frame_info.frame_sad),10*log10(XX*YY*255*255.0/frame_info.frame_sse));
6.对程序的注释和理解请参考附件..
7.错误之处请批评指正.. 具体程序请在视频乐园本人的文章有下载地址!
发表于 @ 2007年05月12日 21:48:00|评论(loading...)|编辑