LISTING PROGRAM. Kode Program Menu Utama:

dokumen-dokumen yang mirip
LISTING PROGRAM. namespace NTRUEOF { public class parameterenkripsi { public static readonly parameterenkripsi parameterenkripsi(401, 2048, 113, 60);

LISTING PROGRAM. private void pemecahankuncibutton_click(object sender, EventArgs e) { PemecahanForm form = new PemecahanForm(); form.

LISTING PROGRAM. using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms;

TUGAS POLA-POLA PERANCANGAN SISTEM INFORMASI PERSEWAAN VCD DAN DVD. Dengan Design pattern (Factory Method)

LAMPIRAN I LISTING PROGRAM

APLIKASI MENGELOLA DATA ACCESS LOG MENGGUNAKAN C# Melihat LOG berdasar Hari, Jam, dan URL Terbanyak diakses

CHAPTER #7 APLIKASI WINDOWS FORM 2 (KONTROL- KONTROL TINGKAT LANJUT)

LAMPIRAN L.1. Lampiran 1 Coding Inisialisasi Program

LAMPIRAN LISTING PROGRAM

LISTING PROGRAM. Private Sub MDIParent1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Jeffrey Hermanto Halimsetiawan tutorialpemrograman.wordpress.com 22 Maret 2009

LAMPIRAN 1. namespace TS_Eka { public partial class MainForm : Form { public MainForm() { InitializeComponent(); }

LAMPIRAN. 2. Berapa penghasilan yang anda terima per bulan? 3. Apakah anda sering menggunakan kendaraan pribadi anda?

BAB III PERANCANGAN ALAT

Pemrograman Visual. Ramos Somya

BAB III METODE PENELITIAN

LISTING PROGRAM. System.IO.File.WriteAllText(direktoriawal + "/Pengirim/" + filename,

Kriptografi Visual dengan Plain Partition dan Skema (n-1,n)

DAFTAR PUSTAKA DESAIN BALOK LENTUR DENGAN GRAPHICAL USER INTERFACE (GUI) DALAM PERANGKAT PENGEMBANG PEMROGRAMAN DAFTAR PUSTAKA

Praktikum Pengolahan Citra - Pertemuan 1

Aplikasi Transformasi Base 64 pada Kriptografi

LAMPIRAN 1. Kuesioner Rating Kebutuhan Aplikasi Telepon Genggam

LISTING PROGRAM. // // TODO: Add constructor code after the InitializeComponent() call. // }

Manipulasi Gambar dengan Efek yang keren

Manipulasi Gambar dengan Efek yang keren

Praktikum Pengolahan Citra - Pertemuan 1.2

Lampiran A-1 : Listing Program Main Form

LISTING PROGRAM. Public m, n, i, j, result1, cocok1, mpnext(0 To 255) As Integer

LAMPIRAN 1 SISTEM PENDUKUNG KEPUTUSAN..., DIMAS ANGGIT WIJIATMOKO, F.TEKNIK UMP,2017

Array Multidimensi. Pemrograman Dasar. Java

Implementasi Kelas BitArray Untuk Penyelesaian Bilangan Prima Kustanto 1)

Tugas II II5166 (Keamanan Informasi Lanjut)

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

LAMPIRAN. Dim WithEvents diagnosa As New DB_MYSQL Dim sql = "select * from gejala order by kode asc"

BAB IV IMPLEMENTASI. 4.1 Lingkungan Implementasi. 4.2 Perangkat Keras Yang Digunakan. 4.3 Perangkat Lunak

Membuat Webservice Pada Visual Studio 2012 (C#.NET ver.4.5)

LISTING PROGRAM. public static BigInteger gcd(biginteger m, BigInteger n){ BigInteger r = m % n; while (r!= 0){ return gcd(n,r); } return n; }

LAMPIRAN. Kelompok kami melakukan teknik wawancara sebanyak dua kali, di awal masa

BAB 4 PROTOKOL TCP UDP - REMOTE

Kombinasi antara Cipher Subtitusi, Cipher Transposisi,dan Playfair Cipher sebagai landasan algoritma enkripsi baru

ANALISIS METODE PREPROCESSING PADA CITRA MAMMOGRAM. Skripsi Untuk memenuhi persyaratan mencapai derajat Sarjana S-1 Program Studi Teknik Informatika

LAMPIRAN LISTING PROGRAM

Writting Procedure and Function

BAB IV ANALISA DAN PERANCANGAN

Mengenal LINQ Pada Framework Microsoft.NET (dan Class List)

Bab 4 Hasil dan Pembahasan

BAB III ANALISIS DAN PERANCANGAN

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

Badiyanto, S.Kom., M.Kom. PBO java

PENGOLAHAN CITRA Ch.3 M E N G O L A H C I T R A M E N J A D I G R A Y S C A L E Bayu Pratama RN [ ]

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN

Bab 4 Hasil dan Pembahasan

LISTING PROGRAM. Program animasi Frame by Frame dalam bahasa pemrograman Java

BAB IV HASIL DAN ANALISIS

Bab 1 Membaca & Menyimpan File Gambar

MODUL 9 Material Texture

PERANCANGAN PROGRAM APLIKASI DETEKSI IRIS MATA UNTUK ABSENSI KARYAWAN MENGGUNAKAN METODE GABOR WAVELET

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

LAMPIRAN. CostumerID CustomerName Address Destination 1 AWANA, CV SELATAN PASAR PRAMBANAN JL. NURI NO.30 KLURAK BARU 2 AGRINDO JAVA, CV

MODUL 2 IP ADDRESS SOCKET

BAB 3 SYSTEM AKSES WINDOWS

PENGOLAHAN CITRA Ch.4 M E N G O L A H C I T R A M E N J A D I N E G A T I V E Bayu Pratama RN [ ]

LAMPIRAN A : LISTING PROGRAM

BAB IV HASIL DAN PEMBAHASAN

WEB SERVICE SECURITY April 2010 Tingkat: Oleh : Feri Djuandi Pemula Menengah Mahir Platform :.NET 2.0, Ms IIS

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

BAB II VARIABEL DAN TIPE DATA

Bab Hasil Pembuatan Aplikasi

PENDAHULUAN. A. Membuat Database dalam SQL SERVER. 1. Klik Kanan pada databases lalu pilih new database

BAB IV IMPLEMENTASI DAN PENGUJIAN

2 TIPE DATA DAN VARIABEL

ANALISIS PERBANDINGAN GEOMETRIC MEAN FILTER DENGAN OPERATOR SOBEL, OPERATOR PREWITT DAN OPERATOR ROBERT PADA CITRA BITMAP SKRIPSI

SISTEM TERDISTRIBUSI PERTEMUAN IV ASP.NET WEB SERVICE (1)

PEMROGRAMAN VISUAL BASIC

Gambar 5.1 Hierarki Sistem Admin

Pengenalan JavaScript

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

Baca Tulis File. Untuk dapat membaca atau menulis data dari/ke sebuah file maka langkah yang perlu dilakukan adalah:

Konsep Lanjut Pemrograman Objek

L 1. Lampiran 1 Coding frmmain.cs

APLIKASI WEB SERVER BERBASIS BAHASA C SHARP

SISTEM INFORMASI DATA SISWA

STRUKTUR DATA POKOK BAHASAN - 7 STACK ( TUMPUKAN )

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

Pemrograman Berorientasi Obyek. Exception Handling. Politeknik Elektronika Negeri Surabaya

Bab 4 Hasil dan Pembahasan

Pertemuan 4 Array pada Java

Lampiran 1. Gambar Piktorial Mesin Pemupuk Dosis Variabel

M. Choirul Amri.

Transkripsi:

105 LISTING PROGRAM Kode Program Menu Utama: using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Linq; using System.ComponentModel; using System.Text; namespace projek public partial class MainForm : Form public MainForm() Windows Forms designer support. InitializeComponent() call. void DdfToolStripMenuItem_Click(object sender, EventArgs e) void LinkLabel1_LinkClicked(object sender, LinkLabelLinkCli ckedeventargs e) void LinkLabel4_LinkClicked(object sender,linklabellinkclick edeventargs e)

106 void ContextMenuStrip1_Opening(object sender,system.componen tmodel.canceleventargs e) void MenuStrip1_ItemClicked(object sender,toolstripitemclick edeventargs e) void BANTUANToolStripMenuItem_Click(object sender, EventA rgs e) Form6 frm6 = new Form6(); frm6.showdialog(); void KELUARToolStripMenuItem_Click(object sender, EventArgs e) this.close(); void TENTANGToolStripMenuItem_Click(object sender, EventArgs e) Form5 frm5 = new Form5(); frm5.showdialog(); void DETEKSITEPIToolStripMenuItem_Click(object sender, EventArgs e) Hide(); Form2 frm2 = new Form2(); frm2.showdialog(); e) void HOMEToolStripMenuItem_Click(object sender, EventArgs Hide();

107 MainForm mf = new MainForm(); mf.showdialog(); Kode Program Menu Deteksi Tepi: using System; using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Collections; using System.IO; using System.Runtime.InteropServices; using System.Diagnostics; namespace projek public partial class Form2 : Form public Form2() public double hitungmse(bitmap gambar_asli, Bitmap gambar_hasil) double sum = 0; double r1, r2, g1, g2, b1, b2, MSE; for (int i = 0; i < gambar_asli.height; i++) for (int j = 0; j < gambar_asli.width; j++) r1 = gambar_asli.getpixel(j, i).r; r2 = gambar_asli.getpixel(j, i).r; sum += Math.Pow(r1 - r2, 2);

108 g1 = gambar_asli.getpixel(j, i).g; g2 = gambar_hasil.getpixel(j, i).g; sum += Math.Pow(g1 - g2, 2); b1 = gambar_asli.getpixel(j, i).b; b2 = gambar_hasil.getpixel(j, i).b; sum += Math.Pow(b1 - b2, 2); MSE = sum / (gambar_asli.height * gambar_asli.width); return MSE; public double hitungpsnr(double MSE) double PSNR = Math.Log10(Math.Pow(255, 2) / MSE); return PSNR; private ArrayList konvolusi(int xpos, int ypos, Bitmap bitmap) // inisialisasi variabel untuk menampung nilai ArrayList neighbourslist = new ArrayList(); int xstart, xfinish, ystart, yfinish; int pixel; // menentukan posisi awal dan akhir koordinat dalam // ukuran mask 3 x 3 xstart = xpos - 1; xfinish = xpos + 1; ystart = ypos - 1; yfinish = ypos + 1; // loop sejumlah 3 x 3 perluasan pixel tetangga for (int y = ystart; y <= yfinish; y++) for (int x = xstart; x <= xfinish; x++) // kondisi IF.. ELSE.. untuk mendaftarkan

109 anggota tetangga // bila posisi x dan y tidak valid maka isi list dengan 0 // tidak valid : nilai negatif atau lebih dari batas citra if (x < 0 y < 0 x > (bitmap.width - 1) y > (bitmap.height - 1)) // menambahkan data ke list dengan nilai 0 // 0D : artinya nilai 0 dengan tipe double (D) neighbourslist.add(0); else // menampung nilai pixel pada titik (x,y) pada variabel pixel pixel = bitmap.getpixel(x, y).r; pixel // menambahkan data ke list dengan nilai neighbourslist.add(pixel); // nilai kembalian berupa array list return konvolusi; private int getgradienvalue(arraylist neighbourslist, String masktype) // sobel X : mask dari sobel X // sobel Y : mask dari sobel Y int result = 0; int a; a = Convert.ToInt32(Math.Sqrt(2));

110 int[,] sobelx = -1,0,1, -2,0,2, -1,0,1 ; int[,] sobely = 1,2,1, 0,0,0, -1,-2,-1 ; int[,] Frei_ChenX = -1, 0,1, -a,0,a, -1,0,1 ; int[,] Frei_ChenY= 1,a,1, 0,0,0, -1,-a,-1 ; // count : digunakan untuk menunjukkan index pada list int count = 0; // kondisi untuk mask type, bila X maka lakukan sobel X // tetapi jika Y maka lakukan sobel Y if (masktype.equals("sx")) // looping untuk menghitung nilai sobel X pada titik (x,y) for (int y = 0; y < 3; y++) for (int x = 0; x < 3; x++) // perhitungan sobel X result += sobelx[x, y] * Convert.ToInt16(neighboursList[count])); // increment count yang digunakan untuk index neighbourslist count++; else if (masktype.equals("sy")) // looping untuk menghitung nilai sobel Y pada titik (x,y) for (int y = 0; y < 3; y++) for (int x = 0; x < 3; x++) // perhitungan sobel Y result+=(sobely[x, y] * Convert.ToInt16(neighboursList[count])); // increment count yang digunakan untuk index neighbourslist count++; else if (masktype.equals("fx"))

111 // looping untuk menghitung nilai sobel Y pada titik (x,y) for (int y = 0; y < 3; y++) for (int x = 0; x < 3; x++) // perhitungan FREI-CHEN X result +=(Frei_ChenX[x, y] * Convert.ToInt16(neighboursList[count])) // increment count yang digunakan untuk index neighbourslist count++; else if (masktype.equals("fy")) // looping untuk menghitung nilai sobel Y pada titik (x,y) for (int y = 0; y < 3; y++) for (int x = 0; x < 3; x++) // perhitungan frei-chen Y result = result + (Frei_ChenY[x, y] * Convert.ToInt16(neighboursList[count ])); // increment count yang digunakan untuk index neighbourslist count++; // nilai kembalian hasil sobel X atau sobel Y pada titik (x,y) pada citra return result; private int getmorfovalue(arraylist neighbourlist, String masktype) int result=0;

112 int maks = 0; int count=0; int min = 255; if (masktype.equals("d")) for (int y = 0; y < 3; y++) for (int x = 0; x < 3; x++) result = Convert.ToInt16(neighbourlist[count]); if (maks < result) maks= result; count++; return maks; else if (masktype.equals("e")) for (int y = 0; y < 3; y++) for (int x = 0; x < 3; x++) result = Convert.ToInt16(neighbourlist[count]); if (result < min) min = result; // increment count yang digunakan untuk index neighbourslist count++; return min; void GroupBox2_Enter(object sender, EventArgs e)

113 void SobelToolStripMenuItem_Click(object sender, EventArgs e) Form2 frm2 = new Form2(); frm2.showdialog(); void Button4_Click(object sender, EventArgs e) Bitmap gambar_awal = new Bitmap(pictureBox1.Image); Bitmap gambar = new Bitmap(gambar_awal); Bitmap bitmap = new Bitmap(gambar); Bitmap hasil = new Bitmap(gambar); Stopwatch sw = new Stopwatch(); int result; int count = 0; int resultfx; int resultfy; // inisialisasi array list untuk menampung pixel tetangga ArrayList neighbourslist = new ArrayList(); // mengosongkan list sobel X sw.start(); // nested looping untuk scanline citra secara horizontal for (int y = 0; y < bitmap.height; y++) for (int x = 0; x < bitmap.width; x++) // mengosongkan list neighbourslist.clear(); // menampung list tetangga dengan perluasan 3 x 3 neighbourslist = konvlusi(x, y, bitmap); resultfx = getgradienvalue(neighbourslist,"fx"); resultfy = getgradienvalue(neighbourslist, "fy");

114 result = Convert.ToInt16(Math.Sqrt(Math.Pow(resultFx, 2) + Math.Pow(result Fy, 2))); // kondisi untuk filter nilai harus dalam range 0-255 if (result < 0) result = 0; else if (result > 255) result = 255; // set nilai pixel baru setelah dikenakan sobel mask X pada titik (x,y) hasil.setpixel(x, y, Color.FromArgb(result, r esult, result)); count++; sw.stop(); picturebox3.image=hasil; double MSE = hitungmse(gambar, hasil); textbox6.text= MSE.ToString(); textbox7.text=hitungpsnr(mse).tostring(); textbox8.text=math.round(convert.todecimal(sw.elapsed Milliseconds)/ 1000, 4).ToString(); void Button6_Click(object sender, EventArgs e) if (picturebox2.image!= null) SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "Image Files *.bmp Image Files *.jpg"; simpan.filename = "*.jpg"; if (simpan.showdialog() == DialogResult.OK)

115 m.drawing.imaging.imageformat.jpeg); picturebox2.image.save(simpan.filename, Syste 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); sw.flush(); sw.close(); MessageBox.Show("Citra Hasil Deteksi Tepi Sobel Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Informa tion); else MessageBox.Show("Citra Hasil Deteksi Tepi Belum Ada"); void Button7_Click(object sender, EventArgs e) // TODO: Implement Button7_Click if (picturebox3.image!= null) SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "Image Files *.bmp Image Files *.jpg"; simpan.filename = "*.jpg"; if (simpan.showdialog() == DialogResult.OK)

116 m.drawing.imaging.imageformat.jpeg); picturebox3.image.save(simpan.filename, Syste 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); sw.flush(); sw.close(); MessageBox.Show("Citra Hasil Deteksi Tepi Sobel Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Informa tion); else MessageBox.Show("Citra Hasil Deteksi Tepi Belum Ada"); void Button5_Click(object sender, EventArgs e) Bitmap gambar_awal = new Bitmap(pictureBox1.Image); Bitmap gambar = new Bitmap(gambar_awal); Bitmap bitmap = new Bitmap(gambar); Bitmap hasil = new Bitmap(gambar); Stopwatch sw = new Stopwatch(); int result; int count = 0; int resultdilasi; int resulterosi; // inisialisasi array list untuk menampung pixel

117 tetangga ArrayList neighbourslist = new ArrayList(); // mengosongkan list sobel X sw.start(); // nested looping untuk scanline citra secara horizontal for (int y = 0; y < bitmap.height; y++) for (int x = 0; x < bitmap.width; x++) // mengosongkan list neighbourslist.clear(); // menampung list tetangga dengan perluasan 3 x 3 neighbourslist = konvolusi(x, y, bitmap); resultdilasi = getmorfovalue(neighbourslist,"d"); resulterosi = getmorfovalue(neighbourslist, "E"); result = Convert.ToInt32(resultDilasiresultErosi); // kondisi untuk filter nilai harus dalam range 0-255 if (result < 0) result = 0; else if (result > 255) result = 255; // set nilai pixel baru setelah dikenakan sobel mask X pada titik (x,y) hasil.setpixel(x, y, Color.FromArgb(result, r esult, result)); count++;

118 sw.stop(); picturebox4.image=hasil; double MSE = hitungmse(gambar, hasil); textbox9.text= MSE.ToString(); textbox10.text=hitungpsnr(mse).tostring(); textbox11.text=math.round(convert.todecimal(sw.elapse dmilliseconds)/ 1000, 4).ToString(); void Button8_Click(object sender, EventArgs e) if (picturebox4.image!= null) SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "Image Files *.bmp Image Files *.jpg"; simpan.filename = "*.jpg"; if (simpan.showdialog() == DialogResult.OK) picturebox4.image.save(simpan.filename, Syste m.drawing.imaging.imageformat.jpeg); 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); sw.flush(); sw.close(); MessageBox.Show("Citra Hasil Deteksi Tepi Sobel Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Informa tion);

119 Ada"); else MessageBox.Show("Citra Hasil Deteksi Tepi Belum void Button3_Click(object sender, EventArgs e) Bitmap gambar_awal = new Bitmap(pictureBox1.Image); Bitmap gambar = new Bitmap(gambar_awal); Bitmap bitmap = new Bitmap(gambar); Bitmap hasil = new Bitmap(gambar); Stopwatch sw = new Stopwatch(); int result; int count = 0; int resultsx; int resultsy; // inisialisasi array list untuk menampung pixel tetangga ArrayList neighbourslist = new ArrayList(); // mengosongkan list sw.start(); // nested looping untuk scanline citra secara horizontal for (int y = 0; y < bitmap.height; y++) for (int x = 0; x < bitmap.width; x++) // mengosongkan list neighbourslist.clear(); // menampung list tetangga dengan perluasan 3 x 3 neighbourslist = Konvolusi (x, y, bitmap); resultsx = getgradienvalue(neighbourslist,"sx"); resultsy = getgradienvalue(neighbourslist, "sy");

120 result = Convert.ToInt16(Math.Sqrt(Math.Pow(resultSx, 2) + Math.Pow(result Sy, 2))); // kondisi untuk filter nilai harus dalam range 0-255 if (result < 0) result = 0; else if (result > 255) result = 255; // set nilai pixel baru setelah dikenakan sobel mask X pada titik (x,y) hasil.setpixel(x, y, Color.FromArgb(result, r esult, result)); count++; sw.stop(); picturebox2.image=hasil; double MSE = hitungmse(gambar, hasil); textbox3.text= MSE.ToString(); textbox4.text=hitungpsnr(mse).tostring(); textbox5.text=math.round(convert.todecimal(sw.elapsed Milliseconds)/ 1000, 4).ToString(); gs e) void KeluarToolStripMenuItem_Click(object sender, EventAr Close(); void Button1_Click(object sender, EventArgs e) try

121 OpenFileDialog open = new OpenFileDialog(); open.filter = "Image Files(*.bmp) *.bmp Image Files(*.jpg) *.jpg All Files(*.*) *.*"; if (open.showdialog() == DialogResult.OK) Bitmap gambar = new Bitmap(open.FileName.ToString()); Bitmap gray= new Bitmap(gambar); int rata2=0; for(int y =0; y< gambar.height; y++) for (int x=0; x< gambar.width; x++) rata2=(gambar.getpixel(x, y).r + gambar.getp ixel(x, y).g + gambar.getpixel(x, y).b)/3; gray.setpixel(x, y, Color.FromArgb(rata2,rata 2,rata2)); picturebox1.image= gray; textbox13.text = open.filename.tostring(); textbox2.text = gambar.width.tostring(); textbox12.text = gambar.height.tostring(); long filesize = new System.IO.FileInfo(open.FileName).Length; if (filesize / 1000 < 1) textbox1.text = filesize.tostring(); lblsize.text = "Byte"; else textbox1.text = (filesize / 1000).ToString(); lblsize.text = "Kb";

122 image"); catch (Exception) throw new ApplicationException("Failed loading void DeteksiTepiToolStripMenuItem_Click(object sender, Ev entargs e) Hide(); Form2 frm2 = new Form2(); frm2.showdialog(); void Form2_Load(object sender, EventArgs e) void Button9_Click(object sender, EventArgs e) Bitmap gambar_awal = new Bitmap(pictureBox2.Image); Bitmap gambar_utama= new Bitmap(pictureBox1.Image); Bitmap gambar = new Bitmap(gambar_awal); Bitmap bitmap = new Bitmap(gambar); Bitmap hasil = new Bitmap(gambar); Stopwatch sw = new Stopwatch(); Bitmap gambar2= new Bitmap(gambar); int result; int count = 0; int resultdilasi; int resulterosi; // inisialisasi array list untuk menampung pixel tetangga ArrayList neighbourslist = new ArrayList(); // mengosongkan list

123 sw.start(); // nested looping untuk scanline citra secara horizontal for (int y = 0; y < bitmap.height; y++) for (int x = 0; x < bitmap.width; x++) // mengosongkan list neighbourslist.clear(); // menampung list tetangga dengan perluasan 3 x 3 neighbourslist = Konvolusi(x, y, bitmap); resultdilasi = getmorfovalue(neighbourslist,"d"); resulterosi = getmorfovalue(neighbourslist,"e"); result = Convert.ToInt32(resultDilasiresultErosi); // kondisi untuk filter nilai harus dalam range 0-255 if (result < 0) result = 0; else if (result > 255) result = 255; // set nilai pixel baru setelah dikenakan sobel mask X pada titik (x,y) hasil.setpixel(x, y, Color.FromArgb(result, r esult, result)); count++; sw.stop(); picturebox5.image=hasil; double MSE = hitungmse(gambar_utama,hasil);

124 textbox16.text= MSE.ToString(); textbox15.text=hitungpsnr(mse).tostring(); textbox14.text=math.round(convert.todecimal(sw.elapse dmilliseconds)/ 1000, 4).ToString(); void Button11_Click(object sender, EventArgs e) // TODO: Implement Button11_Click Bitmap gambar_awal = new Bitmap(pictureBox3.Image); Bitmap gambar_utama= new Bitmap(pictureBox1.Image); Bitmap gambar = new Bitmap(gambar_awal); Bitmap bitmap = new Bitmap(gambar); Bitmap hasil = new Bitmap(gambar); Stopwatch sw = new Stopwatch(); Bitmap gambar2= new Bitmap(gambar); int result; int count = 0; int resultdilasi; int resulterosi; // inisialisasi array list untuk menampung pixel tetangga ArrayList neighbourslist = new ArrayList(); // mengosongkan list sw.start(); // nested looping untuk scanline citra secara horizontal for (int y = 0; y < bitmap.height; y++) for (int x = 0; x < bitmap.width; x++) // mengosongkan list neighbourslist.clear(); // menampung list tetangga dengan perluasan 3 x 3 neighbourslist = konvolusi(x, y, bitmap); resultdilasi = getmorfovalue(neighbourslist,"d"); resulterosi

125 = getmorfovalue(neighbourslist,"e"); result = Convert.ToInt32(resultDilasiresultErosi); // kondisi untuk filter nilai harus dalam range 0-255 if (result < 0) result = 0; else if (result > 255) result = 255; // set nilai pixel baru setelah dikenakan sobel mask X pada titik (x,y) hasil.setpixel(x, y, Color.FromArgb(result, r esult, result)); count++; sw.stop(); picturebox6.image=hasil; double MSE = hitungmse(gambar_utama,hasil); textbox19.text= MSE.ToString(); textbox18.text=hitungpsnr(mse).tostring(); textbox17.text=math.round(convert.todecimal(sw.elapse dmilliseconds)/ 1000, 4).ToString(); void Button2_Click(object sender, EventArgs e) if (picturebox5.image!= null) SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "Image Files *.bmp Image Files *.jpg"; simpan.filename = "*.jpg"; if (simpan.showdialog() == DialogResult.OK)

126 m.drawing.imaging.imageformat.jpeg); picturebox3.image.save(simpan.filename, Syste 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); sw.flush(); sw.close(); MessageBox.Show("Citra Hasil Deteksi Tepi Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Informa tion); else MessageBox.Show("Citra Hasil Deteksi Tepi Belum Ada"); void Button10_Click(object sender, EventArgs e) if (picturebox6.image!= null) SaveFileDialog simpan = new SaveFileDialog(); simpan.filter = "Image Files *.bmp Image Files *.jpg"; simpan.filename = "*.jpg"; if (simpan.showdialog() == DialogResult.OK) picturebox3.image.save(simpan.filename, Syste m.drawing.imaging.imageformat.jpeg);

127 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); sw.flush(); sw.close(); MessageBox.Show("Citra Hasil Deteksi Tepi Telah Disimpan", "Simpan", MessageBoxButtons.OK, MessageBoxIcon.Informa tion); else MessageBox.Show("Citra Hasil Deteksi Tepi Belum Ada"); void HomeToolStripMenuItem_Click(object sender, EventArgs e) Hide(); MainForm mf = new MainForm(); mf.showdialog(); void BantuanToolStripMenuItem_Click(object sender, EventA rgs e) Form6 frm6 = new Form6(); frm6.showdialog(); void TentangToolStripMenuItem_Click(object sender, EventA rgs e)

128 Form5 frm5 = new Form5(); frm5.showdialog(); Kode Program Menu Bantuan: using System; using System.Drawing; using System.Windows.Forms; namespace projek public partial class Form6 : Form public Form6() InitializeComponent(); Kode Program Menu Tentang: using System; using System.Drawing; using System.Windows.Forms; namespace projek public partial class Form5 : Form public Form5() InitializeComponent();

129 CURRICULUM VITAE Nama : Khairani Tempat & Tanggal Lahir : Ramunia 12 Agustus 1993 Alamat Sekarang : Jln. Pantai Labu Gang Besi Timur kec. Pantai Labu Alamat Orang Tua : Jln. Pantai Labu Gang Besi Timur kec. Pantai Labu Email : khairanivl@gmail.com Riwayat Pendidikan 2011 2015 : S-1 Ilmu Komputer Universitas Sumatera Utara, Medan 2008 2011 : SMA Negeri1, Lubuk Pakam 2005 2008 : SMP Negeri1, Lubuk Pakam 1999 2005 : SDNegeri 104248, Beringin Keahlian Bahasa : Indonesia, Inggris Bahasa Pemrograman : C#, PHP, Mathlab Database : MSQL Pengalaman Organisasi [2009 2010] PMR 010 SMA Negeri 1 Lubuk Pakam [2012 2014] Sekdiv Dana dan Usaha Ukmi Al-Khuwarizmi Fasilkom-TI USU [2013 2014] AnggotaPEMA Fasilkom-TI USU [2013 2014] Anggota KAM Rabbani Fasilkom-TI USU