コード例 #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("Ошибка: отсутствует обработанное изображение.");
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: juan3juan/quickSort
        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();
        }
コード例 #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("Ошибка: отсутствует целевое изображение.");
            }
        }
コード例 #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());
        }