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