1.初始化state成员:Ithreshold=5;interactionRadius=1;numberofDisparity=64(允许的最大视差);
K=lamba=lamba1=lamba2=-1(用来初始化state2的成员);
初始化各个CvMat*(left,right,disleft,disright,ptrleft,ptrright,vtxBuf,edgeBuf);
2.初始化state2成员:Ithreshold=5;interactionRadius=1;
K=lamba=lamba1=lamba2=-16;
3.初始化icvTruncTab[512]=[0,0,…,1,2,…,254,255,255];
icvCutOffSqrTab[256]=MIN(i*i,CUTOFF),CUTOFF=1000;
4.用每个像素点的四邻域中的最大和最小,以及自身值来初始化state->left和state->right;
5.进入icvComputeK()函数:令k=16;函数delta=icvDataCostFuncGraySubpix()输出||I(x)-J(x-d)||,即左右图中视差为d的像素强度差值;取k个最小的delta求和取平均返回K。并用K来初始化state2中的K,;
6.初始化数据项查找表dataCostFuncTab[1001]=MIN(i*16-K,0);模糊项的两个查找表SmoothnessR[2001]=MIN(abs(i-CUTOFF),1)(0,1表)和SmoothGrayDiff[512]=lamba1 or lamba2;
7.计算一个初始能量,固定值;
8.进入Enew=icvAlphaExpand()主函数,包括三步,构造图,最大流,修改视差;
SmoothnessCostFunc()函数输出模糊项;
………….待补充
9.over
关于图的构造部分是核心,代码实在难以理解。。。