Esempio n. 1
0
        public override void Run()
        {
            Dilatazione d  = new Dilatazione(InputImage, StructuringElement, Foreground);
            Erosione    er = new Erosione(d.Execute(), StructuringElement, Foreground);

            Result = er.Execute();
        }
Esempio n. 2
0
        public override void Run()
        {
            //F - (F erosione S)
            Result = new Image <byte>(InputImage.Width, InputImage.Height);

            //faccio prima l'erosione
            Erosione     er  = new Erosione(InputImage, StructuringElement, Foreground);
            Image <byte> tmp = er.Execute();

            //faccio sottrazione
            for (int i = 0; i < Result.PixelCount; i++)
            {
                Result[i] = (byte)(InputImage[i] - tmp[i]);
            }
        }
Esempio n. 3
0
        public override void Run()
        {
            if (StructuringElement2 == null)
            {
                MessageBox.Show("NULL");
                return;
            }
            //(F erosione S1) intersezione (F_complementare erosione S2)
            //faccio 2 immagini, poi l'intersezione
            //output
            Result = new Image <byte>(InputImage.Width, InputImage.Height);
            //prima immagine
            Erosione     er1  = new Erosione(InputImage, StructuringElement, Foreground);
            Image <byte> tmp1 = er1.Execute();

            //calcolo F_complementare
            Image <byte> complementare = new Image <byte>(InputImage.Width, InputImage.Height);

            for (int i = 0; i < complementare.PixelCount; i++)
            {
                if (InputImage[i] == Foreground)
                {
                    complementare[i] = (byte)(255 - Foreground);
                }
                else
                {
                    complementare[i] = Foreground;
                }
            }

            //seconda immagine
            Erosione     er2  = new Erosione(complementare, StructuringElement2, Foreground);
            Image <byte> tmp2 = er2.Execute();

            //trovo l'intersezione fra le 2 immagini
            for (int i = 0; i < Result.PixelCount; i++)
            {
                if (tmp1[i] == Foreground && tmp2[i] == Foreground)
                {
                    Result[i] = Foreground;
                }
            }
        }