Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        private PointsCoordSet CalcKalmanOpt(PointsCoordSet list, string strName, Kalc3Dim KallFil, bool iIsPredict,
                                             bool bNoA, bool bIsX)
        {
            var listKalman = new PointsCoordSet(strName);
            var Num        = list[0].NumFrame - 1;

            for (var jc = 0; jc < list.Count; jc++)
            {
                var pt  = new Point(list[jc].X, list[jc].Y);
                var ptC = list[jc] + pt;
                ptC.col = Color.Fuchsia;
                if (list[jc].X == -1)
                {
                    ptC.col = Color.Yellow;
                }
                if (bIsX == true)
                {
                    var x = KallFil.SetData(list[jc].X, list[jc].NumFrame, iIsPredict, bNoA);
                    ptC.X = (int)x;
                }
                else
                {
                    var y = KallFil.SetData(list[jc].Y, list[jc].NumFrame, iIsPredict, bNoA);
                    ptC.Y = (int)y;
                }


                listKalman.Add(ptC);
            }
            //PointsCoordSet.AddList(listKalman);
            return(listKalman);
        }
Пример #2
0
        /// <summary>
        /// Работаем со скоростью
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        private void CalcKalmanV(List <PointCoords> list, string strName, bool iIsPredict, bool bNoA)
        {
            var listKalman = new PointsCoordSet(strName);

            if (list.Count <= 0)
            {
                return;
            }
            var KallFilX = new Kalc3Dim("X", true);
            var KallFilY = new Kalc3Dim("Y", false);
            var Num      = list[0].NumFrame - 1;

            for (var jc = 0; jc < list.Count; jc++)
            {
                var pt  = new Point(list[jc].X, list[jc].Y);
                var ptC = list[jc] + pt;
                ptC.col = Color.Fuchsia;
                if (list[jc].X == -1)
                {
                    ptC.col = Color.Yellow;
                }
                var x = KallFilX.SetData(list[jc].X, list[jc].NumFrame, iIsPredict, bNoA);
                var y = KallFilY.SetData(list[jc].Y, list[jc].NumFrame, iIsPredict, bNoA);
                ptC.X = (int)x;
                ptC.Y = (int)y;
                //PointCoords ptC = KallFil.CalcEstimationPoint(pt, list[jc].NumFrame) + list[jc];

                listKalman.Add(ptC);
            }
            PointsCoordSet.AddList(listKalman);
        }
Пример #3
0
        private void SaveCenter(Point pt)
        {
            int index;
            var pC = FindPoint(NCurrentFile, listMarkedPC, out index);

            if (pC == null)
            {
                pC          = new PointCoords();
                pC.NumFrame = NCurrentFile;
                listMarkedPC.Add(pC);
            }
            pC.X = pt.X;
            pC.Y = pt.Y;
        }
Пример #4
0
        private PointsCoordSet CalcKalman(PointsCoordSet list)
        {
            var listKalman = new PointsCoordSet("Kalman");

            if (list.Count <= 0)
            {
                return(listKalman);
            }
            var KallFil = new KalmanFilter();
            var Num     = list[0].NumFrame - 1;

            for (var jc = 0; jc < list.Count; jc++)
            {
                var pt = new Point(list[jc].X, list[jc].Y);
                if (list[jc].X == -1)
                {
                    list[jc].Y = -1;
                }
                var ptC = KallFil.CalcEstimationPoint(pt, list[jc].NumFrame) + list[jc];
                ptC.col = Color.Fuchsia;
                listKalman.Add(ptC);
            }
            return(listKalman);
        }
Пример #5
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        //private bool FillCoordData(StreamReader sr, List<PointCoords> list,bool bIsNeed,Color col)
        private bool FillCoordData(StreamReader sr, PointsCoordSet list, bool bIsNeed, Color col)
        {
            if (sr == null)
            {
                if (bIsNeed)
                {
                    MessageBox.Show("Не задан файл координат");
                }
                return(false);
            }
            //list = new List<PointCoords>();
            string strTemp;
            var    iNum = -1;

            while (true)
            {
                strTemp = sr.ReadLine();
                if (strTemp == null)
                {
                    break;
                }

                var pC = new PointCoords();
                if (pC.SetDataFromFile(strTemp, col) == false)
                {
                    continue;
                }
                if (iNum == -1)
                {
                    iNum = pC.NumFrame;
                }
                else
                {
                    iNum++;
                    if (pC.NumFrame > iNum)
                    {
                        var iNumDel = pC.NumFrame;
                        while (iNumDel != iNum)
                        {
                            var pC1 = new PointCoords();
                            pC1.NumFrame = iNum;
                            pC1.col      = pC.col;
                            pC1.Width    = pC.Width;
                            list.Add(pC1);
                            iNum++;
                        }
                    }
                }
                list.Add(pC);
            }
            if (NCurrentFile == -1)
            {
                NCurrentFile = NFirstFile = list[0].NumFrame;
                NLastFile    = list[list.Count - 1].NumFrame;
            }
            var iReminder = NLastFile - NFirstFile + 1 - list.Count;

            iNum++;
            for (var jc = 0; jc < iReminder; jc++)
            {
                var pC1 = new PointCoords();
                pC1.NumFrame = iNum;
                pC1.col      = Color.AntiqueWhite;
                pC1.Width    = 40;
                list.Add(pC1);
                iNum++;
            }
            PointsCoordSet.AddList(list);
            return(true);
        }