Ejemplo n.º 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));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Подсчет объектов
        /// </summary>
        /// <param name="bmp">Изображение</param>
        /// <returns>Кол-во объектов</returns>
        public int CalculateBinElements(Bitmap bmp)
        {
            Mascs();
            img = new BinaryImg(bmp);
            int m = img.M, n = img.N;

            countE = 0;
            countI = 0;

            // Проход по всему изображению фильтрами с подсчетом углов
            for (int i = 0; i < m - 1; i++)
            {
                for (int j = 0; j < n - 1; j++)
                {
                    Filter(j, i);
                }
            }


            return((int)((countE - countI) / 4.0 + 0.999));// кол-во объектов
        }