示例#1
0
	void SweepAndPrune::swapEndPoints(unsigned int axis, unsigned int a, unsigned int b) {
		auto axisvec = _axis[axis];

		EndPoint temp = axisvec->at(a);
		axisvec->at(a) = axisvec->at(b);
		axisvec->at(b) = temp;

		EndPoint& aend = axisvec->at(b);
		EndPoint& bend = axisvec->at(a);
		auto amax = isMax(aend.box);
		auto bmax = isMax(bend.box);
		auto aidx = boxIndex(aend.box);
		auto bidx = boxIndex(bend.box);
		auto& abox = _objects[aidx];
		auto& bbox = _objects[bidx];

		if (amax)
			abox.max[axis] = b;
		else
			abox.min[axis] = b;
		if (bmax)
			bbox.max[axis] = a;
		else
			bbox.min[axis] = a;

	}
示例#2
0
void HessianDetector::findLevelKeypoints(float curScale, float pixelDistance)
{
   assert(par.border >= 2);
   const int rows = cur.rows;
   const int cols = cur.cols;
   for (int r = par.border; r < (rows - par.border); r++)
   {
      for (int c = par.border; c < (cols - par.border); c++) 
      {
         const float val = cur.at<float>(r,c);
         if ( (val > positiveThreshold && (isMax(val, cur, r, c) && isMax(val, low, r, c) && isMax(val, high, r, c))) ||
              (val < negativeThreshold && (isMin(val, cur, r, c) && isMin(val, low, r, c) && isMin(val, high, r, c))) )
            // either positive -> local max. or negative -> local min.
            localizeKeypoint(r, c, curScale, pixelDistance);
      }
   }
}
示例#3
0
// Delete list.
void
SkFontDataList::release()
{
    if( isMax() )
    {
        resetFonts();
        free( mFonts );
        mFonts = NULL;
    }
}
示例#4
0
	void SweepAndPrune::fixRefs(unsigned int axis, unsigned int start) {
		auto axisvec = _axis[axis];
		for (unsigned int i = start; i < axisvec->size() - 1; ++i) {
			unsigned int boxIdx = boxIndex(axisvec->at(i).box);
			bool max = isMax(axisvec->at(i).box);
			if (max)
				_objects[boxIdx].max[axis] = i;
			else
				_objects[boxIdx].min[axis] = i;
		}
	}
示例#5
0
// Clear list.
void
SkFontDataList::resetFonts()
{
    if( isMax() )
    {
        for( uint32_t n = 0 ; n < mNumFonts ; n++ )
        {
            if( mFonts[n] )
            {
                SkDELETE( mFonts[n] );
                mFonts[n] = NULL;
            }
        }
        mNumFonts = 0;
    }
}
示例#6
0
void LinearProblem::RemoveRow(int row) {
  static int indices[MAX_VARS];
  static double values[MAX_VARS];

  int nonZeros = glp_get_mat_row(lp_, row, indices, values);
  glp_set_row_bnds(lp_, row, GLP_FR, 0.0, 0.0);

  // glpk ignores the 0's index of the array
  int ind[2];
  double val[2];
  for (int i = 1; i <= nonZeros; ++i) {
    ind[1] = indices[i];
    val[1] = (isMax(colToVar_[indices[i]]) ? -1 : 1);
    int r = glp_add_rows(lp_, 1);
    glp_set_row_bnds(lp_, r, GLP_UP, 0.0, MINUS_INFTY);
    glp_set_mat_row(lp_, r, 1, ind, val);
  }
}
示例#7
0
文件: main01.c 项目: HalseyLee/C
int main(int argc, const char * argv[]) {
    int num[] = {34,56,67,23,567,67,98,87};
    int len = sizeof(num) / sizeof(num[0]);
    //最大值
    int res = isMax(num,len);
    printf("%d \n",res);
    //最小值
    res = isMin(num,len);
    printf("%d \n",res);
    //累加和
    res = sum(num,len);
    printf("%d \n",res);
    //平均数
    res = avg(num,len);
    printf("%d \n",res);
    //找
    int key = 23;
    res = number(num,len,key);
    printf("%d \n",res);
}
示例#8
0
bool Normalization::algorithm() {
  KstVectorPtr vectorIn = inputVector(VECTOR_IN);
  KstVectorPtr vectorOut = outputVector(VECTOR_OUT);
  double *arr;
  double *Yi;
  int iLength = vectorIn->length();
  int w = 1;

  arr = new double[iLength];
  Yi = new double[iLength];

  for(int i=0; i<iLength; i++)
  {
    Yi[i] = vectorIn->value()[i];
  }

  //
  // exclude peak values
  //
  for(int loop=0; loop<2; loop++)
  {
    for(int i=0; i<iLength; i++)
    {
      arr[i] = Yi[i];
    }

    for(int i=0; i<iLength; i++)
    {
      if(isMin(Yi, i, iLength) || isMax(Yi, i, iLength))
      {
        excludePts(arr, i, w, iLength);
      }
    }

    searchHighPts(arr, iLength);
    interpolate(Yi, arr, iLength);
  }

  //
  // do a piecewise linear fit
  //
  vectorOut->resize(iLength, false);

  int L = 3;
  double cof[2] = { 0.0, 0.0 };

  for(int i=0; i<iLength; i=i+L)
  {
    fit(i, L, iLength, Yi, cof, vectorOut);
  }

  //
  // normalize
  //
  for(int i=0; i<iLength; i++)
  {
    vectorOut->value()[i] = vectorIn->value()[i] / vectorOut->value()[i];
  }

  //
  // exclude off points
  //
  for(int i=0; i<iLength; i++)
  {
    if(vectorOut->value()[i] < 0.0 || vectorOut->value()[i] > 1.2)
    {
      vectorOut->value()[i] = NOPOINT;
    }
  }

  delete[] arr;
  delete[] Yi;

  return true;
}