Exemplo n.º 1
0
        private void сохранитьСтатистикуToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.pictureBoxOutput.Image != null)
            {
                // Show the Dialog.
                // If the user clicked OK in the dialog and
                // a file was selected, open it.
                if (saveStatisticsDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    // Загрузка параметров из формы
                    int  clustNumber;
                    byte coreRank;
                    byte threshold = (byte)this.trackBarThreshold.Value;

                    if (!int.TryParse(this.textBoxClustNumber.Text, out clustNumber))
                    {
                        MessageBox.Show("Недопустимое значение поля \"Число кластеров\"!");
                        this.textBoxClustNumber.Text = 1.ToString();
                        return;
                    }
                    if (!byte.TryParse(this.textBoxFilterCoreRank.Text, out coreRank) || (coreRank % 2) == 0 || coreRank < 3)
                    {
                        MessageBox.Show("Ядро min-фильтра должно быть нечётным числом больше 3!");
                        this.textBoxFilterCoreRank.Text = 3.ToString();
                        return;
                    }

                    Image img = this.pictureBoxInput.Image;

                    // Бинаризация изображения
                    img = ImageProcessing.GrayscaleAndBinarization(img, threshold);

                    // Фильтрация изображения min-фильтром

                    img = ImageProcessing.MinFilterInt(img, coreRank);

                    Clustering classes = new Clustering(img, clustNumber);

                    img = classes.domainsMap.getImage();

                    this.pictureBoxOutput.Image = img;

                    // Печать статистики

                    File.WriteAllLines(saveStatisticsDialog.FileName, classes.getStatistics());
                }
            }
            else
            {
                MessageBox.Show("Ошибка: отсутствует обработанное изображение.");
            }
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            List <List <int> > result;
            List <int>         Original = new List <int>();

            for (int i = 0; i < 10; i++)
            {
                Original.Add(i);
            }

            Original.Add(10000);
            Original.Add(20000);

            result = Clustering.RunCluster(ClusterAlgrithms.KMean, 3, Original);

            Console.Read();
        }
Exemplo n.º 3
0
        private void применитьToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.pictureBoxInput.Image != null)
            {
                // Загрузка параметров из формы
                int  clustNumber;
                byte coreRank;
                byte threshold = (byte)this.trackBarThreshold.Value;

                if (!int.TryParse(this.textBoxClustNumber.Text, out clustNumber))
                {
                    MessageBox.Show("Недопустимое значение поля \"Число кластеров\"!");
                    this.textBoxClustNumber.Text = 1.ToString();
                    return;
                }

                if (!byte.TryParse(this.textBoxFilterCoreRank.Text, out coreRank) || (coreRank % 2) == 0 || coreRank < 3)
                {
                    MessageBox.Show("Ядро min-фильтра должно быть нечётным числом больше 3!");
                    this.textBoxFilterCoreRank.Text = 3.ToString();
                    return;
                }


                Image img = this.pictureBoxInput.Image;

                // Бинаризация изображения
                img = ImageProcessing.GrayscaleAndBinarization(img, threshold);

                // Фильтрация изображения min-фильтром

                img = ImageProcessing.MinFilterInt(img, coreRank);

                Clustering classes = new Clustering(img, clustNumber);

                img = classes.domainsMap.getImage();

                this.pictureBoxOutput.Image = img;
            }
            else
            {
                MessageBox.Show("Ошибка: отсутствует целевое изображение.");
            }
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            List <DataPoint> points = new List <DataPoint>()
            {
                new DataPoint(3, 10), new DataPoint(4, 6), new DataPoint(5, 4), new DataPoint(5, 8),
                new DataPoint(5, 12), new DataPoint(5, 15), new DataPoint(6, 6), new DataPoint(7, 9),
                new DataPoint(7, 15), new DataPoint(8, 7), new DataPoint(8, 12), new DataPoint(9, 17),
                new DataPoint(10, 12), new DataPoint(11, 14), new DataPoint(12, 6), new DataPoint(12, 9),
                new DataPoint(14, 11), new DataPoint(14, 16), new DataPoint(15, 4), new DataPoint(16, 8)
            };

            //Clustering.KMeansAlgorithm(points, 3);

            Clustering.KMedoidsAlgorithm(points, 3, 5);


            //points.Clear();

            //Random random = new Random();
            //int size = 1024;
            //int k = 64;

            //for(int i = 0; i < size; i++)
            //{
            //    int x = random.Next(-1000, 1000);
            //    int y = random.Next(-1000, 1000);
            //    points.Add(new DataPoint(x, y));
            //}

            //Stopwatch sw = new Stopwatch();
            //sw.Start();
            //Clustering.KMeansAlgorithm(points, k);
            //sw.Stop();
            //Console.WriteLine("TIME");
            //Console.WriteLine((sw.ElapsedMilliseconds / 1000.0).ToString());

            //sw.Reset();
            //sw.Start();
            //Clustering.KMedoidsAlgorithm(points, k, 20);
            //sw.Stop();
            //Console.WriteLine("TIME");
            //Console.WriteLine((sw.ElapsedMilliseconds / 1000.0).ToString());
        }