コード例 #1
0
ファイル: PatchVariance.cpp プロジェクト: Jaheen/YATLD
double PatchVariance::computeVariance(const BoundingBox& patch) const
{
    double sum = integralImg.at<double>(patch.br())
                 - integralImg.at<double>(patch.br().y, patch.x)
                 - integralImg.at<double>(patch.y, patch.br().x)
                 + integralImg.at<double>(patch.tl());
    double sumSq = sqIntegralImg.at<double>(patch.br())
                   - sqIntegralImg.at<double>(patch.br().y, patch.x)
                   - sqIntegralImg.at<double>(patch.y, patch.br().x)
                   + sqIntegralImg.at<double>(patch.tl());
    return sumSq / patch.area() - pow(sum / patch.area(), 2);
}
コード例 #2
0
ファイル: TLD.cpp プロジェクト: AaronPlay/OpenTLD
double TLD::getVar(const BoundingBox& box,const Mat& sum,const Mat& sqsum){
  double brs = sum.at<int>(box.y+box.height,box.x+box.width);
  double bls = sum.at<int>(box.y+box.height,box.x);
  double trs = sum.at<int>(box.y,box.x+box.width);
  double tls = sum.at<int>(box.y,box.x);
  double brsq = sqsum.at<double>(box.y+box.height,box.x+box.width);
  double blsq = sqsum.at<double>(box.y+box.height,box.x);
  double trsq = sqsum.at<double>(box.y,box.x+box.width);
  double tlsq = sqsum.at<double>(box.y,box.x);
  double mean = (brs+tls-trs-bls)/((double)box.area());
  double sqmean = (brsq+tlsq-trsq-blsq)/((double)box.area());
  return sqmean-mean*mean;
}
コード例 #3
0
ファイル: BezierCurve.cpp プロジェクト: spinos/aphid
bool BezierCurve::intersectBox(BezierSpline & spline, const BoundingBox & box)
{
	BoundingBox abox;
	spline.getAabb(&abox);
	
	if(!abox.intersect(box)) return false;
	
	if(abox.inside(box)) return true;
	
	BezierSpline stack[64];
	int stackSize = 2;
	spline.deCasteljauSplit(stack[0], stack[1]);
	
	while(stackSize > 0) {
		BezierSpline c = stack[stackSize - 1];
		stackSize--;
		
		abox.reset();
		abox.expandBy(c.cv[0]);
		abox.expandBy(c.cv[1]);
		abox.expandBy(c.cv[2]);
		abox.expandBy(c.cv[3]);
		
		if(abox.inside(box)) return true;
		
		if(abox.intersect(box)) {
			if(abox.area() < 0.0001f) return true;
			
			BezierSpline a, b;
			c.deCasteljauSplit(a, b);
			
			stack[ stackSize ] = a;
			stackSize++;
			stack[ stackSize ] = b;
			stackSize++;
		}
	}
	
	return false;
}