コード例 #1
0
        private void Bernsen_Click(object sender, RoutedEventArgs e)
        {
            var contrast_threshold = int.Parse(Bernsen_contrast.Text);
            var temp = Binarization.bernsen(bm, 3, contrast_threshold);

            refreshImage(temp);
        }
コード例 #2
0
        private void Manual_Click(object sender, RoutedEventArgs e)
        {
            var thresholdInt = int.Parse(Manual_threshold.Text);
            var bmp          = Binarization.binarization(bm, thresholdInt);

            refreshImage(bmp);
        }
コード例 #3
0
        private void Niblack_Click(object sender, RoutedEventArgs e)
        {
            var windowSize = int.Parse(niblack_window.Text);
            var kValue     = float.Parse(niblack_k.Text);
            var temp       = Binarization.niblack(this.bm, windowSize, kValue);

            refreshImage(temp);
        }
コード例 #4
0
        public static Bitmap KMM(Bitmap bm)
        {
            var tmp = Binarization.binarization(new Bitmap(bm), 127);

            //Wszystkie czarne piksele oznaczamy jako 1, zaś białe jako 0.
            initialize(tmp); //contains 0 and 1

            int counter = 0;

            short[,] saveInitial;
            do
            {
                counter++;
                saveInitial = (short[, ])kmmArray.Clone();
                //Piksele 1, które posiadają sąsiadów o oznaczeniu 0 po bokach, u góry lub u dołu, oznaczamy jako 2.
                //Pozostałe piksele 1, które posiadają sąsiadów o oznaczeniu 0 na rogach, oznaczamy jako 3.
                runEdgeAndCornerCheck(); //contins 0,1,2,3
#if VERBOSE
                Console.WriteLine("After runEdgeAndCornerCheck() (should contain 0123)");
                printArray();
#endif
                //Dla pikseli oznaczonych jako 2 za pomocą maski sprawdzarka obliczamy ich wagę. Jeśli waga znajduje się na liście czwórki oznaczenie piksela zamieniamy z 2 na 4.
                addFours(); //contains 0,1,2,3,4
#if VERBOSE
                Console.WriteLine("After addFours() (should contain 01234)");
                printArray();
#endif


                /*
                 * Dla wszystkich pikseli oznaczonych jako 4 wyliczamy wagę za pomocą maski sprawdzarka. Jeśli waga znajduje się na liście wycięcia, zamieniamy piksel na 0, zaś w przeciwnym razie zamieniamy go na 1.
                 * Dla wszystkich pikseli oznaczonych jako 2 wyliczamy wagę za pomocą maski sprawdzarka. Jeśli waga znajduje się na liście wycięcia, zamieniamy piksel na 0, zaś w przeciwnym razie zamieniamy go na 1.
                 * Dla wszystkich pikseli oznaczonych jako 3 wyliczamy wagę za pomocą maski sprawdzarka. Jeśli waga znajduje się na liście wycięcia, zamieniamy piksel na 0, zaś w przeciwnym razie zamieniamy go na 1.
                 */
                cutOut(4); //contains 0,1
                cutOut(2);
                cutOut(3);

#if VERBOSE
                Console.WriteLine("After cutOut() (should be only 0 and 1)");
                printArray();

                Console.WriteLine("Comparing current image to previous...");
                if (arrayIdenticalToKmmArray(saveInitial))
                {
                    Console.WriteLine("No change since last iteration - EXITING");
                }
                else
                {
                    Console.WriteLine("Current and last iteration are different - RUNNING NEW ITERATION");
                }
#endif
            } while (!arrayIdenticalToKmmArray(saveInitial)); //powtarzamy dopoki operacja wywoluje zmiany
            Console.WriteLine("KMM Finished after " + counter + " iterations");
            return(kmmArrayToBitmap());
        }
コード例 #5
0
        private void Otsu_Click(object sender, RoutedEventArgs e)
        {
            var temp = Binarization.otsu(bm);

            refreshImage(temp);
        }