private void GetVarianceXY() { if (skelQ.Count <= 0) { return; } Skeleton sd = skelQ.Last(); if (sd == null) { return; } JointGroup joints = new JointGroup(); joints.Head = sd.Joints[JointType.Head]; joints.ShoulderCenter = sd.Joints[JointType.ShoulderCenter]; joints.ShoulderLeft = sd.Joints[JointType.ShoulderLeft]; joints.ShoulderRight = sd.Joints[JointType.ShoulderRight]; joints.Spine = sd.Joints[JointType.Spine]; joints.ElbowLeft = sd.Joints[JointType.ElbowLeft]; joints.ElbowRight = sd.Joints[JointType.ElbowRight]; joints.WristLeft = sd.Joints[JointType.WristLeft]; joints.WristRight = sd.Joints[JointType.WristRight]; float meanX = 0; float meanY = 0; float varianceX = 0; float varianceY = 0; meanX += joints.Head.Position.X; meanX += joints.Spine.Position.X; meanX += joints.ShoulderCenter.Position.X; meanX += joints.ShoulderLeft.Position.X; meanX += joints.ShoulderRight.Position.X; meanX += joints.ElbowLeft.Position.X; meanX += joints.ElbowRight.Position.X; meanX += joints.WristLeft.Position.X; meanX += joints.WristRight.Position.X; meanX /= numOfJoints; varianceX += (meanX - (float)joints.Head.Position.X) * (meanX - (float)joints.Head.Position.X); varianceX += (meanX - (float)joints.Spine.Position.X) * (meanX - (float)joints.Spine.Position.X); varianceX += (meanX - (float)joints.ShoulderCenter.Position.X) * (meanX - (float)joints.ShoulderCenter.Position.X); varianceX += (meanX - (float)joints.ShoulderLeft.Position.X) * (meanX - (float)joints.ShoulderLeft.Position.X); varianceX += (meanX - (float)joints.ShoulderRight.Position.X) * (meanX - (float)joints.ShoulderRight.Position.X); varianceX += (meanX - (float)joints.ElbowLeft.Position.X) * (meanX - (float)joints.ElbowLeft.Position.X); varianceX += (meanX - (float)joints.ElbowRight.Position.X) * (meanX - (float)joints.ElbowRight.Position.X); varianceX += (meanX - (float)joints.WristLeft.Position.X) * (meanX - (float)joints.WristLeft.Position.X); varianceX += (meanX - (float)joints.WristRight.Position.X) * (meanX - (float)joints.WristRight.Position.X); varianceX /= numOfJoints; meanY += joints.Head.Position.Y; meanY += joints.Spine.Position.Y; meanY += joints.ShoulderCenter.Position.Y; meanY += joints.ShoulderLeft.Position.Y; meanY += joints.ShoulderRight.Position.Y; meanY += joints.ElbowLeft.Position.Y; meanY += joints.ElbowRight.Position.Y; meanY += joints.WristLeft.Position.Y; meanY += joints.WristRight.Position.Y; meanY /= numOfJoints; varianceY += (meanY - (float)joints.Head.Position.Y) * (meanY - (float)joints.Head.Position.Y); varianceY += (meanY - (float)joints.Spine.Position.Y) * (meanY - (float)joints.Spine.Position.Y); varianceY += (meanY - (float)joints.ShoulderCenter.Position.Y) * (meanY - (float)joints.ShoulderCenter.Position.Y); varianceY += (meanY - (float)joints.ShoulderLeft.Position.Y) * (meanY - (float)joints.ShoulderLeft.Position.Y); varianceY += (meanY - (float)joints.ShoulderRight.Position.Y) * (meanY - (float)joints.ShoulderRight.Position.Y); varianceY += (meanY - (float)joints.ElbowLeft.Position.Y) * (meanY - (float)joints.ElbowLeft.Position.Y); varianceY += (meanY - (float)joints.ElbowRight.Position.Y) * (meanY - (float)joints.ElbowRight.Position.Y); varianceY += (meanY - (float)joints.WristLeft.Position.Y) * (meanY - (float)joints.WristLeft.Position.Y); varianceY += (meanY - (float)joints.WristRight.Position.Y) * (meanY - (float)joints.WristRight.Position.Y); varianceY /= numOfJoints; JointInfo j = new JointInfo(); j.joints = joints; j.meanX = meanX; j.meanY = meanY; j.varianceX = varianceX; j.varianceY = varianceY; }
private void EnqJointPointGroup(JointPointGroup jpg) { jpgQ.Enqueue(jpg); if (jpgQ.Count > jpgQmax) { jpgQ.Dequeue(); } this.curr_jpg = jpgQ.Last(); JointInfo j = new JointInfo(); float meanX = 0; float meanY = 0; float varianceX = 0; float varianceY = 0; meanX += jpg.Head.X; meanX += jpg.Spine.X; meanX += jpg.ShoulderCenter.X; meanX += jpg.ShoulderLeft.X; meanX += jpg.ShoulderRight.X; meanX += jpg.ElbowLeft.X; meanX += jpg.ElbowRight.X; meanX += jpg.WristLeft.X; meanX += jpg.WristRight.X; meanX /= numOfJoints; varianceX += (meanX - (float)jpg.Head.X) * (meanX - (float)jpg.Head.X); varianceX += (meanX - (float)jpg.Spine.X) * (meanX - (float)jpg.Spine.X); varianceX += (meanX - (float)jpg.ShoulderCenter.X) * (meanX - (float)jpg.ShoulderCenter.X); varianceX += (meanX - (float)jpg.ShoulderLeft.X) * (meanX - (float)jpg.ShoulderLeft.X); varianceX += (meanX - (float)jpg.ShoulderRight.X) * (meanX - (float)jpg.ShoulderRight.X); varianceX += (meanX - (float)jpg.ElbowLeft.X) * (meanX - (float)jpg.ElbowLeft.X); varianceX += (meanX - (float)jpg.ElbowRight.X) * (meanX - (float)jpg.ElbowRight.X); varianceX += (meanX - (float)jpg.WristLeft.X) * (meanX - (float)jpg.WristLeft.X); varianceX += (meanX - (float)jpg.WristRight.X) * (meanX - (float)jpg.WristRight.X); varianceX /= numOfJoints; meanY += jpg.Head.Y; meanY += jpg.Spine.Y; meanY += jpg.ShoulderCenter.Y; meanY += jpg.ShoulderLeft.Y; meanY += jpg.ShoulderRight.Y; meanY += jpg.ElbowLeft.Y; meanY += jpg.ElbowRight.Y; meanY += jpg.WristLeft.Y; meanY += jpg.WristRight.Y; meanY /= numOfJoints; varianceY += (meanY - (float)jpg.Head.Y) * (meanY - (float)jpg.Head.Y); varianceY += (meanY - (float)jpg.Spine.Y) * (meanY - (float)jpg.Spine.Y); varianceY += (meanY - (float)jpg.ShoulderCenter.Y) * (meanY - (float)jpg.ShoulderCenter.Y); varianceY += (meanY - (float)jpg.ShoulderLeft.Y) * (meanY - (float)jpg.ShoulderLeft.Y); varianceY += (meanY - (float)jpg.ShoulderRight.Y) * (meanY - (float)jpg.ShoulderRight.Y); varianceY += (meanY - (float)jpg.ElbowLeft.Y) * (meanY - (float)jpg.ElbowLeft.Y); varianceY += (meanY - (float)jpg.ElbowRight.Y) * (meanY - (float)jpg.ElbowRight.Y); varianceY += (meanY - (float)jpg.WristLeft.Y) * (meanY - (float)jpg.WristLeft.Y); varianceY += (meanY - (float)jpg.WristRight.Y) * (meanY - (float)jpg.WristRight.Y); varianceY /= numOfJoints; j.meanX = meanX; j.meanY = meanY; j.varianceX = varianceX; j.varianceY = varianceY; //jointInfoQ.Enqueue(j); }