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"; } }
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; }
/// <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; } }
public Zoom(Child c) { ch = c; InitializeComponent(); }
public GetAlpha(Child c) { ch = c; InitializeComponent(); }
/// <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 }
/// <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 }
/// <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 }
/// <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; }
/// <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 }
/// <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 }
public BitMask(Child c) { ch = c; InitializeComponent(); }
public AddNoise(Child c) { ch = c; InitializeComponent(); }
/// <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 }
public BrSlice(Child c) { ch = c; InitializeComponent(); }