Ejemplo n.º 1
0
        public Erozja(Bitmap obrazZr, OurBitmap obrazWe, ElementStrukt elS)
        {
            this.obrazWe = obrazWe;
            this.obrazZr = obrazZr;
            this.elS = elS;

            this.obrazWy = new Bitmap(obrazZr.Width, obrazZr.Height);
        }
Ejemplo n.º 2
0
 public GradientMorfoDylatacja(Bitmap obrazZr, OurBitmap obrazWe, ElementStrukt elS)
 {
     this.obrazWe = obrazWe;
     this.obrazZr = obrazZr;
     this.elS = elS;
 }
Ejemplo n.º 3
0
        // Potrzebne, aby wykonać poszczególne operacje na krawędziach obrazka
        /* --- Rozszerzanie obrazka - ew. wyodrębnić jako kolejną klasę --- */
        private OurBitmap rozszerzObraz(Bitmap obrazWejsciowy, int wielkoscElementu)
        {
            // Trochę pochrzanione z indeksami, ale działa ;-)
            OurBitmap obrazTmp = new OurBitmap(obrazWejsciowy.Width + 2 * wielkoscElementu, obrazWejsciowy.Height + 2 * wielkoscElementu);

            int t;

            for (int k1 = 0; k1 < obrazTmp.image.Height; k1++)
            {
                for (int k2 = 0; k2 < obrazTmp.image.Width; k2++)
                {
                    // PASKI
                    if (k2 >= wielkoscElementu && k2 <= (wielkoscElementu + (obrazWejsciowy.Width-1)) && k1 < wielkoscElementu)
                    {
                        t = obrazWejsciowy.GetPixel(k2 - wielkoscElementu, 0).R;

                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                    else if (k2 >= wielkoscElementu && k2 <= (wielkoscElementu + (obrazWejsciowy.Width - 1)) && k1 > (wielkoscElementu + (obrazWejsciowy.Height - 1)))
                    {
                        t = obrazWejsciowy.GetPixel(k2 - wielkoscElementu, obrazWejsciowy.Height - 1).R;

                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                    else if (k2 < wielkoscElementu && k1 >= wielkoscElementu && k1 <= (wielkoscElementu + (obrazWejsciowy.Height-1)))
                    {
                        t = obrazWejsciowy.GetPixel(0, k1 - wielkoscElementu).R;

                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                    else if (k2 > (wielkoscElementu + (obrazWejsciowy.Width-1)) && k1 >= wielkoscElementu && k1 <= (wielkoscElementu + (obrazWejsciowy.Height-1)))
                    {
                        t = obrazWejsciowy.GetPixel(obrazWejsciowy.Width - 1, k1 - wielkoscElementu).R;

                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                    // ROGI
                    else if (k2 < wielkoscElementu && k1 < wielkoscElementu)
                    {
                        t = obrazWejsciowy.GetPixel(0, 0).R;

                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                    else if (k2 > (wielkoscElementu + (obrazWejsciowy.Width-1)) && k1 < wielkoscElementu)
                    {
                        t = obrazWejsciowy.GetPixel(obrazWejsciowy.Width - 1, 0).R;

                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                    else if (k2 < wielkoscElementu && k1 > (wielkoscElementu + (obrazWejsciowy.Height-1)))
                    {
                        t = obrazWejsciowy.GetPixel(0, obrazWejsciowy.Height - 1).R;

                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                    else if (k2 > (wielkoscElementu + (obrazWejsciowy.Width-1)) && k1 > (wielkoscElementu + (obrazWejsciowy.Height-1)))
                    {
                        t = obrazWejsciowy.GetPixel(obrazWejsciowy.Width - 1, obrazWejsciowy.Height - 1).R;

                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                    // POZOSTAŁE
                    else
                    {
                        t = obrazWejsciowy.GetPixel(k2 - wielkoscElementu, k1 - wielkoscElementu).R;
                        obrazTmp.image.SetPixel(k2, k1, Color.FromArgb(t, t, t));
                    }
                }
            }
            return obrazTmp;
        }