/// <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)); }
/// <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));// кол-во объектов }