コード例 #1
0
        /// <summary>
        /// Маркирование
        /// </summary>
        /// <param name="bm">Изображение</param>
        /// <returns>Регионы</returns>
        public Bitmap Marking(Bitmap bm)
        {
            Matrix matr   = ImgConverter.BmpToMatr(bm);
            Matrix filter = new Matrix() - 1;

            filter[1, 1] = 8;
            matr         = NeuroFunc.Threshold(matr, 0.5);
            matr         = 1 - ImgFilters.SpaceFilter(matr, filter);
            matr         = NeuroFunc.Threshold(matr, 0.9);

            BinaryImg bi  = new BinaryImg(1 - matr);
            Matrix    img = bi.ToMatrixInvers();

            //img.MatrixShow();
            x      = 0;
            y      = 0;
            m      = img.M;
            n      = img.N;
            couter = 0;

            while (x < m - 1 && y < n - 1)
            {
                SerchNotMark(img);

                while (Area(img))
                {
                }
            }

            img /= couter;

            return(ImgConverter.MatrixToBitmap(img));
        }
コード例 #2
0
        /// <summary>
        /// ФНЧ
        /// </summary>
        /// <param name="st">Отсчеты сигнала</param>
        /// <param name="sr">Частота среза</param>
        /// <param name="f">Вектор частот</param>
        /// <returns>Фильтрованный сигнал</returns>
        public static Vector FilterLow(Vector st, double sr, Vector f)
        {
            double srNew = Statistic.MaximalValue(f) - sr;
            Vector kw    = NeuroFunc.Threshold(f, srNew).Revers();

            //kw.Visual();
            return(Filter(st, kw));
        }
コード例 #3
0
        /// <summary>
        /// Полосовой фильтр
        /// </summary>
        /// <param name="st">Отсчеты сигнала</param>
        /// <param name="sr1">Частота среза 1</param>
        /// <param name="sr2">Частота среза 2</param>
        /// <param name="f">Вектор частот</param>
        /// <returns>Фильтрованный сигнал</returns>
        public static Vector FilterBand(Vector st, double sr1, double sr2, Vector f)
        {
            double srNew = Statistic.MaximalValue(f) - sr2;
            Vector kw    = NeuroFunc.Threshold(f, srNew).Revers();
            Vector kw2   = NeuroFunc.Threshold(f, sr1);

            kw *= kw2;
            return(Filter(st, kw));
        }
コード例 #4
0
        /// <summary>
        /// Создание АЧХ нужного типа
        /// </summary>
        /// <param name="f">Вектор частот</param>
        /// <param name="param">параметры</param>
        /// <param name="afh">Тип АЧХ</param>
        public Vector GetAFH(Vector f, double[] param, AFHType afh)
        {
            Vector kw = new Vector(f.N);

            if (afh == AFHType.Band)
            {
                for (int i = 0; i < f.N; i++)
                {
                    if ((f.DataInVector[i] >= param[0]) && (f.DataInVector[i] <= param[1]))
                    {
                        kw.DataInVector[i] = 1;
                    }
                }
            }

            if (afh == AFHType.High)
            {
                kw = NeuroFunc.Threshold(f, param[0]);
            }

            if (afh == AFHType.Low)
            {
                double srNew = f.DataInVector[f.N - 1] - param[0];
                kw = NeuroFunc.Threshold(f, srNew).Revers();
            }


            if (afh == AFHType.Rezector)
            {
                kw += 1;

                for (int i = 0; i < f.N; i++)
                {
                    if ((f.DataInVector[i] >= param[0]) && (f.DataInVector[i] <= param[1]))
                    {
                        kw.DataInVector[i] = 0;
                    }
                }
            }

            return(kw);
        }
コード例 #5
0
        /// <summary>
        /// ФВЧ
        /// </summary>
        /// <param name="st">Отсчеты сигнала</param>
        /// <param name="sr">Частота среза</param>
        /// <param name="f">Вектор частот</param>
        /// <returns>Фильтрованный сигнал</returns>
        public static Vector FilterHigh(Vector st, double sr, Vector f)
        {
            Vector kw = NeuroFunc.Threshold(f, sr);

            return(Filter(st, kw));
        }
コード例 #6
0
 /// <summary>
 /// Прямоугольный сигнал
 /// </summary>
 /// <param name="t">Вектор отсчетов времени</param>
 /// <param name="f">Вектор частот</param>
 /// <returns>Отсчеты сигнала</returns>
 public static Vector Rect(Vector t, Vector f)
 {
     return(NeuroFunc.Threshold(Sin(t, f), 0.1));
 }
コード例 #7
0
 /// <summary>
 /// Прямоугольный сигнал
 /// </summary>
 /// <param name="t">Вектор отсчетов времени</param>
 /// <param name="A">Вектор амплитуда</param>
 /// <param name="f">Вектор частот</param>
 /// <returns>Отсчеты сигнала</returns>
 public static Vector Rect(Vector t, Vector A, double f)
 {
     return(A * NeuroFunc.Threshold(Sin(t, 1, f), 0.1));
 }
コード例 #8
0
 /// <summary>
 /// Прямоугольный сигнал
 /// </summary>
 /// <param name="t">Вектор отсчетов времени</param>
 /// <param name="A">Амплитуда</param>
 /// <param name="f">Частота</param>
 /// <param name="fi">Вектор фаз</param>
 /// <returns>Отсчеты сигнала</returns>
 public static Vector Rect(Vector t, double A, double f, Vector fi)
 {
     return(A * NeuroFunc.Threshold(Sin(t, 1, f, fi), 0.1));
 }