Exemple #1
0
        //adds the GestureData obj and classLabel to database
        public Sequence Add(GestureData[] sequence, string classLabel)
        {
            if (sequence == null || sequence.Length == 0)
                return null;

            if (!Classes.Contains(classLabel))
                Classes.Add(classLabel);

            int classIndex = Classes.IndexOf(classLabel);

            //create a new obj of Sequence class, to add to the Samples<Sequence> list
            Sequence sample = new Sequence()
            {
                Classes = Classes, //all the classes are stored in a list form
                SourcePath = sequence, //the GestureData obj is added
                Output = classIndex //the class label (int form)
            };

            Samples.Add(sample);

            return sample;
        }
Exemple #2
0
        void TraceTrackedSkeletonJoints(JointCollection jCollection)
        {
            Point3D shl, shr, elbl, elbr, wrstl, wrstr, handl, handr, spine, head;
            if (flagRecording && frameCount >= 6)
            {

                //add check if jointdata is non null
                if (jCollection[JointType.ShoulderLeft].TrackingState == JointTrackingState.Tracked)
                {
                     shl = new Point3D(jCollection[JointType.ShoulderLeft].Position.X, jCollection[JointType.ShoulderLeft].Position.Y, jCollection[JointType.ShoulderLeft].Position.Z);
                }
                else
                {
                     shl = new Point3D(0,0,0);
                }

                if (jCollection[JointType.ShoulderRight].TrackingState == JointTrackingState.Tracked)
                {
                     shr = new Point3D(jCollection[JointType.ShoulderRight].Position.X, jCollection[JointType.ShoulderRight].Position.Y, jCollection[JointType.ShoulderRight].Position.Z);
                }
                else
                {
                     shr = new Point3D(0,0,0);
                }

                if(jCollection[JointType.ElbowLeft].TrackingState == JointTrackingState.Tracked)
                {
                     elbl = new Point3D(jCollection[JointType.ElbowLeft].Position.X, jCollection[JointType.ElbowLeft].Position.Y, jCollection[JointType.ElbowLeft].Position.Z);
                }
                else
                {
                     elbl = new Point3D(0,0,0);
                }

                if(jCollection[JointType.ElbowRight].TrackingState == JointTrackingState.Tracked )
                {
                     elbr = new Point3D(jCollection[JointType.ElbowRight].Position.X, jCollection[JointType.ElbowRight].Position.Y, jCollection[JointType.ElbowRight].Position.Z);
                }
                else
                {
                     elbr = new Point3D(0,0,0);
                }

                    if(jCollection[JointType.WristLeft].TrackingState == JointTrackingState.Tracked)
                    {
                         wrstl = new Point3D(jCollection[JointType.WristLeft].Position.X, jCollection[JointType.WristLeft].Position.Y, jCollection[JointType.WristLeft].Position.Z);
                    }
                else
                {
                     wrstl = new Point3D(0,0,0);
                }

                    if(jCollection[JointType.WristRight].TrackingState == JointTrackingState.Tracked)
                    {
                          wrstr = new Point3D(jCollection[JointType.WristRight].Position.X, jCollection[JointType.WristRight].Position.Y, jCollection[JointType.WristRight].Position.Z);
                    }
                else
                {
                     wrstr = new Point3D(0,0,0);
                }

                   if(jCollection[JointType.HandLeft].TrackingState == JointTrackingState.Tracked)
                   {
                         handl = new Point3D(jCollection[JointType.HandLeft].Position.X, jCollection[JointType.HandLeft].Position.Y, jCollection[JointType.HandLeft].Position.Z);
                   }
                else
                {
                     handl = new Point3D(0,0,0);
                }

                if(jCollection[JointType.HandRight].TrackingState == JointTrackingState.Tracked )
                {
                      handr = new Point3D(jCollection[JointType.HandRight].Position.X, jCollection[JointType.HandRight].Position.Y, jCollection[JointType.HandRight].Position.Z);
                }
                else
                {
                     handr = new Point3D(0,0,0);
                }

                if(jCollection[JointType.Spine].TrackingState == JointTrackingState.Tracked )
                {
                     spine = new Point3D(jCollection[JointType.Spine].Position.X, jCollection[JointType.Spine].Position.Y, jCollection[JointType.Spine].Position.Z);
                }
                else
                {
                     spine = new Point3D(0,0,0);
                }

                if(jCollection[JointType.Head].TrackingState == JointTrackingState.Tracked)
                {
                     head = new Point3D(jCollection[JointType.Head].Position.X, jCollection[JointType.Head].Position.Y, jCollection[JointType.Head].Position.Z);
                }
                else
                {
                     head = new Point3D(0,0,0);
                }
                //frameCount++;

                    GestureData gd = new GestureData(shl, shr, elbl, elbr, wrstl, wrstr, handl, handr, spine, head);
                    sequence.Add(gd);
                    System.Diagnostics.Debug.WriteLine("Seq added===========");
                    frameCount = 0;

                }
            else if(flagRecording)
            {
                frameCount++;
                System.Diagnostics.Debug.Write("~");
            }
        }
Exemple #3
0
        //point[] seq
        public static double[][] Preprocess(GestureData[] sequence)
        {
            double[][] result = new double[sequence.Length][];
            for (int i = 0; i < sequence.Length; i++)
                //using hand right x,yz; hand left x,yz; elbow right x,yz; elbow left x,yz; wrist right x,y; wrist left x,y
                result[i] = new double[] { sequence[i].HandR.X, sequence[i].HandR.Y, sequence[i].HandR.Z, sequence[i].HandL.X, sequence[i].HandL.Y, sequence[i].HandL.Z, sequence[i].ElbowL.X, sequence[i].ElbowL.Y, sequence[i].ElbowL.Z, sequence[i].ElbowR.X, sequence[i].ElbowR.Y, sequence[i].ElbowR.Z, sequence[i].WristR.X, sequence[i].WristR.Y, sequence[i].WristL.X, sequence[i].WristL.Y }; //using only handRight for now to paint gesture

            double[][] zscores = Accord.Statistics.Tools.ZScores(result);

            return zscores.Add(10);
        }
Exemple #4
0
        void TraceTrackedSkeletonJoints(JointCollection jCollection)
        {
            Point3D shl, shr, elbl, elbr, wrstl, wrstr, handl, handr, spine, head;

            if (flagRecording && frameCount >= 6)
            {
                //add check if jointdata is non null
                if (jCollection[JointType.ShoulderLeft].TrackingState == JointTrackingState.Tracked)
                {
                    shl = new Point3D(jCollection[JointType.ShoulderLeft].Position.X, jCollection[JointType.ShoulderLeft].Position.Y, jCollection[JointType.ShoulderLeft].Position.Z);
                }
                else
                {
                    shl = new Point3D(0, 0, 0);
                }

                if (jCollection[JointType.ShoulderRight].TrackingState == JointTrackingState.Tracked)
                {
                    shr = new Point3D(jCollection[JointType.ShoulderRight].Position.X, jCollection[JointType.ShoulderRight].Position.Y, jCollection[JointType.ShoulderRight].Position.Z);
                }
                else
                {
                    shr = new Point3D(0, 0, 0);
                }


                if (jCollection[JointType.ElbowLeft].TrackingState == JointTrackingState.Tracked)
                {
                    elbl = new Point3D(jCollection[JointType.ElbowLeft].Position.X, jCollection[JointType.ElbowLeft].Position.Y, jCollection[JointType.ElbowLeft].Position.Z);
                }
                else
                {
                    elbl = new Point3D(0, 0, 0);
                }

                if (jCollection[JointType.ElbowRight].TrackingState == JointTrackingState.Tracked)
                {
                    elbr = new Point3D(jCollection[JointType.ElbowRight].Position.X, jCollection[JointType.ElbowRight].Position.Y, jCollection[JointType.ElbowRight].Position.Z);
                }
                else
                {
                    elbr = new Point3D(0, 0, 0);
                }



                if (jCollection[JointType.WristLeft].TrackingState == JointTrackingState.Tracked)
                {
                    wrstl = new Point3D(jCollection[JointType.WristLeft].Position.X, jCollection[JointType.WristLeft].Position.Y, jCollection[JointType.WristLeft].Position.Z);
                }
                else
                {
                    wrstl = new Point3D(0, 0, 0);
                }


                if (jCollection[JointType.WristRight].TrackingState == JointTrackingState.Tracked)
                {
                    wrstr = new Point3D(jCollection[JointType.WristRight].Position.X, jCollection[JointType.WristRight].Position.Y, jCollection[JointType.WristRight].Position.Z);
                }
                else
                {
                    wrstr = new Point3D(0, 0, 0);
                }

                if (jCollection[JointType.HandLeft].TrackingState == JointTrackingState.Tracked)
                {
                    handl = new Point3D(jCollection[JointType.HandLeft].Position.X, jCollection[JointType.HandLeft].Position.Y, jCollection[JointType.HandLeft].Position.Z);
                }
                else
                {
                    handl = new Point3D(0, 0, 0);
                }


                if (jCollection[JointType.HandRight].TrackingState == JointTrackingState.Tracked)
                {
                    handr = new Point3D(jCollection[JointType.HandRight].Position.X, jCollection[JointType.HandRight].Position.Y, jCollection[JointType.HandRight].Position.Z);
                }
                else
                {
                    handr = new Point3D(0, 0, 0);
                }


                if (jCollection[JointType.Spine].TrackingState == JointTrackingState.Tracked)
                {
                    spine = new Point3D(jCollection[JointType.Spine].Position.X, jCollection[JointType.Spine].Position.Y, jCollection[JointType.Spine].Position.Z);
                }
                else
                {
                    spine = new Point3D(0, 0, 0);
                }

                if (jCollection[JointType.Head].TrackingState == JointTrackingState.Tracked)
                {
                    head = new Point3D(jCollection[JointType.Head].Position.X, jCollection[JointType.Head].Position.Y, jCollection[JointType.Head].Position.Z);
                }
                else
                {
                    head = new Point3D(0, 0, 0);
                }
                //frameCount++;

                GestureData gd = new GestureData(shl, shr, elbl, elbr, wrstl, wrstr, handl, handr, spine, head);
                sequence.Add(gd);
                System.Diagnostics.Debug.WriteLine("Seq added===========");
                frameCount = 0;
            }
            else if (flagRecording)
            {
                frameCount++;
                System.Diagnostics.Debug.Write("~");
            }
        }
Exemple #5
0
        //point[] seq
        public static Bitmap ToBitmap(GestureData[] sequence)
        {
            if (sequence.Length == 0)
                return null;

            int xmax = (int)sequence.Max(x => x.HandR.X);
            int xmin = (int)sequence.Min(x => x.HandR.X);

            int ymax = (int)sequence.Max(x => x.HandR.Y);
            int ymin = (int)sequence.Min(x => x.HandR.Y);

            int width = xmax - xmin;
            int height = ymax - ymin;

            Bitmap bmp = new Bitmap(width + 16, height + 16);

            Graphics g = Graphics.FromImage(bmp);

            for (int i = 1; i < sequence.Length; i++)
            {
                int x = (int)sequence[i].HandR.X - xmin;
                int y = (int)sequence[i].HandR.Y - ymin;
                int p = (int)Accord.Math.Tools.Scale(0, sequence.Length, 0, 255, i);

                int prevX = (int)sequence[i - 1].HandR.X - xmin;
                int prevY = (int)sequence[i - 1].HandR.Y - ymin;

                using (Brush brush = new SolidBrush(Color.FromArgb(255 - p, 0, p)))
                using (Pen pen = new Pen(brush, 16))
                {
                    pen.StartCap = LineCap.Round;
                    pen.EndCap = LineCap.Round;
                    g.DrawLine(pen, prevX, prevY, x, y);
                }
            }

            return bmp;
        }