Mainform.cs Filtering.cs

LISTING PROGRAM

1. Mainform.cs

using System; using System.Drawing; using System.Windows.Forms; namespace AnalisisPerbandinganFilertingdanDeteksiTepi { public partial class MainForm : Form { public MainForm { InitializeComponent; } void FilteringToolStripMenuItemClickobject sender, EventAr s e { Filtering a = new Filtering; this.Hide; a.ShowDialog; } void DeteksiTepiToolStripMenuItemClickobject sender, EventArgs e { DeteksiTepi a = new DeteksiTepi; this.Hide; a.ShowDialog; } void AboutToolStripMenuItemClickobject sender, EventArgs e { Help a = new Help; this.Hide; a.ShowDialog; } void AboutToolStripMenuItem1Clickobject sender, EventArgs e { About a = new About; this.Hide; a.ShowDialog; } void ExitToolStripMenuItemClickobject sender, EventArgs e { if MessageBox.ShowAre you sure to exit the Aplication?, Exit, MessageBoxButtons.YesNo, MessageBoxIcon.Question == DialogResult.Yes Application.Exit; } } }

2. Filtering.cs

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Diagnostics; using System.IO; namespace AnalisisPerbandinganFilertingdanDeteksiTepi { public partial class Filtering : Form { Bitmap img; bool bitdev; double Dev; double probabilitas; IntPtr point = IntPtr.Zero; public Filtering { InitializeComponent; } Bitmap geometricBitmap image { int lebar = image.Width; int panjang = image.Height; double merah = 0, hijau = 0, biru = 0, hasilred = 1, hasilgreen = 1, hasilblue = 1; double redfinal, greenfinal, bluefinal; Bitmap imagehasil = new Bitmaplebar, panjang; for int i = 0; i panjang-2; i++ { for int j = 0; j lebar-2; j++ { for int k = i; k = i + 2; k++ { for int l = j; l = j + 2; l++ { merah = image.GetPixell, k.R; if merah == 0 merah = 255; hijau = image.GetPixell, k.G; if hijau == 0 hijau = 255; biru = image.GetPixell, k.B; if biru == 0 biru = 255; hasilred = merah; hasilgreen = hijau; hasilblue = biru; } } redfinal = Math.Powhasilred,1.09.0; double RED = Math.Roundredfinal; greenfinal = Math.Powhasilgreen,1.09.0; double GREEN = Math.Roundgreenfinal, 0; bluefinal = Math.Powhasilblue,1.09.0; double BLUE = Math.Roundbluefinal, 0; imagehasil.SetPixelj + 1, i + 1, Color.FromArgb255, in tRED, intGREEN, intBLUE; hasilred = 1; hasilgreen = 1; hasilblue = 1; } } return imagehasil; } void HomeToolStripMenuItemClickobject sender, EventArgs e { MainForm a = new MainForm; this.Hide; a.ShowDialog; } void DeteksiTepiToolStripMenuItemClickobject sender, EventArgs e { DeteksiTepi a = new DeteksiTepi; this.Hide; a.ShowDialog; } void AboutToolStripMenuItemClickobject sender, EventArgs e { Help a = new Help; this.Hide; a.ShowDialog; } void AboutToolStripMenuItem1Clickobject sender, EventArgs e { About a = new About; this.Hide; a.ShowDialog; } void PictureBox4Clickobject sender, EventArgs e { try { OpenFileDialog oFile = new OpenFileDialog; oFile.Filter = Images File.bmp|.bmp; if oFile.ShowDialog == DialogResult.OK { Bitmap cit = new Bitmap oFile.FileName; if cit.Height = 300 cit.Width = 300 { pcitraAsli.Image = cit; img = new Bitmapnew BitmapoFile.FileName, pcitraAsli.Width, pcitraAsli.Height ; pcitraAsli.Image = img; textBox6.Text=cit.Width.ToString; textBox5.Text=cit.Height.ToString; textBox4.Text=oFile.SafeFileName.ToString; } else MessageBox.ShowImage Pixel must be 300x300, Warning; } } catch Exception { throw new ApplicationExceptionFailed Loading ; } } void ClearClickobject sender, EventArgs e { pcitraAsli.Image=null; pcitraNoise.Image=null; pcitraFilter.Image=null; textBox4.Text=; textBox5.Text=; textBox6.Text=; comboBox1.Text=null; } void ExitToolStripMenuItemClickobject sender, EventArgs e { if MessageBox.ShowAre you sure to exit the Aplication?, Exit, MessageBoxButtons.YesNo, MessageBoxIcon.Question == DialogResult.Yes Application.Exit; } private double getGaussianNumbers { Random rand = new Random; double x, y, kotak; if bitdev { bitdev = false; return Dev 1; } do { x = 2 rand.NextDouble - 1; y = 2 rand.NextDouble - 1; kotak = x x + y y; } while kotak = 1 || kotak == 0; var kutub = Math.Sqrt- 2 Math.Logkotak kotak; Dev = y kutub; bitdev = true; return x kutub; } void SaveClickobject sender, EventArgs e { ifpcitraFilter.Image = null { SaveFileDialog save = new SaveFileDialog; save.Filter = Image Files | .bmp; save.FileName = .bmp; if save.ShowDialog == DialogResult.OK { pcitraFilter.Image.Savesave.FileName, System.Drawing .Imaging.ImageFormat.Bmp; MessageBox.Showimage save , save, MessageBoxButtons.OK, MessageBoxIcon.Information; } else { MessageBox.Showerror save ; } } } void GeometricMeanFIlterClickobject sender, EventArgs e { Bitmap bit = new BitmappcitraNoise.Image; pcitraFilter.Image=geometricbit; } void GaussianClickobject sender, EventArgs e { Bitmap citraAsli = new BitmappcitraAsli.Image; int x = citraAsli.Width; int y = citraAsli.Height; Bitmap citraHasil = citraAsli; if comboBox1.Text == 10 probabilitas = 10; else if comboBox1.Text == 20 probabilitas = 20; else if comboBox1.Text == 30 probabilitas = 30; else if comboBox1.Text == 40 probabilitas = 40; else if comboBox1.Text == 50 probabilitas = 50; double gaussianNumber = 0.0; int step, newPixel, pixelSize = x y; BitmapData bmpData = null; byte[] Pxl; Random rnd = new Random; Rectangle box = new Rectangle0, 0, x, y; int Depth = System.Drawing.Bitmap.GetPixelFormatSizecitraAsli.PixelFormat; step = Depth 8; bmpData = citraAsli.LockBitsbox, ImageLockMode.ReadWrite, citraAsli.PixelFormat; Pxl = new byte[pixelSize step]; point = bmpData.Scan0; Marshal.Copypoint, Pxl, 0, Pxl.Length; for int i = 0; i Pxl.Length; i += step { if i Pxl.Length - step { for int j = 0; j step; j++ { gaussianNumber = getGaussianNumbers; newPixel = Convert.ToInt32gaussianNumber probabilitas + Convert.ToInt32Pxl[i + j]; if newPixel 0 newPixel = 0; if newPixel 255 newPixel = 255; Pxl[i + j] = Convert.ToBytenewPixel; } } } Marshal.CopyPxl, 0, point, Pxl.Length; citraAsli.UnlockBitsbmpData; pcitraNoise.Image=citraAsli; } void SaltpepperClickobject sender, EventArgs e { Bitmap citraAsli = new BitmappcitraAsli.Image; int x = citraAsli.Width; int y = citraAsli.Height; Bitmap citraHasil = citraAsli; if comboBox1.Text == 10 probabilitas = Convert.ToInt320.1xy; else if comboBox1.Text == 20 probabilitas = Convert.ToInt320.2xy; else if comboBox1.Text == 30 probabilitas = Convert.ToInt320.3xy; else if comboBox1.Text == 40 probabilitas = Convert.ToInt320.4xy; else if comboBox1.Text == 50 probabilitas = Convert.ToInt320.5xy; int x1,y1,val; Random rand = new Random; for int i = 0; i probabilitas; i++ { x1 = rand.Next0,x-1; y1 = rand.Next0,y-1; val = rand.Next1,10; if val = 5 { citraHasil.SetPixelx1,y1,Color.FromArgb255,0,0,0; } else { citraHasil.SetPixelx1,y1,Color.FromArgb255,255,255, 255; } } pcitraNoise.Image=citraAsli; } void Button1Clickobject sender, EventArgs e { ifpcitraNoise.Image = null { SaveFileDialog save = new SaveFileDialog; save.Filter = Image Files | .bmp; save.FileName = .bmp; if save.ShowDialog == DialogResult.OK { pcitraNoise.Image.Savesave.FileName, System.Drawing. Imaging.ImageFormat.Bmp; MessageBox.Showimage save , save, MessageBoxButtons.OK, MessageBoxIcon.Information; } else { MessageBox.Showerror save ; } } } } }

3. Deteksi Tepi