• Tidak ada hasil yang ditemukan

Perbandingan Hasil Deteksi Tepi Laplacian Of Gaussian Dengan Laplacian Of Gaussian Kombinasi High Boost Filtering

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perbandingan Hasil Deteksi Tepi Laplacian Of Gaussian Dengan Laplacian Of Gaussian Kombinasi High Boost Filtering"

Copied!
20
0
0

Teks penuh

(1)

LISTING PROGRAM

1.

Form Home

using System;

using System.Collections.Generic; using System.Drawing;

using System.Windows.Forms;

namespace Program_Skripsi {

public partial class MainForm : Form {

public MainForm() {

InitializeComponent(); }

//menu untuk masuk ke form pengujian

void PengujianToolStripMenuItemClick(object sender, EventArgs e) {

FormPengujian f2 = new FormPengujian(); f2.ShowDialog();

this.Dispose(); }

//menu untuk masuk ke form hasil

void HasilToolStripMenuItemClick(object sender, EventArgs e) {

FormHasil f2 = new FormHasil(); f2.ShowDialog();

this.Dispose(); }

//menu untuk masuk ke form help

void HelpToolStripMenuItemClick(object sender, EventArgs e) {

FormHelp f2 = new FormHelp(); f2.ShowDialog();

this.Dispose(); }

//menu untuk masuk ke form about

void AboutToolStripMenuItemClick(object sender, EventArgs e) {

FormAbout f2 = new FormAbout(); f2.ShowDialog();

this.Dispose(); }

//menu untuk keluar dari aplikasi

void ExitToolStripMenuItem1Click(object sender, EventArgs e) {

(2)

== DialogResult.Yes)

Application.Exit(); }

} }

2.

Form Pengujian

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 Program_Skripsi {

public partial class FormPengujian : Form {

bool bitdeviasi; double Deviasi; double proba;

IntPtr point = IntPtr.Zero; int[,] pixelImage;

double[,] tapisHighBoost; double A;

double w;

double runtime;

//menu untuk masuk ke form home

void HomeToolStripMenuItemClick(object sender, EventArgs e) {

MainForm f2 = new MainForm(); f2.ShowDialog();

this.Dispose(); }

//menu untuk masuk ke form pengujian

void HasilToolStripMenuItemClick(object sender, EventArgs e) {

FormHasil f2 = new FormHasil(); f2.ShowDialog();

this.Dispose(); }

(3)

void HelpToolStripMenuItemClick(object sender, EventArgs e) {

FormHelp f2 = new FormHelp(); f2.ShowDialog();

this.Dispose(); }

//menu untuk masuk ke form about

void AboutToolStripMenuItemClick(object sender, EventArgs e) {

FormAbout f2 = new FormAbout(); f2.ShowDialog();

this.Dispose(); }

//menu untuk keluar dari aplikasi

void ExitToolStripMenuItemClick(object sender, EventArgs e) {

if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

Application.Exit(); }

//tombol browse untuk menginput objek

void Button1Click(object sender, EventArgs e) {

try {

OpenFileDialog open = new OpenFileDialog(); open.Filter = "Image Files( *.bmp)|*.bmp"; if (open.ShowDialog() == DialogResult.OK) {

Bitmap bit = new Bitmap(open.FileName); if (bit.Height <= 300 && bit.Width <= 300) {

pictureBox1.Image = bit; pictureBox2.Image = bit; }

else

MessageBox.Show("Image Pixel must be 300x300 px", "Warning"); }

}

catch (Exception) {

throw new ApplicationException("Failed loading image"); }

}

//tombol clear untuk menghapus objek void Button6Click(object sender, EventArgs e) {

pictureBox1.Image = null; pictureBox2.Image = null; pictureBox3.Image = null;

(4)

textBox3.Text="";

textBox4.Text=""; }

//fungsi untuk memanggil bilangan gaussian pada Gaussian noise private double getGaussianNumber()

{

Random rnd = new Random(); double v1, v2, persegi; if (bitdeviasi)

{

bitdeviasi = false; return Deviasi * 1; }

do {

v1 = 2 * rnd.NextDouble() - 1; v2 = 2 * rnd.NextDouble() - 1; persegi = v1 * v1 + v2 * v2;

}

while (persegi >= 1 || persegi == 0);

var kutup = Math.Sqrt(-2 * Math.Log(persegi) / persegi);

Deviasi = v2 * kutup; bitdeviasi = true;

return v1 * kutup; }

//tombol radio button untuk memilih Gaussian noise void RadioButton1CheckedChanged(object sender, EventArgs e) {

if(radioButton1.Checked) {

Bitmap citraasli = new Bitmap(pictureBox1.Image); int x = citraasli.Width;

int y = citraasli.Height; Bitmap citrahasil = citraasli; if ((comboBox1.Text) == "10%") proba = 10;

else if ((comboBox1.Text) == "20%") proba = 20;

else if ((comboBox1.Text) == "30%") proba = 30;

else if ((comboBox1.Text) == "40%") proba = 40;

else if ((comboBox1.Text) == "50%") proba = 50;

double gaussnumber = 0.0;

int step, newpixel, PixelSize = x * y; BitmapData bmpData = null;

byte[] Pixels;

Random rnd = new Random();

(5)

int Depth = System.Drawing.Bitmap.GetPixelFormatSize (citraasli.PixelFormat);

step = Depth / 8;

bmpData = citraasli.LockBits(box, ImageLockMode.ReadWrite, citraasli.PixelFormat);

Pixels = new byte[PixelSize * step]; point = bmpData.Scan0;

Marshal.Copy(point, Pixels, 0, Pixels.Length);

for (int i = 0; i < Pixels.Length; i += step) {

if (i < Pixels.Length - step) {

for (int j = 0; j < step; j++) {

gaussnumber = getGaussianNumber();

newpixel = Convert.ToInt32(gaussnumber * proba) + Convert.ToInt32(Pixels[i + j]);

if (newpixel < 0) newpixel = 0; if (newpixel > 255) newpixel = 255;

Pixels[i + j] = Convert.ToByte(newpixel); }

} }

Marshal.Copy(Pixels, 0, point, Pixels.Length); citraasli.UnlockBits(bmpData);

pictureBox2.Image=citraasli; pictureBox3.Image=citraasli;

} }

//tombol radio button untuk memilih Salt and Pepper noise void RadioButton2CheckedChanged(object sender, EventArgs e) {

if(radioButton2.Checked) {

Bitmap citraasli = new Bitmap(pictureBox1.Image); int x = citraasli.Width;

int y = citraasli.Height; Bitmap citrahasil = citraasli; if ((comboBox1.Text) == "10%") proba = Convert.ToInt32(0.1*x*y); else if ((comboBox1.Text) == "20%") proba = Convert.ToInt32(0.2*x*y); else if ((comboBox1.Text) == "30%") proba = Convert.ToInt32(0.3*x*y); else if ((comboBox1.Text) == "40%") proba = Convert.ToInt32(0.4*x*y); else if ((comboBox1.Text) == "50%") proba = Convert.ToInt32(0.5*x*y); int x1,y1,val;

Random rnd = new Random();

(6)

{

x1 = rnd.Next(0,x-1); y1 = rnd.Next(0,y-1); val = rnd.Next(1,10); if (val <= 5)

{

citrahasil.SetPixel(x1,y1,Color.FromArgb(255,0,0,0)); }

else {

citrahasil.SetPixel(x1,y1,Color.FromArgb(255,255,255,255)); }

}

pictureBox2.Image=citraasli; pictureBox3.Image=citrahasil; }

}

//tombol save untuk menyimpan image noise void Button2Click(object sender, EventArgs e) {

if (pictureBox2.Image != null) {

SaveFileDialog simpan = new SaveFileDialog(); simpan.Filter = "Image Files|*.bmp";

simpan.FileName = "*.bmp";

if (simpan.ShowDialog() == DialogResult.OK) {

pictureBox2.Image.Save(simpan.FileName, System.Drawing.Imaging.Ima geFormat.Bmp);

string filename=simpan.FileName.Substring(0,simpan.FileName.Length - 4) + ".txt";

FileStream fstream=new FileStream(filename,FileMode.OpenOrCreate); StreamWriter sw = new StreamWriter(fstream);

SeekOrigin seekorigin = new SeekOrigin(); sw.BaseStream.Seek(0, seekorigin);

string jenis="";

if(radioButton1.Checked==true){ jenis=radioButton1.Text; }if(radioButton2.Checked==true){ jenis=radioButton2.Text; }

sw.WriteLine(jenis + "/" + comboBox1.Text); sw.Flush();

sw.Close();

MessageBox.Show("Image Noise Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Information); }

} else {

(7)

}

//fungsi deteksi tepi Laplacian of Gaussian private Bitmap LoG12x12(Bitmap SrcImage) {

double[,] MASK = new double[12, 12] {

{-0.000699762,-0.000817119,-0.000899703,-0.000929447, -0.000917118,-0.000896245,-0.000896245,-0.000917118, -0.000929447,-0.000899703,-0.000817119,-0.000699762},

{-0.000817119,-0.000914231,-0.000917118,-0.000813449, -0.000655442,-0.000538547,-0.000538547,-0.000655442, -0.000813449,-0.000917118,-0.000914231,-0.000817119},

{-0.000899703,-0.000917118,-0.000745635,-0.000389918, -0.0000268,0.000309618,0.000309618,0.0000268, -0.000389918,-0.000745635,-0.000917118,-0.000899703},

{-0.000929447,-0.000813449,-0.000389918, 0.000309618, 0.001069552, 0.00156934, 0.00156934, 0.001069552, 0.000309618,-0.000389918,-0.000813449,-0.000929447},

{-0.000917118,0.000655442, 0.0000268, 0.001069552, 0.002167033, 0.002878738, 0.002878738, 0.002167033, 0.001069552, 0.0000268, -0.000655442, -0.000917118},

{-0.000896245,-0.000538547, 0.000309618, 0.00156934, 0.002878738, 0.003722998, 0.003722998, 0.002878738, 0.00156934, 0.000309618, -0.000538547,-0.000896245},

{-0.000896245, 0.000538547, 0.000309618, 0.00156934, 0.002878738, 0.003722998, 0.003722998, 0.002878738, 0.00156934, 0.000309618, -0.000538547,-0.000896245},

{-0.000917118,-0.000655442, 0.0000268,0.001069552, 0.002167033,0.002878738,0.002878738,0.002167033, 0.001069552, 0.0000268,-0.000655442,-0.000917118},

{-0.000929447, -0.000813449, -0.000389918, 0.000309618, 0.001069552, 0.00156934, 0.00156934, 0.001069552, 0.000309618, -0.000389918, -0.000813449, -0.000929447},

{-0.000899703, -0.000917118, -0.000745635,-0.000389918, 0.0000268, 0.000309618, 0.000309618, 0.0000268,

-0.000389918, -0.000745635, -0.000917118, -0.000899703},

{-0.000817119, -0.000914231, -0.000917118,-0.000813449, -0.000655442, -0.000538547, -0.000538547,-0.000655442, -0.000813449, -0.000917118, -0.000914231,-0.000817119},

(8)

-0.000929447, -0.000899703, -0.000817119,-0.000699762} };

double nTemp = 0.0; double c = 0;

int mdl, size; size = 12; mdl = size/2; double min, max; min = max = 0.0;

double sum = 0.0; double mean; double d = 0.0; double s = 0.0; int n = 0;

Bitmap bitmap = new Bitmap (SrcImage.Width+mdl,SrcImage.Height+mdl); int l, k;

BitmapData bitmapData = bitmap.LockBits (new Rectangle(0,0,

bitmap.Width,bitmap.Height),ImageLockMode.ReadWrite,PixelFormat.Format24 bppRgb);

BitmapData srcData = SrcImage.LockBits(new Rectangle(0,0,SrcImage.Width, SrcImage.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

unsafe {

int offset = 3;

for (int colm = 0; colm < srcData.Height - size; colm++) {

byte* ptr = (byte*)srcData.Scan0+(colm*srcData.Stride);

byte* bitmapPtr = (byte*)bitmapData.Scan0+(colm*bitmapData.Stride);

for (int row = 0; row < srcData.Width - size; row++) {

nTemp = 0.0;

min = double.MaxValue; max = double.MinValue;

for (k = 0; k < size; k++) {

for (l = 0; l < size; l++) {

byte* tempPtr = (byte*)srcData.Scan0+((colm+l)*srcData.Stride); c=(tempPtr[((row + k)*offset)]+tempPtr[((row + k) *offset) + 1] + tempPtr[((row + k) * offset) + 2]) / 3;

nTemp += (double)c * MASK[k, l];

(9)

sum += nTemp; n++;

} }

mean = ((double)sum / n); d = 0.0;

for (int i = 0; i < srcData.Height - size; i++) {

byte* ptr=(byte*)srcData.Scan0+(i*srcData.Stride);

byte* tptr=(byte*)bitmapData.Scan0+(i*bitmapData.Stride);

for (int j = 0; j < srcData.Width - size; j++) {

nTemp = 0.0;

min = double.MaxValue; max = double.MinValue;

for (k = 0; k < size; k++) {

for (l = 0; l < size; l++) {

byte* tempPtr = (byte*) srcData.Scan0 + ((i + l)*srcData.Stride); c = (tempPtr[((j + k) * offset)]+tempPtr[((j + k)*offset)+ 1] + tempPtr[((j + k) * offset) + 2]) / 3;

nTemp += (double)c * MASK[k, l];

} }

s = (mean - nTemp); d += (s * s);

} }

d = d / (n - 1); d = Math.Sqrt(d); d = d * 2;

for (int colm = mdl; colm < srcData.Height - mdl; colm++) {

byte* ptr = (byte*)srcData.Scan0 + (colm * srcData.Stride);

byte* bitmapPtr =(byte*)bitmapData.Scan0 + (colm*bitmapData.Stride);

for (int row = mdl; row < srcData.Width - mdl; row++) {

nTemp = 0.0;

min = double.MaxValue; max = double.MinValue;

for (k = (mdl * -1); k < mdl; k++) {

(10)

{

byte* tempPtr = (byte*)srcData.Scan0+((colm +l)*srcData.Stride); c= (tempPtr[((row + k)*offset)]+tempPtr[((row+k)*offset)+ 1] + tempPtr[((row + k) * offset) + 2]) / 3;

nTemp += (double)c * MASK[mdl + k, mdl + l];

} }

if (nTemp > d) {

bitmapPtr[row * offset] = bitmapPtr[row * offset + 1] = bitmapPtr[row * offset + 2 = 255;

} else

bitmapPtr[row * offset] = bitmapPtr[row * offset + 1] = bitmapPtr[row * offset + 2] = 0;

} } }

bitmap.UnlockBits(bitmapData); SrcImage.UnlockBits(srcData);

return bitmap; }

//tombol radio button untuk memilih operator deteksi tepi Laplacian of Gaussian

void RadioButton3CheckedChanged(object sender, EventArgs e) {

Stopwatch sw = new Stopwatch(); sw.Start();

Bitmap citraasli = new Bitmap(pictureBox2.Image); pictureBox3.Image = LoG12x12(citraasli);

sw.Stop();

runtime = Math.Round(Convert.ToDouble(sw.ElapsedMilliseconds)/1000,4); }

//fungsi untuk High Boost filtering private double HighBoost(int x, int y) {

double Hasil = 0; int row = x; int col = y;

for (int i = 0; i < 3; i++) {

col = y;

for (int j = 0; j < 3; j++) {

Hasil += pixelImage[row, col] * tapisHighBoost[i, j]; col++;

(11)

row++; }

double HighBoost = ((A-1)* pixelImage[x, y]) + Hasil; //MessageBox.Show(pixelImage[x,y].ToString());

return HighBoost; }

//tombol radio button untuk memilih operator deteksi tepi Laplacian of Gaussian kombinasi High Boost filtering

void RadioButton5CheckedChanged(object sender, EventArgs e) {

//Tentukan Tapishighboost if(radioButton5.Checked) {

try {

A= Convert.ToDouble(textBox1.Text); if ( A <= 2)

{

Stopwatch sw = new Stopwatch(); sw.Start();

w = (9 * A) - 1;

tapisHighBoost = new double[3, 3] { {-1,-1,-1}, {-1, w,-1}, {-1,-1,-1}};

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

tapisHighBoost[i, j] = (1.0 / 9.0) * tapisHighBoost[i, j]; }

}

//proses filtering

Bitmap image = new Bitmap(pictureBox2.Image);

Bitmap output = new Bitmap(image.Width, image.Height); int pixel;

pixelImage = new int[image.Height, image.Width]; for (int i = 0; i < image.Height; i++)

{

for (int j = 0; j < image.Width; j++) {

pixelImage[i, j] = image.GetPixel(j, i).R; }

}

for (int i = 0; i < image.Height - 2; i++) {

for (int j = 0; j < image.Width - 2; j++) {

pixel = Convert.ToInt32(HighBoost(i, j)); if (pixel < 0)

pixel *= -1; if (pixel > 255) pixel = 255;

(12)

pixel, pixel)); }

}

pictureBox3.Image = LoG12x12(output); sw.Stop();

runtime = Math.Round(Convert.ToDouble(sw.ElapsedMilliseconds)/1000,4); }

else {

MessageBox.Show("Nilai A harus <=2"); }

}

catch (Exception) {

MessageBox.Show("Nilai A harus diisi"); }

} }

//fungsi menghitung nilai MSE

private double hitungMSE(Bitmap imageAsli, Bitmap imageHasil) {

double sum = 0;

double pxAsli, pxHasil, MSE;

for (int i = 0; i < imageAsli.Height; i++) {

for (int j = 0; j < imageAsli.Width; j++) {

pxAsli = imageAsli.GetPixel(j, i).R; pxHasil = imageHasil.GetPixel(j, i).R; sum += Math.Pow(pxAsli - pxHasil, 2); }

}

MSE = sum / (imageAsli.Height * imageAsli.Width); return MSE;

}

//fungsi menghitung nilai PSNR

private double hitungPSNR(double MSE) {

double PSNR = Math.Log10(Math.Pow(255, 2) / MSE); return PSNR;

}

//tombol untuk menampilkan nilai MSE,PSNR dan running time void Button3Click(object sender, EventArgs e)

{

double MSE = hitungMSE((Bitmap)pictureBox1.Image,(Bitmap) pictureBox3.Image);

double PSNR = hitungPSNR(MSE);

textBox2.Text = Math.Round(Convert.ToDecimal(MSE.ToString()), 4) .ToString();

textBox3.Text = Math.Round(Convert.ToDecimal(PSNR.ToString()),4) .ToString();

(13)

} } }

//tombol untuk menyimpan image hasil deteksi tepi void Button4Click(object sender, EventArgs e) {

if (pictureBox3.Image != null) {

SaveFileDialog simpan = new SaveFileDialog(); simpan.Filter = "Image Files|*.bmp";

simpan.FileName = "*.bmp";

if (simpan.ShowDialog() == DialogResult.OK) {

pictureBox3.Image.Save(simpan.FileName, System.Drawi ng.Imaging.ImageFormat.Bmp);

string jenis="";

if(radioButton3.Checked==true){ jenis="log";

}if(radioButton5.Checked==true){ jenis="hog";

}

swi.Write("?" + jenis + "?"+ simpan.FileName + "?" + textBox2.Text + "?" + textBox3.Text + "?" + textBox4.Text);

swi.Flush();

MessageBox.Show("Image Deteksi Tepi Telah

Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Information); }

} else {

MessageBox.Show("Image Deteksi Tepi Tidak Ada"); }

}

//tombol untuk menghapus semua data yang telah di proses void Button5Click(object sender, EventArgs e)

{

pictureBox1.Image = null; pictureBox2.Image = null; pictureBox3.Image = null; radioButton1.Checked = false; radioButton2.Checked = false; textBox2.Text = "";

(14)

3.

Form Hasil

using System;

using System.Drawing;

using System.Windows.Forms; using System.IO;

namespace Program_Skripsi {

public partial class FormHasil : Form {

public FormHasil() {

InitializeComponent(); }

// menu untuk menuju form home

void HomeToolStripMenuItemClick(object sender, EventArgs e) {

MainForm f2 = new MainForm(); f2.ShowDialog();

this.Dispose(); }

//menu untuk menuju form pengujian

void PengujianToolStripMenuItemClick(object sender, EventArgs e)

{

FormPengujian f2 = new FormPengujian(); f2.ShowDialog();

this.Dispose(); }

//menu untuk menuju form help

void HelpToolStripMenuItemClick(object sender, EventArgs e) {

FormHelp f2 = new FormHelp(); f2.ShowDialog();

this.Dispose(); }

//menu untuk menuju form about

void AboutToolStripMenuItemClick(object sender, EventArgs e) {

FormAbout f2 = new FormAbout(); f2.ShowDialog();

this.Dispose(); }

(15)

void ExitToolStripMenuItemClick(object sender, EventArgs e) {

if (MessageBox.Show("Keluar Aplilkasi?","Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

Application.Exit(); }

//tombol untuk membuka file citra asli void Button1Click(object sender, EventArgs e) {

try {

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Image Files(*.bmp)|*.bmp|All Files(*.*)|*.*"; if (open.ShowDialog() == DialogResult.OK)

{

Bitmap bit = new Bitmap(open.FileName); pictureBox1.Image = bit;

long fileSize = new System.IO.FileInfo(open.FileName).Length; if (fileSize / 1000 < 1)

{

textBox2.Text = fileSize.ToString(); label6.Text = "Byte";

} else {

textBox2.Text = (fileSize / 1000).ToString(); label12.Text = "Kb";

}

string pixel = "";

for (int i = 0; i < 5; i++) {

for (int j = 0; j < 5; j++) {

pixel += bit.GetPixel(j, i).R + " "; }

pixel += "\r\n"; }

// location.Text = Path.GetFullPath(open.FileName); textBox1.Text = Path.GetFileName(open.FileName); // height.Text = bit.Height.ToString();

// width.Text = bit.Width.ToString(); }

}

(16)

throw new ApplicationException("Failed loading image"); }

}

//tombol untuk membuka file citra noise dan hasil deteksi tepi

void Button2Click(object sender, EventArgs e) {

try {

OpenFileDialog open = new OpenFileDialog();

open.Filter = "Image Files(*.bmp)|*.bmp|All Files(*.*)|*.*"; if (open.ShowDialog() == DialogResult.OK)

{

Bitmap bit = new Bitmap(open.FileName); pictureBox2.Image = bit;

string nama = open.FileName.Substring(0, open.FileName.Length- 4) + ".txt";

FileStream fstream = new FileStream(nama, FileMode.Open, FileAccess.ReadWrite);

StreamReader sreader = new StreamReader(fstream); sreader.BaseStream.Seek(0, SeekOrigin.Begin); string Keterangan = sreader.ReadToEnd(); sreader.Close();

string[] info = new string[2]; info = Keterangan.Split('?'); textBox3.Text = info[0]; textBox4.Text = info[1]; if (info[2] == "log") {

pictureBox4.ImageLocation=@info[3]; textBox5.Text= info[4];

textBox6.Text= info[5]; textBox7.Text= info[6]; }

else {

pictureBox3.ImageLocation=@info[3]; textBox11.Text= info[4];

textBox12.Text= info[5]; textBox13.Text= info[6]; }

if (info[7] == "hog") {

pictureBox3.ImageLocation=@info[8]; textBox11.Text= info[9];

textBox12.Text= info[10]; textBox13.Text= info[11]; }

else {

pictureBox3.ImageLocation=@info[8]; textBox5.Text= info[9];

(17)

}

} }

catch (Exception ex) {

MessageBox.Show(ex.Message); }

}

//tombol untuk menghapus semua informasi data void Button5Click(object sender, EventArgs e) {

pictureBox1.Image = null; pictureBox2.Image = null; pictureBox3.Image = null; pictureBox4.Image = null; textBox1.Text = "";

textBox2.Text = ""; textBox3.Text = ""; textBox4.Text = ""; textBox5.Text = ""; textBox6.Text = ""; textBox7.Text = ""; textBox11.Text = ""; textBox12.Text = ""; textBox13.Text = ""; }

} }

4.

Form Help

using System;

using System.Drawing;

using System.Windows.Forms;

namespace Program_Skripsi {

public partial class FormHelp : Form {

public FormHelp() {

InitializeComponent();

}

//menu untuk menuju form home

void HomeToolStripMenuItemClick(object sender, EventArgs e) {

MainForm f2 = new MainForm(); f2.ShowDialog();

(18)

}

//menu untuk menuju form pengujian

void PengujianToolStripMenuItemClick(object sender, EventArgs e)

{

FormPengujian f2 = new FormPengujian(); f2.ShowDialog();

this.Dispose(); }

//menu untuk menuju form hasil

void HasilToolStripMenuItemClick(object sender, EventArgs e) {

FormHasil f2 = new FormHasil(); f2.ShowDialog();

this.Dispose(); }

//menu untuk menuju form about

void AboutToolStripMenuItemClick(object sender, EventArgs e) {

FormAbout f2 = new FormAbout(); f2.ShowDialog();

this.Dispose(); }

//menu untuk keluar dari aplikasi

void ExitToolStripMenuItemClick(object sender, EventArgs e) {

if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

Application.Exit(); }

} }

5.

Form About

using System;

using System.Drawing;

using System.Windows.Forms;

namespace Program_Skripsi {

public partial class FormAbout : Form {

public FormAbout() {

InitializeComponent(); }

(19)

//menu untuk menuju form home

void HomeToolStripMenuItemClick(object sender, EventArgs e) {

MainForm f2 = new MainForm(); f2.ShowDialog();

this.Dispose(); }

//menu untuk menuju form pengujian

void PengujianToolStripMenuItemClick(object sender, EventArgs e)

{

FormPengujian f2 = new FormPengujian(); f2.ShowDialog();

this.Dispose(); }

//menu untuk menuju form hasil

void HasilToolStripMenuItemClick(object sender, EventArgs e) {

FormHasil f2 = new FormHasil(); f2.ShowDialog();

this.Dispose(); }

//menu untuk menuju form help

void HelpToolStripMenuItemClick(object sender, EventArgs e) {

FormHelp f2 = new FormHelp(); f2.ShowDialog();

this.Dispose(); }

void ExitToolStripMenuItemClick(object sender, EventArgs e) {

if (MessageBox.Show("Keluar Aplilkasi?", "Keluar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)

Application.Exit(); }

(20)

CURRICULUM VITAE

DATA PRIBADI

Nama Lengkap

: Ruth Meylina Manik

Jenis Kelamin

: Perempuan

Tempat, Tanggal Lahir

: Lhokseumawe, 16 mei 1994

Alamat

: Jl. Abdul Hakim Prm.Medaline Setiabudi Blok B no.6

Alamat Orangtua

: Jl.Perwira no.47 Pematangsiantar

Agama

: Kristen

E-mail

: [email protected]

Pendidikan Terakhir

: Universitas Sumatera Utara Medan, Fakultas Ilmu Komputer dan

Teknologi Informasi Jurusan S1 Ilmu Komputer

PENDIDIKAN FORMAL

2011 – 2015

: S1 Ilmu Komputer Universitas Sumatera Utara, Medan

2008 – 2011

: SMA Negeri 2 Pematangsiantar

2005 – 2008

: SMP Negeri 1 Pematangsiantar

1999 – 2005

: SD Swasta RK no.6 Pematangsiantar

PENGALAMAN ORGANISASI DAN KEGIATAN ILMIAH

§

Anggota Departemen Komunikasi dan Informasi Ikatan Mahasiswa S1 Ilmu Komputer

(IMILKOM), 2013-2014

§

Kepala Biro Kesekretariatan dan Administrasi Ikatan Mahasiswa S1 Ilmu Komputer

(IMILKOM), 2013-2014

§

Koordinator Kerohanian Komunitas Mahasiswa Kristen S1 Ilmu Komputer (KMKI),

2013-2014

Referensi

Dokumen terkait

Tujuan dari penelitian ini adalah membangun aplikasi untuk melakukan perbandingan deteksi tepi dengan metode Canny, Robert dan Laplacian of Gaussian pada hasil citra yang

digital yang sering digunakan adalah citra biner, citra grayscale dan citra warna.. 2.2.1.1

Halaman Tabel 3.1 Naratif Use Case Input Citra 20 Tabel 3.2 Naratif Use Case Deteksi Canny 21 Tabel 3.3 Naratif Use Case Deteksi Robert 22 Tabel 3.4 Naratif Use Case