Example #1
0
void ImgGeo::setPrincipalAxes()
{
    // PURPOSE: Set principal axes
    // RETURNS: None
    
    axisMax = sqrt(prinMax/getMoment(0,0));
    axisMin = sqrt(prinMin/getMoment(0,0));
}
Example #2
0
void ImgGeo::setCentroid()
{
    // PURPOSE: Sets mean x and y - the centroid location
    // RETURNS: None
    
    ctrX = getMoment(1,0)/getMoment(0,0);
    ctrY = getMoment(0,1)/getMoment(0,0);
}
Example #3
0
void ImgGeo::setPrincipalMoments()
{
    // PURPOSE: Sets principal moments
    // RETURNS: None
    
    // Init vars
    double o2x = getMoment(2,0);
    double o2y = getMoment(0,2);
    double o1xy = getMoment(1,1);
    
    // Set principal moments
    prinMax = 0.5*(o2x + o2y) + 0.5*sqrt(pow(o2x,2) + pow(o2y,2) - 2*o2x*o2y + 4*pow(o1xy,2));
    prinMin = 0.5*(o2x + o2y) - 0.5*sqrt(pow(o2x,2) + pow(o2y,2) - 2*o2x*o2y + 4*pow(o1xy,2));
}
Example #4
0
void ImgGeo::setOrientation()
{
    // PURPOSE: Set angle of orientation
    // RETURNS: None
    
    // Init vars
    double o2x = getMoment(2,0);
    double o2y = getMoment(0,2);
    double o1xy = getMoment(1,1);
    double tanX,tanY;
    
    tanX = (prinMax - o2x)/o1xy;
    tanY = (prinMax - o2y)/o1xy;
    
    orienTheta = atan2(tanY,tanX);
}
Example #5
0
float Continuous::getMomentCore(int iMoment, const Ensemble& iEnsemble, const Parameters& iParameters) const {
   // TODO: Not tested
   const Variable* var = Variable::get(iEnsemble.getVariable());

   float total = 0;

   float minX  = var->getMin();
   float maxX  = var->getMax();
   int   nX    = 1000;
   float dX    = (maxX - minX)/((float) nX);

   float c = 0;
   if(iMoment > 1) {
      // Compute center of moment
      c = getMoment(1, iEnsemble, iParameters);
   }

   for(int i = 0; i < nX; i++) {
      float x = minX + i*dX;
      float pdf = getPdf(x, iEnsemble, iParameters);
      if(!Global::isValid(pdf))
         return Global::MV;

      total += pow(x - c, iMoment) * pdf;
   }
   return total * dX;
}
Example #6
0
//==============================================================================
// Note: Taken from Springer Handbook, chapter 2.2.11
void Inertia::computeSpatialTensor()
{
  Eigen::Matrix3d C = math::makeSkewSymmetric(mCenterOfMass);

  // Top left
  mSpatialTensor.block<3,3>(0,0) = getMoment() + mMass*C*C.transpose();

  // Bottom left
  mSpatialTensor.block<3,3>(3,0) = mMass*C.transpose();

  // Top right
  mSpatialTensor.block<3,3>(0,3) = mMass*C;

  // Bottom right
  mSpatialTensor.block<3,3>(3,3) = mMass*Eigen::Matrix3d::Identity();
}
Example #7
0
int main()
{
	CvCapture* capture = 0;
	printf("Initializing Capture...\n");
//  capture = cvCreateFileCapture("http://192.168.1.100/videostream.cgi?user=admin&pwd=123456");
 capture = cvCaptureFromCAM( CV_CAP_ANY );
  printf("Camera found\n");
	if(!capture){printf("Could not initialize camera...\n");}
	printf("Capture Success!!!\n");
	cvNamedWindow("Video", CV_WINDOW_AUTOSIZE);
	cvResizeWindow("Video", 640,480);
	cvMoveWindow("Video", 0,100);
	cvNamedWindow("HSV",CV_WINDOW_AUTOSIZE);
	cvNamedWindow("ROI");
	cvMoveWindow("ROI", 700,100);

  int state = 0;
  int track = 1;
  int change= 2;
  int reset = 3;
  int clear = 4;

	while(1)
	{
	  // Hold frame captured from camera
		IplImage* img = cvQueryFrame(capture);
		if(!img){printf("Image Query Failed");break;}
		
	  key = cvWaitKey(10);
	  if(key=='t'){state = track;}
	  if(key=='c'){state = change;}
	  if(key=='r'){state = reset;}
	  if(key=='q'){state = clear;}
	  key = cvWaitKey(10);
	
		
		
		if(state == track)
		{   
		  printf("Tracking\n");
      imgRed = getThresholdImage(img);
      imgPos = getMoment(img);
    }   
	  key = cvWaitKey(10); 
       	
		if(state == change)
		{
      cvRectangle(img,cvPoint(250,300),cvPoint(400,200),CV_RGB(255,0,0),5,8);
      cvWaitKey(30);
		  cvShowImage("Video",img);
			//printf("Getting Color\n");
			IplImage* imgColor = getColor(img);
  	  state = 0;
		}
		key = cvWaitKey(10);
		
		if(state == reset)
		{
			 printf("Resetting\n");
			 minC = hsv_min;
			 maxC = hsv_max;
			 state = 0;
		}
		
		if(state == clear)
		{
		  printf("Paused\n");
		  state = 0;
		  
		}
    else 
    {
      key = cvWaitKey(10);
    }

		cvShowImage("HSV", imgRed);
		cvShowImage("Video", img);
		cvReleaseImage(&imgPos);
		cvReleaseImage(&imgRed);

    if ( (cvWaitKey(10) & 255) == 27 ) break;
		//key = cvWaitKey(10);
	}
	cvDestroyWindow("Video");
	cvDestroyWindow("HSV");
	cvDestroyWindow("ROI");
	cvReleaseCapture(&capture);
}