public MatrixInput(Child c, int t)
 {
     ch = c;
     type = t;
     InitializeComponent();
     if (type == 1)
     {
         this.Text = "Low Pass Mean Filter";
         tb1.Text = "1"; tb2.Text = "1"; tb3.Text = "1";
         tb4.Text = "1"; tb5.Text = "1"; tb6.Text = "1";
         tb7.Text = "1"; tb8.Text = "1"; tb9.Text = "1";
     }
     else if (type == 2)
     {
         this.Text = "High Pass Filter";
         tb1.Text = "-1"; tb2.Text = "-1"; tb3.Text = "-1";
         tb4.Text = "-1"; tb5.Text = "9"; tb6.Text = "-1";
         tb7.Text = "-1"; tb8.Text = "-1"; tb9.Text = "-1";
     }
     else if (type == 3)
     {
         this.Text = "Laplacian Filter";
         tb1.Text = "-1"; tb2.Text = "-1"; tb3.Text = "-1";
         tb4.Text = "-1"; tb5.Text = "8"; tb6.Text = "-1";
         tb7.Text = "-1"; tb8.Text = "-1"; tb9.Text = "-1";
     }
 }
Ejemplo n.º 2
0
        private void FileNew(object sender, System.EventArgs e)
        {
            openFileDialog1.InitialDirectory = "g:\\";
            openFileDialog1.Filter = "PNG Files (*.png)|*.png|GIF Files (*.gif)|*.gif|Bitmap files (*.bmp)|*.bmp|JPG files (*.jpg)|*.jpg|All Valid Files (*.bmp/*.jpg/*.gif/*.png)|*.bmp;*.jpg;*.gif;*.png";
            openFileDialog1.FilterIndex = 5;
            openFileDialog1.RestoreDirectory = true;

            if (DialogResult.OK == openFileDialog1.ShowDialog())
            {
                try
                {
                    Child chForm = new Child(this, openFileDialog1.FileName);//make new child

                    chForm.MdiParent = this;//Set parent

                    //set the title of the child window.
                    chForm.Text = openFileDialog1.FileName;

                    chForm.fileloc = openFileDialog1.FileName;

                    //display the child window
                    chForm.Height = chForm.b.Height + 36;
                    chForm.Width = chForm.b.Width + 16;
                    chForm.Show();
                    chForm.menuStrip1.Hide();
                }
                catch
                {
                    MessageBox.Show("Error opening image", "Expose", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
        /// <summary>
        /// Constructor to build Histogram
        /// </summary>
        /// <param name="c">Window that's opening the Histogram</param>
        public HistogramWin(Child c)
        {
            clr = new Color();
            ch = c;
            this.MdiParent = c.MdiParent;

            h = (uint)ch.pic.getHeight();
            w = (uint)ch.pic.getWidth();

            total = h * w;

            InitializeComponent();

            //Red
            clr = Color.Red;
            this.drawAreaRed.DrawAreaData(this, redVals, clr);
            this.drawAreaRed.Invalidate();
            //Green
            clr = Color.Green;
            this.drawAreaGreen.DrawAreaData(this, greenVals, clr);
            this.drawAreaGreen.Invalidate();
            //Blue
            clr = Color.Blue;
            this.drawAreaBlue.DrawAreaData(this, blueVals, clr);
            this.drawAreaBlue.Invalidate();

            this.Text = "Histogram - " + ch.Text ;

            this.lblHVal.Text = "" + ch.pic.getHeight();
            this.lblWVal.Text = "" + ch.pic.getWidth();

            kb = (float)(h * w * 4) / 1000f;
            mb = (float)(h * w * 4) / 1000000f;

            this.lblKB.Text = "" + kb + " KB";
            this.lblMB.Text = "" + mb + " MB";

            this.lblClrVal.Text = "";
            this.lblCount.Text = "";

            this.lblMax.Text = "" + drawAreaRed.max;
            this.lblMin.Text = "" + drawAreaRed.min;
        }
        public ColorSelector(Child c)
        {
            ch = c;

            data = new byte[ch.pic.getHeight(), ch.pic.getWidth(), 4];

            for (int i = 0; i < ch.pic.getHeight(); i++)
                for (int j = 0; j < ch.pic.getWidth(); j++)
                {
                    data[i, j, 0] = ch.pic.image[i, j, 0];
                    data[i, j, 1] = ch.pic.image[i, j, 1];
                    data[i, j, 2] = ch.pic.image[i, j, 2];
                    data[i, j, 3] = ch.pic.image[i, j, 3];
                }

            InitializeComponent();
            this.lblError.Text = "";
            this.tbRed.Text = "" + this.RedTrack.Value;
            this.tbGreen.Text = "" + this.GreenTrack.Value;
            this.tbBlue.Text = "" + this.BlueTrack.Value;
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Selection Constructor
        /// </summary>
        /// <param name="c">Child Form</param>
        /// <param name="t">Selects algorithm</param>
        public Selection(Child c, int t)
        {
            ch = c;
            type = t;
            data = new byte[ch.pic.getHeight(), ch.pic.getWidth(), 4];

            for (int i = 0; i < ch.pic.getHeight(); i++)
                for (int j = 0; j < ch.pic.getWidth(); j++)
                {
                    data[i, j, 0] = ch.pic.image[i, j, 0];
                    data[i, j, 1] = ch.pic.image[i, j, 1];
                    data[i, j, 2] = ch.pic.image[i, j, 2];
                    data[i, j, 3] = ch.pic.image[i, j, 3];
                }

            InitializeComponent();
            if (type == 1)
            {
                this.Text = ch.Text + " Brightness - Selection";
                this.lblType.Text = "Brightness:";
                this.trackBar1.Maximum = 255;
                this.trackBar1.Minimum = -255;
            }
            else if (type == 2)
            {
                this.Text = ch.Text + " Contrast - Selection";
                this.lblType.Text = "Contrast:";
                this.trackBar1.Maximum = 100;
                this.trackBar1.Minimum = -100;
            }
            else if (type == 3)
            {
                this.Text = ch.Text + " Gamma - Selection";
                this.lblType.Text = "Gamma:";
                this.trackBar1.Maximum = 160;
                this.trackBar1.Minimum = 0;
                this.trackBar1.TickFrequency = 1;
                this.trackBar1.Value = 20;
            }
        }
Ejemplo n.º 6
0
        public Zoom(Child c)
        {
            ch = c;

            InitializeComponent();
        }
Ejemplo n.º 7
0
 public GetAlpha(Child c)
 {
     ch = c;
     InitializeComponent();
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Neat Mistake
        /// </summary>
        /// <param name="tl">Top Left</param>
        /// <param name="tm">Top Middle</param>
        /// <param name="tr">Top Right</param>
        /// <param name="cl">Center Left</param>
        /// <param name="cm">Center Middle</param>
        /// <param name="cr">Center Right</param>
        /// <param name="bl">Bottom Left</param>
        /// <param name="bm">Bottom Middle</param>
        /// <param name="br">Bottom Right</param>
        public void HorizBlur(byte tl, byte tm, byte tr,
                              byte cl, byte cm, byte cr,
                              byte bl, byte bm, byte br, Child c)
        {
            c.pappy.TSProgress.Minimum = 0;//Interface Junk
            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Maximum = (iH) * (iW);//Interface Junk

            int total = 0;
            int sumR = 0, sumG = 0, sumB = 0;

            c.pappy.TSProgress.Visible = true;//Interface Junk
            for (int i = 0; i < iH; i++)
            {
                for (int j = 0; j < iW; j++)
                {
                    if (i != 0 && j != 0)
                    {
                        sumR += tl * image[i - 1, j - 1, 0];
                        sumG += tl * image[i - 1, j - 1, 1];
                        sumB += tl * image[i - 1, j - 1, 2];
                        total += tl;
                    }
                    if (i != 0)
                    {
                        sumR += tl * image[i - 1, j, 0];
                        sumG += tl * image[i - 1, j, 1];
                        sumB += tl * image[i - 1, j, 2];
                        total += tm;
                    }
                    if (i != 0 && j != iW - 1)
                    {
                        sumR += tr * image[i - 1, j + 1, 0];
                        sumG += tr * image[i - 1, j + 1, 1];
                        sumB += tr * image[i - 1, j + 1, 2];
                        total += tr;
                    }
                    if (j != 0)
                    {
                        sumR += cl * image[i, j - 1, 0];
                        sumG += cl * image[i, j - 1, 1];
                        sumB += tr * image[i, j - 1, 2];
                        total += cl;
                    }
                    if (j != iW - 1)
                    {
                        sumR += cl * image[i, j + 1, 0];
                        sumG += cl * image[i, j + 1, 1];
                        sumB += tr * image[i, j + 1, 2];
                        total += cr;
                    }
                    if (i != iH - 1 && j != 0)
                    {
                        sumR += bl * image[i + 1, j - 1, 0];
                        sumG += bl * image[i + 1, j - 1, 1];
                        sumB += bl * image[i + 1, j - 1, 2];
                        total += bl;
                    }
                    if (i != iH - 1)
                    {
                        sumR += bm * image[i + 1, j, 0];
                        sumG += bm * image[i + 1, j, 1];
                        sumB += bm * image[i + 1, j, 2];
                        total += bm;
                    }
                    if (i != iH - 1 && j != iW - 1)
                    {
                        sumR += br * image[i + 1, j + 1, 0];
                        sumG += br * image[i + 1, j + 1, 1];
                        sumB += br * image[i + 1, j + 1, 2];
                        total += br;
                    }
                    sumR += cm * image[i, j, 0];
                    sumG += cm * image[i, j, 1];
                    sumB += cm * image[i, j, 2];
                    total += cm;

                    image[i, j, 0] = (byte)(sumR / total);
                    image[i, j, 1] = (byte)(sumG / total);
                    image[i, j, 2] = (byte)(sumB / total);

                    c.pappy.TSProgress.Value++;//Interface Junk
                }
                sumR = 0;
                sumG = 0;
                sumB = 0;
                total = 0;
            }
            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Visible = false;//Interface Junk
        }
Ejemplo n.º 9
0
        /// <summary>
        /// High Pass 3x3 filter
        /// </summary>
        /// <param name="tl">Top Left</param>
        /// <param name="tm">Top Middle</param>
        /// <param name="tr">Top Right</param>
        /// <param name="cl">Center Left</param>
        /// <param name="cm">Center Middle</param>
        /// <param name="cr">Center Right</param>
        /// <param name="bl">Bottom Left</param>
        /// <param name="bm">Bottom Middle</param>
        /// <param name="br">Bottom Right</param>
        /// <param name="c">Child to Update interface;</param>
        public void High3Filter(int tl, int tm, int tr,
                                int cl, int cm, int cr,
                                int bl, int bm, int br, Child c)
        {
            c.pappy.TSProgress.Minimum = 0;//Interface Junk
            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Maximum = (iH) * (iW);//Interface Junk

            extra = new byte[iH, iW, 4];
            int total = 0;
            int sumR = 0, sumG = 0, sumB = 0;

            c.pappy.TSProgress.Visible = true;//Interface Junk
            for (int i = 0; i < iH; i++)
            {
                for (int j = 0; j < iW; j++)
                {
                    if (i != 0 && j != 0)//top left
                    {
                        sumR += tl * image[i - 1, j - 1, 0];
                        sumG += tl * image[i - 1, j - 1, 1];
                        sumB += tl * image[i - 1, j - 1, 2];
                        total += tl;
                    }
                    if (i != 0)//top middle
                    {
                        sumR += tm * image[i - 1, j, 0];
                        sumG += tm * image[i - 1, j, 1];
                        sumB += tm * image[i - 1, j, 2];
                        total += tm;
                    }
                    if (i != 0 && j != iW - 1)//top right
                    {
                        sumR += tr * image[i - 1, j + 1, 0];
                        sumG += tr * image[i - 1, j + 1, 1];
                        sumB += tr * image[i - 1, j + 1, 2];
                        total += tr;
                    }
                    if (j != 0)//center left
                    {
                        sumR += cl * image[i, j - 1, 0];
                        sumG += cl * image[i, j - 1, 1];
                        sumB += cl * image[i, j - 1, 2];
                        total += cl;
                    }
                    if (j != iW - 1)//center right
                    {
                        sumR += cr * image[i, j + 1, 0];
                        sumG += cr * image[i, j + 1, 1];
                        sumB += cr * image[i, j + 1, 2];
                        total += cr;
                    }
                    if (i != iH - 1 && j != 0)//bottom left
                    {
                        sumR += bl * image[i + 1, j - 1, 0];
                        sumG += bl * image[i + 1, j - 1, 1];
                        sumB += bl * image[i + 1, j - 1, 2];
                        total += bl;
                    }
                    if (i != iH - 1)//bottom middle
                    {
                        sumR += bm * image[i + 1, j, 0];
                        sumG += bm * image[i + 1, j, 1];
                        sumB += bm * image[i + 1, j, 2];
                        total += bm;
                    }
                    if (i != iH - 1 && j != iW - 1)//bottom right
                    {
                        sumR += br * image[i + 1, j + 1, 0];
                        sumG += br * image[i + 1, j + 1, 1];
                        sumB += br * image[i + 1, j + 1, 2];
                        total += br;
                    }
                    sumR += (Math.Abs(total) + 1)  * image[i, j, 0];
                    sumG += (Math.Abs(total) + 1)  * image[i, j, 1];
                    sumB += (Math.Abs(total) + 1)  * image[i, j, 2];
                    total += (Math.Abs(total) + 1);

                    extra[i, j, 0] = Clamp(sumR);
                    extra[i, j, 1] = Clamp(sumG);
                    extra[i, j, 2] = Clamp(sumB);
                    extra[i, j, 3] = 0;

                    sumR = 0;
                    sumG = 0;
                    sumB = 0;
                    total = 0;

                    c.pappy.TSProgress.Value++;//Interface Junk
                }
            }
            image = extra;

            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Visible = false;//Interface Junk
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Performs Wash filter with variable size matrix
        /// </summary>
        public void WashFilter(Child c)
        {
            c.pappy.TSProgress.Minimum = 0;//Interface Junk
            c.pappy.TSProgress.Value = 0;//Interface Junk

            int size = GetInt("Mode Filter", "Input a Matrix Size (3)x3 or (5)x5 etc.");

            if ((size % 2) != 1 || size == -1)
                return;

            int off = size / 2;

            c.pappy.TSProgress.Maximum = (iH - off) * (iW - off);//Interface Junk
            c.pappy.TSProgress.Visible = true;//Interface Junk

            int[] rf = new int[256];
            int[] gf = new int[256];
            int[] bf = new int[256];

            byte rm = 0, gm = 0, bm = 0;

            for (int i = off; i < iH - off; i++)
                for (int j = off; j < iW - off; j++)
                {

                    for (int x = 0; x < size; x++)
                        for (int y = 0; y < size; y++)
                        {
                            rf[image[i + x - off, j + y - off, 0]]++;
                            gf[image[i + x - off, j + y - off, 1]]++;
                            bf[image[i + x - off, j + y - off, 2]]++;
                        }

                    for (int z = 1; z < 256; z++)
                    {
                        if (rf[z] > rf[rm])
                            rm = (byte)z;
                        if (gf[z] > gf[gm])
                            gm = (byte)z;
                        if (bf[z] > bf[bm])
                            bm = (byte)z;
                    }

                    image[i, j, 0] = rm;
                    image[i, j, 1] = gm;
                    image[i, j, 2] = bm;

                    for (int k = 0; k < 256; k++)
                    {
                        rf[k] = 0;
                        gf[k] = 0;
                        bf[k] = 0;
                    }

                    c.pappy.TSProgress.Value++;//Interface Junk
                }

            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Visible = false;//Interface Junk
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Sharpens an Image
        /// </summary>
        /// <param name="c">Child to Update Interface</param>
        public void Unsharp(Child c)
        {
            c.pappy.TSProgress.Minimum = 0;//Interface Junk
            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Maximum = (iH) * (iW) * 3;//Interface Junk

            extra = new byte[iH, iW, 4];

            byte[, ,] d = new byte[iH, iW, 4];
            int total = 0;
            int sumR = 0, sumG = 0, sumB = 0;

            c.pappy.TSProgress.Visible = true;//Interface Junk

            #region Blur

            for (int i = 0; i < iH; i++)
            {
                for (int j = 0; j < iW; j++)
                {
                    if (i != 0 && j != 0)//top left
                    {
                        sumR += image[i - 1, j - 1, 0];
                        sumG += image[i - 1, j - 1, 1];
                        sumB += image[i - 1, j - 1, 2];
                        total++;
                    }
                    if (i != 0)//top middle
                    {
                        sumR += image[i - 1, j, 0];
                        sumG += image[i - 1, j, 1];
                        sumB += image[i - 1, j, 2];
                        total++;
                    }
                    if (i != 0 && j != iW - 1)//top right
                    {
                        sumR += image[i - 1, j + 1, 0];
                        sumG += image[i - 1, j + 1, 1];
                        sumB += image[i - 1, j + 1, 2];
                        total++;
                    }
                    if (j != 0)//center left
                    {
                        sumR += image[i, j - 1, 0];
                        sumG += image[i, j - 1, 1];
                        sumB += image[i, j - 1, 2];
                        total++;
                    }
                    if (j != iW - 1)//center right
                    {
                        sumR += image[i, j + 1, 0];
                        sumG += image[i, j + 1, 1];
                        sumB += image[i, j + 1, 2];
                        total++;
                    }
                    if (i != iH - 1 && j != 0)//bottom left
                    {
                        sumR += image[i + 1, j - 1, 0];
                        sumG += image[i + 1, j - 1, 1];
                        sumB += image[i + 1, j - 1, 2];
                        total++;
                    }
                    if (i != iH - 1)//bottom middle
                    {
                        sumR += image[i + 1, j, 0];
                        sumG += image[i + 1, j, 1];
                        sumB += image[i + 1, j, 2];
                        total++;
                    }
                    if (i != iH - 1 && j != iW - 1)//bottom right
                    {
                        sumR += image[i + 1, j + 1, 0];
                        sumG += image[i + 1, j + 1, 1];
                        sumB += image[i + 1, j + 1, 2];
                        total++;
                    }
                    sumR += image[i, j, 0];
                    sumG += image[i, j, 1];
                    sumB += image[i, j, 2];
                    total++;

                    extra[i, j, 0] = (byte)((float)sumR / (float)total);
                    extra[i, j, 1] = (byte)((float)sumG / (float)total);
                    extra[i, j, 2] = (byte)((float)sumB / (float)total);
                    extra[i, j, 3] = 0;

                    sumR = 0;
                    sumG = 0;
                    sumB = 0;
                    total = 0;

                    c.pappy.TSProgress.Value++;//Interface Junk
                }
            }

            #endregion

            #region Difference

            for (int i = 0; i < iH; i++)
                for (int j = 0; j < iW; j++)
                {
                    //Red
                    d[i, j, 0] = Clamp(image[i, j, 0] - (int)extra[i, j, 0]);
                    //Green
                    d[i, j, 1] = Clamp(image[i, j, 1] - (int)extra[i, j, 1]);
                    //Blue
                    d[i, j, 2] = Clamp(image[i, j, 2] - (int)extra[i, j, 2]);

                    c.pappy.TSProgress.Value++;//Interface Junk
                }

            #endregion

            #region Additon

            for (int i = 0; i < iH; i++)
                for (int j = 0; j < iW; j++)
                {
                    //Red
                    image[i, j, 0] = Clamp(image[i, j, 0] + ((int)d[i, j, 0]));
                    //Green
                    image[i, j, 1] = Clamp(image[i, j, 1] + ((int)d[i, j, 1]));
                    //Blue
                    image[i, j, 2] = Clamp(image[i, j, 2] + ((int)d[i, j, 2]));

                    c.pappy.TSProgress.Value++;//Interface Junk
                }

            #endregion

            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Visible = false;//Interface Junk

            extra = null;
            d = null;
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Performs Min filter with variable size matrix
        /// </summary>
        public void MinFilter(Child c)
        {
            c.pappy.TSProgress.Minimum = 0;//Interface Junk
            c.pappy.TSProgress.Value = 0;//Interface Junk

            int size = GetInt("Min Filter", "Input a Matrix Size (3)x3 or (5)x5 etc.");

            if ((size % 2) != 1 || size == -1)
                return;

            byte[] r = new byte[size * size];
            byte[] g = new byte[size * size];
            byte[] b = new byte[size * size];

            extra = new byte[iH, iW, 4];

            int off = size / 2;

            c.pappy.TSProgress.Maximum = (iH - off) * (iW - off);//Interface Junk
            c.pappy.TSProgress.Visible = true;//Interface Junk

            for (int i = off; i < iH - off; i++)
                for (int j = off; j < iW - off; j++)
                {

                    for (int x = 0; x < size; x++)
                        for (int y = 0; y < size; y++)
                        {
                            r[x * size + y] = image[i + x - off, j + y - off, 0];
                            g[x * size + y] = image[i + x - off, j + y - off, 1];
                            b[x * size + y] = image[i + x - off, j + y - off, 2];
                        }

                    Array.Sort(r);
                    Array.Sort(g);
                    Array.Sort(b);

                    extra[i, j, 0] = r[0];
                    extra[i, j, 1] = g[0];
                    extra[i, j, 2] = b[0];

                    c.pappy.TSProgress.Value++;//Interface Junk
                }

            image = extra;

            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Visible = false;//Interface Junk
        }
Ejemplo n.º 13
0
        /// <summary>
        /// Gets mean with 3 x 3 neighborhood
        /// </summary>
        /// <param name="tl">Top Left</param>
        /// <param name="tm">Top Middle</param>
        /// <param name="tr">Top Right</param>
        /// <param name="cl">Center Left</param>
        /// <param name="cm">Center Middle</param>
        /// <param name="cr">Center Right</param>
        /// <param name="bl">Bottom Left</param>
        /// <param name="bm">Bottom Middle</param>
        /// <param name="br">Bottom Right</param>
        public void Low3Filter(byte tl, byte tm, byte tr,
                                byte cl, byte cm, byte cr,
                                byte bl, byte bm, byte br, Child c)
        {
            c.pappy.TSProgress.Minimum = 0;//Interface Junk
            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Maximum = (iH) * (iW);//Interface Junk

            extra = new byte[iH, iW, 4];
            int total = 0;
            int sumR = 0, sumG = 0, sumB = 0;

            c.pappy.TSProgress.Visible = true;//Interface Junk
            for (int i = 0; i < iH; i++)
            {
                for (int j = 0; j < iW; j++)
                {
                    if (i != 0 && j != 0)//top left
                    {
                        sumR += tl * image[i - 1, j - 1, 0];
                        sumG += tl * image[i - 1, j - 1, 1];
                        sumB += tl * image[i - 1, j - 1, 2];
                        total += tl;
                    }
                    if (i != 0)//top middle
                    {
                        sumR += tm * image[i - 1, j, 0];
                        sumG += tm * image[i - 1, j, 1];
                        sumB += tm * image[i - 1, j, 2];
                        total += tm;
                    }
                    if (i != 0 && j != iW - 1)//top right
                    {
                        sumR += tr * image[i - 1, j + 1, 0];
                        sumG += tr * image[i - 1, j + 1, 1];
                        sumB += tr * image[i - 1, j + 1, 2];
                        total += tr;
                    }
                    if (j != 0)//center left
                    {
                        sumR += cl * image[i, j - 1, 0];
                        sumG += cl * image[i, j - 1, 1];
                        sumB += cl * image[i, j - 1, 2];
                        total += cl;
                    }
                    if (j != iW - 1)//center right
                    {
                        sumR += cr * image[i, j + 1, 0];
                        sumG += cr * image[i, j + 1, 1];
                        sumB += cr * image[i, j + 1, 2];
                        total += cr;
                    }
                    if (i != iH - 1 && j != 0)//bottom left
                    {
                        sumR += bl * image[i + 1, j - 1, 0];
                        sumG += bl * image[i + 1, j - 1, 1];
                        sumB += bl * image[i + 1, j - 1, 2];
                        total += bl;
                    }
                    if (i != iH - 1)//bottom middle
                    {
                        sumR += bm * image[i + 1, j, 0];
                        sumG += bm * image[i + 1, j, 1];
                        sumB += bm * image[i + 1, j, 2];
                        total += bm;
                    }
                    if (i != iH - 1 && j != iW - 1)//bottom right
                    {
                        sumR += br * image[i + 1, j + 1, 0];
                        sumG += br * image[i + 1, j + 1, 1];
                        sumB += br * image[i + 1, j + 1, 2];
                        total += br;
                    }
                    sumR += cm * image[i, j, 0];
                    sumG += cm * image[i, j, 1];
                    sumB += cm * image[i, j, 2];
                    total += cm;

                    extra[i, j, 0] = (byte)((float)sumR / (float)total);
                    extra[i, j, 1] = (byte)((float)sumG / (float)total);
                    extra[i, j, 2] = (byte)((float)sumB / (float)total);
                    extra[i, j, 3] = 0;

                    sumR = 0;
                    sumG = 0;
                    sumB = 0;
                    total = 0;

                    c.pappy.TSProgress.Value++;//Interface Junk
                }
            }

            image = extra;

            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Visible = false;//Interface Junk
        }
Ejemplo n.º 14
0
 public BitMask(Child c)
 {
     ch = c;
     InitializeComponent();
 }
Ejemplo n.º 15
0
 public AddNoise(Child c)
 {
     ch = c;
     InitializeComponent();
 }
Ejemplo n.º 16
0
        /// <summary>
        /// Sobel sum 3x3 filter
        /// </summary>
        /// <param name="c">Child to Update interface</param>
        public void Sobel3Filter(Child c)
        {
            c.pappy.TSProgress.Minimum = 0;//Interface Junk
            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Maximum = (iH) * (iW) * 3;//Interface Junk

            extra = new byte[iH, iW, 4];
            byte[,,] temp = new byte[iH, iW, 4];

            int sumR = 0, sumG = 0, sumB = 0;

            c.pappy.TSProgress.Visible = true;//Interface Junk

            #region X-Axis Sobel

            for (int i = 0; i < iH; i++)
            {
                for (int j = 0; j < iW; j++)
                {
                    if (i != 0 && j != 0)//top left
                    {
                        sumR += -1 * image[i - 1, j - 1, 0];
                        sumG += -1 * image[i - 1, j - 1, 1];
                        sumB += -1 * image[i - 1, j - 1, 2];
                    }
                    if (i != 0 && j != iW - 1)//top right
                    {
                        sumR += 1 * image[i - 1, j + 1, 0];
                        sumG += 1 * image[i - 1, j + 1, 1];
                        sumB += 1 * image[i - 1, j + 1, 2];
                    }
                    if (j != 0)//center left
                    {
                        sumR += -2 * image[i, j - 1, 0];
                        sumG += -2 * image[i, j - 1, 1];
                        sumB += -2 * image[i, j - 1, 2];
                    }
                    if (j != iW - 1)//center right
                    {
                        sumR += 2 * image[i, j + 1, 0];
                        sumG += 2 * image[i, j + 1, 1];
                        sumB += 2 * image[i, j + 1, 2];
                    }
                    if (i != iH - 1 && j != 0)//bottom left
                    {
                        sumR += -1 * image[i + 1, j - 1, 0];
                        sumG += -1 * image[i + 1, j - 1, 1];
                        sumB += -1 * image[i + 1, j - 1, 2];
                    }
                    if (i != iH - 1 && j != iW - 1)//bottom right
                    {
                        sumR += 1 * image[i + 1, j + 1, 0];
                        sumG += 1 * image[i + 1, j + 1, 1];
                        sumB += 1 * image[i + 1, j + 1, 2];
                    }

                    extra[i, j, 0] = Clamp(sumR);
                    extra[i, j, 1] = Clamp(sumG);
                    extra[i, j, 2] = Clamp(sumB);
                    extra[i, j, 3] = 0;

                    sumR = 0;
                    sumG = 0;
                    sumB = 0;

                    c.pappy.TSProgress.Value++;//Interface Junk
                }
            }

            #endregion

            #region Y-Axis Sobel

            for (int i = 0; i < iH; i++)
            {
                for (int j = 0; j < iW; j++)
                {
                    if (i != 0 && j != 0)//top left
                    {
                        sumR += 1 * image[i - 1, j - 1, 0];
                        sumG += 1 * image[i - 1, j - 1, 1];
                        sumB += 1 * image[i - 1, j - 1, 2];
                    }
                    if (i != 0)//top middle
                    {
                        sumR += 2 * image[i - 1, j, 0];
                        sumG += 2 * image[i - 1, j, 1];
                        sumB += 2 * image[i - 1, j, 2];
                    }
                    if (i != 0 && j != iW - 1)//top right
                    {
                        sumR += 1 * image[i - 1, j + 1, 0];
                        sumG += 1 * image[i - 1, j + 1, 1];
                        sumB += 1 * image[i - 1, j + 1, 2];
                    }
                    if (i != iH - 1 && j != 0)//bottom left
                    {
                        sumR += -1 * image[i + 1, j - 1, 0];
                        sumG += -1 * image[i + 1, j - 1, 1];
                        sumB += -1 * image[i + 1, j - 1, 2];
                    }
                    if (i != iH - 1)//bottom middle
                    {
                        sumR += -2 * image[i + 1, j, 0];
                        sumG += -2 * image[i + 1, j, 1];
                        sumB += -2 * image[i + 1, j, 2];
                    }
                    if (i != iH - 1 && j != iW - 1)//bottom right
                    {
                        sumR += -1 * image[i + 1, j + 1, 0];
                        sumG += -1 * image[i + 1, j + 1, 1];
                        sumB += -1 * image[i + 1, j + 1, 2];
                    }

                    temp[i, j, 0] = Clamp(sumR);
                    temp[i, j, 1] = Clamp(sumG);
                    temp[i, j, 2] = Clamp(sumB);
                    temp[i, j, 3] = 0;

                    sumR = 0;
                    sumG = 0;
                    sumB = 0;

                    c.pappy.TSProgress.Value++;//Interface Junk
                }
            }

            #endregion

            #region Addition

            for (int i = 0; i < iH; i++)
            {
                for (int j = 0; j < iW; j++)
                {
                    image[i, j, 0] = Clamp(temp[i, j, 0] + extra[i, j, 0]);
                    image[i, j, 1] = Clamp(temp[i, j, 1] + extra[i, j, 1]);
                    image[i, j, 2] = Clamp(temp[i, j, 2] + extra[i, j, 2]);
                    image[i, j, 3] = 0;

                    c.pappy.TSProgress.Value++;//Interface Junk
                }
            }

            #endregion

            extra = null;
            temp = null;

            c.pappy.TSProgress.Value = 0;//Interface Junk
            c.pappy.TSProgress.Visible = false;//Interface Junk
        }
Ejemplo n.º 17
0
 public BrSlice(Child c)
 {
     ch = c;
     InitializeComponent();
 }