Beispiel #1
0
        public override void Run()
        {
            Result = new Image <byte>(InputImage.Width, InputImage.Height);

            //costruisce l'array degli offset dell'elemento strutturante riflesso
            int[] elementOffsets = MorphologyStructuringElement.CreateOffsets(StructuringElement, InputImage, true);
            //crea un cursore per scorrerel'immagine escludendo i pixel di bordo
            var pixelCursor = new ImageCursor(StructuringElement.Width / 2, StructuringElement.Height / 2, InputImage.Width - 1 - StructuringElement.Width / 2, InputImage.Height - 1 - StructuringElement.Height / 2, InputImage);

            //a differenza della dilatazione controllo se c'è almeno un pixel di background,
            //se è così il pixel nn fa parte dell'output
            bool da_canc = false;

            do
            {
                foreach (int offset in elementOffsets)
                {
                    if (InputImage[pixelCursor + offset] != Foreground)
                    {
                        //un pixel di background trovato
                        da_canc = true;
                        break;
                    }
                }
                if (!da_canc)
                {
                    Result[pixelCursor] = Foreground;
                }
                da_canc = false;
            }while (pixelCursor.MoveNext());
        }
Beispiel #2
0
        public override void Run()
        {
            Result = new Image <byte>(InputImage.Width, InputImage.Height);

            //costruisce l'array degli offset dell'elemento strutturante riflesso
            int[] elementOffsets = MorphologyStructuringElement.CreateOffsets(StructuringElement, InputImage, true);
            //crea un cursore per scorrerel'immagine escludendo i pixel di bordo
            var pixelCursor = new ImageCursor(StructuringElement.Width / 2, StructuringElement.Height / 2, InputImage.Width - 1 - StructuringElement.Width / 2, InputImage.Height - 1 - StructuringElement.Height / 2, InputImage);

            do
            {
                foreach (int offset in elementOffsets)
                {
                    if (InputImage[pixelCursor + offset] == Foreground)
                    {
                        Result[pixelCursor] = Foreground;
                        break;
                    }
                }
            }while(pixelCursor.MoveNext());
        }