/
Kirill_Zavyalov
/
My-Cod
Обзор
Документация
Войти
/
Kirill_Zavyalov
/
My-Cod
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
ThresholdFilterTask.cs
58 строк
2 KB
Kirill_Zavyalov
update ThresholdFilterTask.cs
26 дек 2025, 22:35
26 дек 2025, 22:35
21ad563
Код
Авторство
О чём код?
using System; using System.Collections.Generic; namespace Recognizer; public static class ThresholdFilterTask { public static double[,] ThresholdFilter(double[,] original, double whitePixelsFraction) { var numberOfPixels = original.Length; var minWhitePixels = (int)Math.Floor(whitePixelsFraction * numberOfPixels); var countLines = original.GetLength(0); var countColumns = original.GetLength(1); var list = CreateListForThreshold(original); var threshold = FindThreshold(list, minWhitePixels); var thresholdArray = PaintInBlackWhite(threshold, countLines, countColumns, original); return thresholdArray; } public static List<double> CreateListForThreshold(double[,] original) { var list = new List<double>(); foreach (var e in original) list.Add(e); list.Sort(); list.Reverse(); return list; } public static double FindThreshold(List<double> array, int minWhitePixels) { var indexThreshold = minWhitePixels - 1; var threshold = -1.0; if (indexThreshold >= 0) threshold = array[indexThreshold]; return threshold; } public static double[,] PaintInBlackWhite(double threshold, int countLines, int countColumns, double[,] original) { var thresholdArray = new double[countLines, countColumns]; for (var i = 0; i < countLines; i++) { for (var j = 0; j < countColumns; j++) { if (threshold < 0) thresholdArray[i, j] = 0.0; else if (original[i, j] >= threshold) thresholdArray[i, j] = 1.0; else thresholdArray[i, j] = 0.0; } } return thresholdArray; } }