• Tidak ada hasil yang ditemukan

Implementasi dan Perbandingan Metode Frei-Chen, Morphologi dan Sobel untuk Deteksi Tepi pada Citra Foto Rontgen Kista Rongga Mulut

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi dan Perbandingan Metode Frei-Chen, Morphologi dan Sobel untuk Deteksi Tepi pada Citra Foto Rontgen Kista Rongga Mulut"

Copied!
131
0
0

Teks penuh

(1)

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)

(2)

}

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();

}

void HOMEToolStripMenuItem_Click(object sender, EventArgs e)

{

(3)

} }

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++) {

(4)

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++) {

(5)

// 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;

// menambahkan data ke list dengan nilai pixel

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;

(6)

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++;

} } }

(7)

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)

{

(8)

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; }

(9)

{

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

(10)

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";

(11)

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";

(12)

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;

(13)

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(resultDilasi-resultErosi);

// 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));

(14)

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);

(15)

Ada");

} }

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

(16)

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();

}

void KeluarToolStripMenuItem_Click(object sender, EventAr gs e)

{

Close(); }

void Button1_Click(object sender, EventArgs e) {

(17)

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();

(18)

{

throw new ApplicationException("Failed loading image");

} }

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

(19)

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(resultDilasi-resultErosi);

// 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;

(20)

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

(21)

// 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";

(22)

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

(23)

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)

(24)

} }

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();

(25)

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

(26)

Barus, O. 2011. Identifikasi Tepi Citra Menggunakan Algoritma Sobel Edge Detection. Skipsi.Universitas Sumatera Utara.

Burger, W. & Burge, M.J.2008. Digital Image Prosessing An Algoritmic Using Java.

Spinger Science + Bisiness Media LLC: NewYork.

Crane, R. 1997. A Simplifield Approach to Image Processing Clasical and Modern Techniques Inc. Prentice Hall PTR: Upper saddle River.

Dixon, A. 2010. Mandibullar Swelling. Radiopedia.org, 21 September 2015 (diakses 21 September 2015).

Donnel, C. 2012. Dentigerous In Left Maxillary Antrum. Radiopedia.org, 21 September 2015 (diakses 21 September 2015).

Fahzuanta,Q.M.P.2010. Analisis Perbandingan Garis Tepi pada Citra Digital antaraMetode Edge Lingking dan Operator Sobel. Skripsi. Universitas Sumatera Utara.

Freisen, B. 2012. Glandular Odontogenic Cyst. Radiopedia.org, 21 September 2015 (diakses 21 September 2015).

Gaillard, F. 2008. Ameloblastoma. Radiopedia.org, 21 September 2015 (diakses 21 September 2015).

Gonzales, R.C. & Woods, R. E. 2002. Digital Image Processing.Prentice Hall. Hacking, C. 2015. Maxillary Dentigerous. Radiopedia.org, 21 September

2015(diakses 21 September 2015).

Hannessy, O. 2015. Ameloblastoma. Radiopedia.org, 21 September 2015 (diakses 21

September 2015).

Isnanto, R.R.2003. Teknik-Teknik Analisis pada Citra Tulang sebagai Alat Bantu Identifikasi Medis. Skripsi. Universitas Diponegoro Semarang.

Kadir, A. 2013. Dasar pengolahan Citra dengan Delphi. Penerbit Andi: Yogyakarta.

(27)

September 2015 (diakses 21 September 2015).

Lestari, Dewi.2006.Analisis dan Implementasi Penghalusan Citra (Image Smooting) pada Citra Digital Menggunakan Metode Uniform Smooting, Gaussian Smooting, dan Threshold. Skripsi. Universitas Komputer Indonesia Bandung.

Munir, Rinaldi. 2004. Pengolahan Citra Digital dengan Pendekatan Algoritmik. Penerbit Informatika : Bandung.

Niknejad, M. T. 2015. Dentigerous. Radiopedia.org, 21 September 2015 (diakses 21

September 2015).

Pratt, K. William., 1991. Digital Image Processing, Secon Edition, Jhon Wiley And

Son : USA

Putra, D. 2010. Pengolahan Citra Digital. Penerbit ANDI: Yogyakarta.

Rabou, A. A. 2014. Ameloblastoma. Radiopedia.org, 21 September 2015 (diakses 21

September 2015).

Shih, F. Y. 2009. Image Prosessing and Mathematical Morphology. CRC Press: New

York.

Surya, A.T. 2009.Gambaran Radiografi Odontogenik Keratokista. Skripsi. Universitas Sumatera Utara.

Sutoyo, T. & Mulyanto, E. 2009.Teori Pengolahan Citra Digital. Penerbit ANDI:Yogyakarta.

(28)

BAB III

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Analisis system merupakan tahapan awal yang dilakukan dalam memahami sebuah sistem. Tahapan ini menjelaskan berbagai permasalahan yang akan membantu proses perancangan model sistem yang nantinya akan diimplementasikan.

3.1.1 Analisis Masalah

Rumusan masalah yang nantinya akan diselesaiakan pada penulisan skripsi ini, yaitu: 1. Bagaimana cara memperjelas tepian citra foto rontgen pada kasus kista rongga

mulut pada level penyakit ringan, sedang dan kronis.

2. Bagaimana perbandingan hasil deteksi tepi citra dengan menggunakan, metode Frei-Chen, Morphologi, Sobel, serta kombinasi metode Sobel dengan Morphologi dan Frei-Chen dengan Morphologi berdasarkan parameternya.

(29)

Material Metode

User Sistem

Citra rontgen dengan format .jpg

Operator Sobel

Operator Frei-Chen

Operator Morphologi

Deteksi Tepi citra

Melakukan pendeteksian tepi citra Menginputkan citra

rontgen

Menggunakan Sistem

Gambar 3.1 Ishikawa Diagram

3.1.2 Analisis Persyaratan

Terdapat dua bagian pada analisis persyaratan, yaitu persyaratan fungsional dan persyaratan non-fungsional.

3.1.2.1 Persyaratan Fungsional

Analisis fungsional disini mendekripsikan tentang sistem yang disediakan. sistem ini mendeteksi tepi pada citra foto rontgen menggunakan metode Frei-Chen, Sobel, dan Morphologi terdapat beberapa persyaratan fungsional antara lain :

1. Format citra merupakan citra Rontgen dengan format JPG yang diubah dalam bentuk grayscale.

2. Ukuran citra maksimum yang digunakan adalah 700 x 700 pixel.

3. Metode yang digunakan untuk mendeteksi tepi citra adalah Frei-Chen, Morphologi, Sobel, kombinasi metode Sobel dan Morphologi, serta kombinasi Frei-Chen dengan Morphologi.

(30)

3.1.2.2 Persyaratan Non-Fungsional

Kebutuhan non-fungsional adalah kebutuhan yang berisi kinerja operasional dan performance dari suatu sistem. Terdapat beberapa persyaratan non-fungsional yang harus dipenuhi diantaranya :

1. Performa

Perangkat lunak yang akan dibangun harus dapat menunjukkan hasil dari proses deteksi tepi pada citra.

2. Mudah digunakan

Sistem yang dibangun harus mudah digunakan (user friendly), artinya sistem ini akan mudah digunakan oleh user dengan tampilan yang sederhana dan dapat dimengerti.

3. Hemat Biaya

Sistem atau perangkat lunak yang digunakan tidak memerlukan perangkat tambahan yang dapat mengeluarkan biaya.

4. Dokumentasi

Sistem yang dibangun harus bisa menyimpan citra hasil proses deteksi tepi pada citra.

5. Kontrol

Sistem yang dibangun harus dapat menampilkan kotak dialog eror ketika user salah dalam melakukan penginputan.

6. Manajemen Kualitas

(31)

3.1.3 Analisis Proses

Sistem ini memiliki lima proses, yaitu proses deteksi tepi dengan menggunakan metode Frei-Chen, Sobel, dan Morphologi serta deteksi tepi dengan kombinasi metode Sobel dengan Morphologi serta Frei-Chen dengan Morphologi. Selanjutnya akan dilakukan proses perhitungan nilai MSE, PSNR dan Running Time pada masing-masing proses deteksi tepi.

3.1.3.1 Use Case Diagram

Use case diagram menggambarkan interaksi antara sistem dengan pelaku. Diagram use case ini mendeskripsikan siapa saja yang menggunakan sistem dan bagaimana cara mereka berinteraksi dengan sistem. Use case diagram dapat ditunjukkan pada Gambar 3.2 berikut ini.

Pengguna System Input Citra Deteksi Tepi Frei-Chen deteksi Tepi Morphologi

Ubah Citra ke Grayscale

Deteksi Tepi Sobel

Deteksi Tepi Sobel & Morphologi Deteksi Tepi «extends» «extends» «extends» «extends» Deteksi Tepi Frei-Chen & Morphologi «extends»

«extends»

Hitung MSE, PSNR, & Running Time

[image:31.595.126.514.449.754.2]

Simpan Citra «extends» «extends» «extends» «extends» «extends» «extends» «extends»

(32)

3.1.3.1.1 Use Case Input Citra

Spesifikasi use case input citra dapat dilihat pada Tabel 3.1.

Tabel 3.1 Spesifikasi Use Case Input Citra

Name Input Citra

Actors Pengguna

Trigger Pengguna memilih menu Deteksi Tepi.

Preconditions Pengguna menggunakan aplikasi Deteksi Tepi pada citra.

Post Conditions Sistem akan menampilkan citra dan yang telah dipilih dan mengubahnya menjadi citra grayscale

Success Scenario 1.Pengguna mengeksekusi menu Deteksi Tepi. 2.Sistem akan menampilkan halaman Deteksi Tepi. 3.Pengguna memilih citra awal yang berupa citra

rontgen berformat JPG.

4. Sistem akan menampilakan citra yang telah diubah menjadi citra grayscale lalu menampilkan lokasi file, ukuran, dan dimensi citra.

Alternative Flows -

3.1.3.1.2 Use Case Deteksi Tepi Sobel

[image:32.595.100.510.268.477.2]

Spesifikasi use case Deteksi Tepi Sobel dapat dilihat pada Tabel 3.2.

Tabel 3.2 Spesifikasi Use Case Deteksi Tepi Sobel

Name Deteksi Tepi Sobel

Actors Pengguna

Trigger Pengguna memilih menu Deteksi Tepi

Preconditions Pengguna menginput citra yang akan dideteksi tepi. Post Conditions Sistem akan menampilkan citra yang telah dideteksi

tepi dengan metode Sobel, berikut dengan nilai MSE, PSNR, dan Running Time.

(33)

Running Time citra.

4.Pengguna dapat melihat file citra yang telah dideteksi tepi dengan metode Sobel berikut dengan nilai MSE, PSNR dan Running Time citra. Alternative Flows -

3.1.3.1.3 Use Case Deteksi Tepi Frei-Chen

[image:33.595.104.511.378.587.2]

Spesifikasi use case Deteksi TepiFrei-Chen dapat dilihat pada Tabel 3.3.

Tabel 3.3 Spesifikasi Use Case Deteksi Tepi Frei-Chen

Name Deteksi Tepi Frei-Chen

Actors Pengguna

Trigger Pengguna memilih menu Deteksi Tepi

Preconditions Pengguna menginput citra yang akan dideteksi tepi. Post Conditions Sistem akan menampilkan citra yang telah dideteksi

tepi dengan metode Frei-Chen, berikut dengan nilai MSE, PSNR, dan Running Time.

Success Scenario 1. Pengguna mengeksekusi tombol Deteksi Tepi 2. Sistem akan menampilkan citra hasil deteksi tepi. 3. Sistem akan menampilkan nilai MSE, PSNR, dan

Running Time citra.

4. Pengguna dapat melihat file citra yang telah dideteksi tepi dengan metode Frei-Chen berikut dengan nilai MSE, PSNR dan Running Time citra. Alternative Flows -

3.1.3.1.4 Use Case Deteksi Tepi Morphologi

Spesifikasi use case deteksi tepi Morphologi dapat dilihat pada Tabel 3.4. Tabel 3.4 Spesifikasi Use Case Deteksi Tepi Morphologi

Name Deteksi Tepi Morphologi

Actors Pengguna

Trigger Pengguna memilih menu Deteksi Tepi

(34)

Post Conditions Sistem akan menampilkan citra yang telah dideteksi tepi dengan metode morphologi, berikut dengan nilai MSE, PSNR, dan Running Time.

Success Scenario 1. Pengguna mengeksekusi tombol Deteksi Tepi 2. Sistem akan menampilkan citra hasil deteksi tepi. 3. Sistem akan menampilkan nilai MSE, PSNR, dan

Running Time citra.

4. Pengguna dapat melihat file citra yang telah dideteksi tepi dengan metode morphologi berikut dengan nilai MSE, PSNR dan Running Time citra. Alternative Flows -

3.1.3.1.5 Use Case Deteksi Tepi Sobel Dan Morphologi

Spesifikasi use case deteksi tepi Sobel dan Morphologi dapat dilihat pada Tabel 3.5. Tabel 3.5 Spesifikasi Use Case Deteksi Tepi Sobel Dan Morphologi

Name Deteksi Tepi Sobel dan Morphologi

Actors Pengguna

Trigger Pengguna memilih menu Deteksi Tepi

Preconditions Pengguna melakukan deteksi tepi citra dengan metode Sobel.

Post Conditions Sistem akan menampilkan citra yang telah dideteksi tepi dengan metodeSobel danmorphologi, berikut dengan nilai MSE, PSNR, dan Running Time.

Success Scenario 1. Pengguna mengeksekusi tombol Deteksi Tepi 2. Sistem akan menampilkan citra hasil deteksi tepi. 3. Sistem akan menampilkan nilai MSE, PSNR, dan

Running Time citra.

4. Pengguna dapat melihat file citra yang telah dideteksi tepi dengan metode Sobel dan

Morphologi berikut dengan nilai MSE, PSNR dan Running Time citra.

Alternative Flows -

3.1.3.1.6 Use Case Deteksi Tepi Frei-Chen Dan Morphologi

(35)

Tabel 3.6 Spesifikasi Use Case Deteksi Tepi Frei-Chen Dan Morphologi

Name Deteksi Tepi Sobel dan Morphologi

Actors Pengguna

Trigger Pengguna memilih menu Deteksi Tepi

Preconditions Pengguna melakukan deteksi tepi citra dengan metode Sobel.

Post Conditions Sistem akan menampilkan citra yang telah dideteksi tepi dengan metodeSobel danmorphologi, berikut dengan nilai MSE, PSNR, dan Running Time.

Success Scenario 1. Pengguna mengeksekusi tombol Deteksi Tepi 2. Sistem akan menampilkan citra hasil deteksi tepi. 3. Sistem akan menampilkan nilai MSE, PSNR, dan

Running Time citra.

4. Pengguna dapat melihat file citra yang telah dideteksi tepi dengan metode Sobel dan

Morphologi berikut dengan nilai MSE, PSNR dan Running Time citra.

Alternative Flows - 3.1.3.1.7 Use Case Simpan Citra

[image:35.595.104.512.184.424.2]

Spesifikasi use case Simpan Citra Hasil Deteksi tepi dapat dilihat pada Tabel 3.7.

Tabel 3.7 Spesifikasi Use Case Simpan Citra

Name Simpan Citra

Actors Pengguna

Trigger Pengguna telahmelihat hasil deteksi tepi dan perhitungan nilai MSE, PSNR, dan Running Time. Preconditions Pengguna mengakses menu Deteksi Tepi

Post Conditions Sistem menyimpan citra hasil Deteksi Tepi dengan metode Sobel, Frei-Chen, morphologi, Sobel dan Morphologi serta Frei-Chen dan Morphologi

Success Scenario 1.Pengguna mengeksekusi tombol Simpan Gambar. 2.Sistem akan menampilkan pop-up window Save

Asuntuk menampilkan lokasi penyimpanan gambar.

(36)

Alternative Flows - 3.1.3.2 Activity Diagram

Activity diagram adalah diagram aktivitas yang mendeskripsikan proses kerja dalam sebuah sistem yang sedang berjalan.Activity diagram bertujuan untuk membantu memahami keseluruhan proses dan menggambarkan interaksi antara beberapa use case.Activity diagram sistem ini dapat dilihat pada Gambar 3.3.

System User

Pilih Menu

Ambil Gambar

Pilih Deteksi Tepi

Baca Citra

Ubah dalam Grayscale

Menampilkan Citra

Menekan Button Simpan

Deteksi Tepi

Menampilkan Citra Hasil Deteksi Tepi

Hitung Nilai MSE, PSNR dan Running Time

Menampilkan Nilai MSE, PSNR dan Running Time

Menyimpan Citra Deteksi Tepi

!=Deteksi Tepi

.*jpg

Metode Sobel

Metode Frei-Chen

Metode Morphologi

Metode Sobel dan Morphologi

Metode Frei-Chen dan Morphologi !=Sobel

!= Frei-Chen

!=morphologi

[image:36.595.122.503.275.659.2]

!=Sobel dan Morphologi

(37)

3.1.3.3 Sequence Diagram

Sequence diagram merupakan suatu diagram yang menampilkan interaksi-interkasi yang ada pada sistem secara berurutan.Sequence diagram sistem ini dapat dilihat pada Gambar 3.4.

Actor

Input Citra Deteksi Tepi Simpan Citra

Hasil Deteksi Tepi Hitung Nilai MSE,

PSNR dan Running Time

Input Citra

Tampil Citra Citra Telah Dideteksi Tepi Tampilkan Citra Hasil Deteksi tepi dan Parameter

Simpan Citra Citra Tersimpan

Gambar 3.4 Sequence Diagram

3.1.3.4 Analisis Proses Deteksi Tepi dengan Metode Sobel

Berikut ini merupakan contoh penggunaan metode Sobel. Dimisalkan terdapat suatu matriks citra input 5x5 :

⎣ ⎢ ⎢ ⎢

⎡35 151 69 24 36 6 1 10 7 5

8 3 8 8 5

2 5 1 9 4⎦ ⎥ ⎥ ⎥ ⎤

[image:37.595.263.369.609.677.2]
(38)

Sx = (�2+��3+�4)- (�0+��7+�6)

Sy= (�0+��1+�2)- (�6+��5+�4)

� = ���2+��2

Perhitungan dimulai dari koordinat Sx(1, 1), Sy(1,1) dan dilakukan dengan mengambil matriks 3x3 dari matriks tetangga piksel yang akan direduksi. Untuk dapat melakukan operasi perhitungan pada koordinat (1,1) diberikan boundary matrik citra dengan nilai 0. Perhitungan dilakukan pada setiap nilai piksel pada matriks citra dimana c adalah konstanta bernilai 2. Contoh penggunaan rumus operator sobel dapat dilihat sepertidi bawah ini:

⎣ ⎢ ⎢ ⎢

⎡35 151 69 24 3 6 6 1 10 7 5

8 3 8 8 5

2 5 1 9 4⎦ ⎥ ⎥ ⎥ ⎤ ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 0

0 0 3

0 1

0 5 15

0 6 0 2 0 3 0 0 9 4 6 0

0 6 1 0 0 0 8 2 0 3 5 0

10 7 5 0 8 1 0 8 9 0 5 0 4 0 0 0⎦ ⎥ ⎥ ⎥ ⎥ ⎤

��(1, 1) = (0 + 2(1) + 15)−(0 + 2(0) + 0) = 18 ��(1, 1) = (0 + 2(0) + 0)−(0 + 2(5) + 15) =−25 �(1, 1) =�182+ (25)2 = 30,81 = 31

��(1, 2) = (0 + 2(6) + 9)−(0 + 2(13) + 5) =−10 ��(1, 2) = (0 + 2(0) + 0)−(5 + 2(15) + 9) =−44 �(1, 2) =�−102+ (44)2 = 45,12 = 45

��(1, 3) = (0 + 2(2) + 4)−(0 + 2(1) + 15) =−9

�0 �1 �2

�7 (�,�) �3

(39)

��(1, 3) = (0 + 2(0) + 0)−(15 + 2(9) + 4) =−37 �(1, 3) =�−92+ (37)2 = 38,07 = 38

��(1, 4) = (0 + 2(3) + 6)−(0 + 2(6) + 9) =−9 ��(1, 4) = (0 + 2(0) + 0)−(9 + 2(4) + 6) =−23 �(1, 4) =�−92+ (23)2 = 24,6 = 25

��(1, 5) = (0 + 2(0) + 0)−(0 + 2(2) + 4) =−8 ��(1, 5) = (0 + 2(0) + 0)−(4 + 2(6) + 0) =−16 �(1, 5) =�−82+ (16)2 = 17,83 = 18

��(2, 1) = (1 + 2(15) + 1)−(0 + 2(0) + 0) = 32 ��(2, 1) = (0 + 2(3) + 1)−(0 + 2(6) + 1) =−6 �(2, 1) =�322+ (6)2 = 33,10 = 33

��(2, 2) = (6 + 2(9) + 10)−(3 + 2(5) + 6) = 15 ��(2, 2) = (3 + 2(1) + 6)−(6 + 2(1) + 10) =−7 �(2, 2) =�152+ (7)2 = 16,55 = 17

��(2, 3) = (2 + 2(4) + 7)−(1 + 2(2) + 1) = 11 ��(2, 3) = (1 + 2(6) + 2)−(1 + 2(10) + 7) =−13 �(2, 3) =�112+ (13)2 = 17,02 = 17

��(2, 4) = (3 + 2(6) + 5)−(6 + 2(9) + 10) =−13 ��(2, 4) = (6 + 2(2) + 3)−(10 + 2(7) + 5) =−16 �(2, 4) =�−132+ (16)2 = 20,6 = 21

��(2, 5) = (0 + 2(0) + 0)−(2 + 2(4) + 7) =−17 ��(2, 5) = (2 + 2(3) + 0)−(7 + 2(5) + 0) =−9 �(2, 5) =�−172+ (9)2 = 19,23 = 19

��(3, 1) = (15 + 2(1) + 3)−(0 + 2(0) + 0) = 20 ��(3, 1) = (0 + 2(5) + 15)−(0 + 2(8) + 3) =−6 �(3, 1) =�202+ (6)2 = 20,8 = 21

(40)

�(3, 2) =�122+ (4)2 = 12,6 = 13

��(3, 3) = (4 + 2(7) + 8)−(2 + 2(1) + 3) = 19 ��(3, 3) = (2 + 2(9) + 4)−(3 + 2(8) + 8) =−3 �(3, 3) =�192+ (3)2 = 19,23 = 19

��(3, 4) = (6 + 2(5) + 5)−(9 + 2(10) + 8) =−16 ��(3, 4) = (9 + 2(4) + 6)−(8 + 2(8) + 5) =−6 �(3, 4) =�−162+ (6)2 = 17,08 = 17

��(3, 5) = (0 + 2(0) + 0)−(4 + 2(7) + 8) =−26 ��(3, 5) = (4 + 2(6) + 0)−(8 + 2(5) + 0) =−2 �(3, 5) =�−262+ (2)2 = 26,07 = 26

��(4, 1) = (3 + 2(5) + 0)−(0 + 2(0) + 0) = 13 ��(4, 1) = (0 + 2(6) + 1)−(0 + 2(2) + 5) =−2 �(4, 1) =�132+ (2)2 = 13,15 = 13

��(4, 2) = (10 + 2(8) + 1)−(6 + 2(8) + 2) = 3 ��(4, 2) = (6 + 2(1) + 10)−(2 + 2(5) + 1) = 5 �(4, 2) =�32+ 52 = 5,8 = 6

��(4, 3) = (7 + 2(8) + 9)−(1 + 2(3) + 5) = 20 ��(4, 3) = (1 + 2(10) + 7)−(5 + 2(1) + 9) = 12 �(4, 3) =�202+ 122 = 23,32 = 23

��(4, 4) = (5 + 2(5) + 4)−(10 + 2(8) + 1) =−8 ��(4, 4) = (10 + 2(7) + 5)−(1 + 2(9) + 4) = 6 �(4, 4) =�−82+ 62 = 14,4 = 14

��(4, 5) = (0 + 2(0) + 0)−(0 + 2(8) + 9) =−25 ��(4, 5) = (7 + 2(5) + 0)−(9 + 2(4) + 0) = 0 �(4, 5) =�−252+ 02 = 25

(41)

��(5, 2) = (8 + 2(1) + 0)−(8 + 2(2) + 0) =−2 ��(5, 2) = (8 + 2(3) + 8)−(0 + 2(0) + 0) = 22 �(5, 2) =�−22+ 222 = 22,09 = 22

��(5, 3) = (8 + 2(9) + 0)−(2 + 2(5) + 0) =−13 ��(5, 3) = (3 + 2(8) + 8)−(0 + 2(0) + 0) = 27 �(5, 3) =�−132+ 272 = 29,9 = 30

��(5, 4) = (5 + 2(4) + 0)−(8 + 2(1) + 0) = 3 ��(5, 4) = (8 + 2(8) + 8)−(0 + 2(0) + 0) = 32 �(5, 4) =�32+ 322 = 32,1 = 32

��(5, 5) = (0 + 2(0) + 0)−(8 + 2(9) + 0) =−26 ��(5,5) = (8 + 2(5) + 0)−(0 + 2(0) + 0) = 0 �(5, 5) =�−262+ 182 = 31,6 = 32

Setelah dilakukan perhitungan seperti diatas, maka didapat lah citra output dari matriks 5x5 yang sebelumnya telah disebutkan.

Citra output dapat dilihat pada matriks berikut ini:

⎣ ⎢ ⎢ ⎢

⎡35 151 69 24 36 6 1 10 7 5

8 3 8 8 5

2 5 1 9 4⎦ ⎥ ⎥ ⎥ ⎤ ⎣ ⎢ ⎢ ⎢

⎡3133 4517 3817 2521 1819 21 13 19 17 26 13 6 23 14 25 23 22 30 32 32⎦

⎥ ⎥ ⎥ ⎤

3.1.3.5 Analisis Proses Deteksi Tepi dengan Metode Frei-Chen

(42)

⎣ ⎢ ⎢ ⎢

⎡35 151 69 24 36 6 1 10 7 5

8 3 8 8 5

2 5 1 9 4⎦ ⎥ ⎥ ⎥ ⎤

Selanjutnya matriks tersebut dihitung dengan menggunakan kernel 3 x 3, dengan operator Frei-Chen yaitu :

��2 = (�2+��3+�4)- (�0+��7+�6)

��2= (�0+��1+�2)- (�6+��5+�4)

�= ��2 +�2

Perhitungan dimulai dari koordinat Fx(1,1), Fy(1,1) dan dilakukan dengan mengambil matriks 3x3 dari matriks tetangga piksel yang akan direduksi. Untuk dapat melakukan operasi perhitungan pada koordinat (1, 1) diberikan boundary matrik citra dengan nilai 0. Perhitungan ini dilakukan pada setiap nilai piksel pada matriks citra dimana c adalah konstanta bernilai √2. Contoh penggunaan operator Frei-Chen dapat dilihat seperti di bawah ini:

⎣ ⎢ ⎢ ⎢

⎡35 151 69 24 3 6 6 1 10 7 5

8 3 8 8 5

2 5 1 9 4

⎦ ⎥ ⎥ ⎥ ⎤ ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 0

0 0 3

0 1

0 5 15

0 6 0 2 0 3 0 0 9 4 6 0 0 6 1

0 0 0 8 2 0 3 5 0

10 7 5 0 8 1 0 8 9 0 5 0 4 0 0 0⎦ ⎥ ⎥ ⎥ ⎥ ⎤

��(1, 1) =�0 +√2(1) + 15� − �0 +√2(0) + 0�= 16 ��(1, 1) = �0 +√2(0) + 0� − �0 +√2(5) + 15� =−22 �(1, 1) =�16 + (−22)2 = 27,2 = 27

�0 �1 �2

�7 (�,�) �3

(43)

��(1, 2) =�0 +√2(6) + 9� − �0 +√2(13) + 5�= −6 ��(1, 2) = �0 +√2(0) + 0� − �5 +√2(15) + 9�=−35 �(1, 2) =�−62+ (35)2 = 36

��(1, 3) =�0 +√2(2) + 4� − �0 +√2(1) + 15�= −10 ��(1, 3) = �0 +√2(0) + 0� − �15 +√2(9) + 4�=−32 �(1, 3) =�−102+ (32)2 = 34

��(1, 4) =�0 +√2(3) + 6� − �0 +√2(6) + 9� =−10 ��(1, 4) = �0 +√2(0) + 0� − �9 +√2(4) + 6�=−21 �(1, 4) =�−102+ (21)2 = 23,68 = 24

��(1, 5) =�0 +√2(0) + 0� − �0 +√2(2) + 4� =−7 ��(1, 5) = �0 +√2(0) + 0� − �4 +√2(6) + 0�=−12 �(1, 5) =�−72+ (12)2 = 23,68 = 24

��(2, 1) =�1 +√2(15) + 1� − �0 +√2(0) + 0�= 23 ��(2, 1) = �0 +√2(3) + 1� − �0 +√2(6) + 1�=−4 �(2, 1) =�232+ (4)2 = 23,68 = 24

��(2, 2) =�6 +√2(9) + 10� − �3 +√2(5) + 6�= 13 ��(2, 2) = �3 +√2(1) + 6� − �6 +√2(1) + 10� =−7 �(2, 2) =�132+ (7)2 = 14,76 = 15

��(2, 3) =�2 +√2(4) + 7� − �1 +√2(2) + 1� = 10 ��(2, 3) = �1 +√2(6) + 2� − �1 +√2(10) + 7�=−11 �(2, 3) =�102+ 112 = 14,8 = 15

��(2, 4) =�3 +√2(6) + 5� − �6 +√2(9) + 10�= −12 ��(2, 4) = �6 +√2(2) + 3� − �10 +√2(7) + 5�= 13 �(2, 4) =�−122+ 132 = 17,6 = 18

(44)

�(2, 5) =�−152+ (8)2 = 17

��(3, 1) =�15 +√2(1) + 3� − �0 +√2(0) + 0�= 19 ��(3, 1) = �0 +√2(5) + 15� − �0 +√2(8) + 3�= 8 �(3, 1) =�192+ 82 = 20,6 = 21

��(3, 2) =�9 +√2(10) + 8� − �5 +√2(6) + 8�= 10 ��(3, 2) = �5 +√2(2) + 9� − �8 +√2(3) + 8�= 3 �(3, 2) =�102+ 32 = 10,3 = 10

��(3, 3) =�4 +√2(7) + 8� − �2 +√2(1) + 3� = 15 ��(3, 3) = �2 +√2(9) + 4� − �3 +√2(8) + 8�= 4 �(3, 3) =�152+ 42 = 15,52 = 16

��(3, 4) =�6 +√2(5) + 5� − �9 +√2(10) + 8�= 13 ��(3, 4) = �9 +√2(4) + 6� − �8 +√2(8) + 5�= 4 �(3, 4) =�132+ 42 = 13,6 = 14

��(3, 5) =�0 +√2(0) + 0� − �4 +√2(7) + 8� =−22 ��(3, 5) = �4 +√2(6) + 0� − �8 +√2(5) + 0�= 3 �(3, 5) =�−222+ 32 = 26,07 = 22

��(4, 1) =�3 +√2(5) + 0� − �0 +√2(0) + 0� = 10 ��(4, 1) = �0 +√2(6) + 1� − �0 +√2(2) + 5�= 2 �(4, 1) =�102+ 22 = 10

��(4, 2) =�10 +√2(8) + 1� − �6 +√2(8) + 2�= 3 ��(4, 2) = �6 +√2(1) + 10� − �2 +√2(5) + 1�= 7,3 �(4, 2) =�32+ 7,32 = 7,6 = 8

��(4, 3) =�7 +√2(8) + 9� − �1 +√2(3) + 5� = 17 ��(4, 3) = �1 +√2(10) + 7� − �5 +√2(1) + 9�= 11 �(4, 3) =�172+ 112 = 20,32 = 20

(45)

��(4, 4) = �10 +√2(7) + 5� − �1 +√2(9) + 4�= 7

�(4, 4) =�−62+ 72 = 9,4 = 9

��(4, 5) =�0 +√2(0) + 0� − �0 +√2(8) + 9� =−20 ��(4, 5) = �7 +√2(5) + 0� − �9 +√2(4) + 0�=−1 �(4, 5) =�−202+12 = 20

��(5, 1) =�3 +√2(5) + 0� − �0 +√2(0) + 0� = 10 ��(5, 1) = �0 +√2(8) + 1� − �0 +√2(0) + 0�= 8 �(5, 1) =�102+ 82 = 13

��(5, 2) =�8 +√2(1) + 0� − �8 +√2(2) + 0� =−1 ��(5, 2) = �8 +√2(3) + 8� − �0 +√2(0) + 0�= 20 �(5, 2) =�−12+ 202 = 20

��(5, 3) =�8 +√2(9) + 0� − �2 +√2(5) + 0� = 12 ��(5, 3) = �3 +√2(8) + 8� − �0 +√2(0) + 0�= 22 �(5, 3) =�122+ 222 = 25

��(5, 4) =�5 +√2(4) + 0� − �8 +√2(1) + 0� = 2 ��(5, 4) = �8 +√2(8) + 8� − �0 +√2(0) + 0�= 27 �(5, 4) =�22+ 272 = 27

��(5, 5) =�0 +√2(0) + 0� − �8 +√2(9) + 0� =−21 ��(5, 5) = �8 +√2(5) + 0� − �0 +√2(0) + 0�= 15 �(5, 5) =�−212+ 152 = 26

Setelah dilakukan perhitungan seperti diatas, maka didapat lah citra output dari matriks 5x5 yang sebelumnya telah disebutkan.

(46)

⎣ ⎢ ⎢ ⎢

⎡35 151 69 24 36 6 1 10 7 5

8 3 8 8 5

2 5 1 9 4⎦ ⎥ ⎥ ⎥ ⎤ ⎣ ⎢ ⎢ ⎢

⎡2724 3615 3415 2418 2417 21 10 16 14 22 10 8 20 9 20 13 20 25 27 26⎦

⎥ ⎥ ⎥ ⎤

3.1.3.6 Analisis Proses Deteksi Tepi dengan Metode Morphologi

Berikut ini merupakan contoh penggunaan metode Morphologi. Dimisalkan terdapat suatu matriks citra input 5x5 :

⎣ ⎢ ⎢ ⎢

⎡35 151 69 24 36 6 1 10 7 5

8 3 8 8 5

2 5 1 9 4⎦ ⎥ ⎥ ⎥ ⎤

Selanjutnya matriks tersebut dihitung dengan menggunakan kernel 3 x 3yaitu :

D(x,y) = maks (0,1,2…�8);

E(x,y) = min (0,1,2…�8);

T = D(x,y) - E(x,y) Keterangan:

D(x, y) = Dilasi pada titik x, y E(x, y) = Erosi pada titik x, y T = Deteksi Tepi.

�0 �1 �2

�7 (�,�) �3

(47)

Perhitungan dimulai pada koordinat D (1, 1) dan E(1, 1) dan dilakukan dengan mengambil matriks 3x3 dari matriks tetangga piksel yang akan direduksi. Untuk dapat melakukan operasi perhitungan pada koordinat (1,1) diberikan boundary matrik citra dengan nilai 0. Perhitungan ini dilakukan pada setiap nilai piksel pada matriks citra. Contoh penggunaan operator Morphologi yaitu dilasi dan erosi untuk deteksi tepidapat dilihat seperti di bawah ini:

⎣ ⎢ ⎢ ⎢

⎡35 171 69 24 3 6 6 1 10 7 5

8 3 8 8 5

2 5 1 9 4⎦ ⎥ ⎥ ⎥ ⎤ ⎣ ⎢ ⎢ ⎢ ⎢ ⎡ 0 0 0 3 0 1

0 5 15

0 6 0 2 0 3 0 0 9 4 6 0 0 6 1

0 0 0 8 2 0 3 5 0

10 7 5 0 8 1 0 8 9 0 5 0 4 0 0 0⎦ ⎥ ⎥ ⎥ ⎥ ⎤

D(1,1)= maks (0,0,0,15,1,6,0,0,3) = 15 E(1,1) = min (0,0,0,15,1,6,0,0,3) = 0 T(1,1) = 15 – 0 =15

D(1,2)= maks (0,0,0,9,10,1,6,3,15) = 15 E(1,2) = min (0,0,0,9,10,1,6,3,15) = 0 T(1,2) = 15 – 0 = 15

D(1,3)= maks (0,0,0,2,4,9,15,1,6) = 15 E(1,3) = min (0,0,0,2,4,9,17,1,6) = 0 T(1,3) = 15 – 0 = 15

D(1,4)= maks (0,0,0,3,2,4,9,6,2) = 9 E(1,4) = min (0,0,0,3,2,4,9,6,2) = 0 T(1,4) = 9 – 0 = 9

D(1,5)= maks (0,0,0,0,0,6,4,2,3) = 6 E(1,5) = min (0,0,0,0,0,6,4,2,3) = 0 T(1,5) = 6 - 0 = 6

(48)

D(2,2)= maks (3,1,6,9,10,1,6,5,15) = 15 E(2,2) = min (3,1,6,9,10,1,6,5,15) = 1 T(2,2) = 15 – 1 = 14

D(2,3)= maks (1,6,2,4,7,10,1,2,9) = 10 E(2, 3)= min (1,6,2,4,7,10,1,2,9) = 1 T(2,3)= 10 – 1 = 9

D(2,4)= maks (6,2,3,6,5,7,10,9,4) = 10 E(2,4)= min (6,2,3,6,5,7,10,9,4) = 2 T(2,4)= 10 - 2 = 8

D(2,5)= maks (2,3,0,0,0,5,7,4,6) = 7 E(2,5) = min (2,3,0,0,0,5,7,4,6) = 0 T(2,5) = 7 - 0 = 7

D(3,1) = maks (0,5,15,1,3,8,0,0,5) = 15 E(3,1) = min (0,5,15,1,3,8,0,0,5) = 0 T(3,1) = 15 – 0 = 15

D(3,2)= maks (5,2,9,10,8,3,8,6,1) = 10 E(3,2)= min (5,2,9,10,8,3,8,6,1) = 1 T(3,2)= 10 – 1 = 9

D(3,3)= maks (2,9,4,7,8,8,3,1,10) = 10 E(3,3)= min (2,9,4,7,8,8,3,1,10) = 1 T(3,3)= 10 - 1= 9

D(3,4)= maks (9,4,6,5,5,8,8,10,7) = 10 E(3,4)= min (9,4,6,5,5,8,8,10,7) = 4 T(3,4) =10 – 4 = 6

D(3,5) = maks(4,6,0,0,0,5,8,7,5) = 8 E(3,5)= min (4,6,0,0,0,5,8,7,5) = 0 T(3,5) = 8 - 0 = 8

(49)

D(4,2)= maks (6,1,10,8,1,5,2,8,3) = 10 E(4,2)= min (6,1,10,8,1,5,2,8,3) = 1 T(4,2)=10 - 1= 9

D(4, 3)= maks (1,10,7,8,9,1,5,3,8) = 10 E(4,3)= min (1,10,7,8,9,1,5,3,8) = 1 T(4,3)= 10 - 1 = 9

D(4,4)= maks (10,7,5,5,4,9,1,8,8) = 10 E(4,4)= min (10,7,5,5,4,9,1,8,8) = 1 T(4,4)= 10 - 1 = 9

D(4,5)= maks (7,5,0,0,0,4,9,8,5) = 9 E(4,5)= min (7,5,0,0,0,4,9,8,5) = 0 T(4,5)= 9 - 0 = 9

D(5,1)= maks (0,8,3,5,0,0,0,0,2) = 8 E(5,1)= min (0,8,3,5,0,0,0,0,2) = 0 T(5,1)= 8 – 0 = 8

D(5,2)= maks (8,3,8,1,0,0,0,2,5) = 8 E(5,2)= min (8,3,8,1,0,0,0,2,5) = 0 T(5,2)= 8 – 0 = 8

D(5,3)= maks (3,8,8,9,0,0,0,5,1) = 9 E(5,3)= min (3,8,8,9,0,0,0,5,1) = 0 T(5,3)=9-0=9

D(5,4)= maks (8,8,5,4,0,0,0,1,9) = 9 E(5,4)= min (0,8,3,5,0,0,0,0,2) = 0 T(5,4)= 9 – 0 = 9

D(5,5)= maks (8,5,0,0,0,0,0,9,4) = 9 E(5,5)= min (8,5,0,0,0,0,0,9,4) = 0 T(5,5)= 9 - 0 = 9

(50)

Citra output dapat dilihat pada matriks berikut ini:

⎣ ⎢ ⎢ ⎢

⎡35 12 69 24 36 6 1 10 7 5 8 3 8 8 5 2 5 1 9 4⎦

⎥ ⎥ ⎥ ⎤ ⎣ ⎢ ⎢ ⎢

⎡1515 1514 159 98 67 15 9 9 6 8

8 9 9 9 9

8 8 9 9 9⎦ ⎥ ⎥ ⎥ ⎤

3.2 Pseudocode

Pseudocode adalah kode yang digunakan untuk menuliskan sebuah algoritma yang bebas dan tidak terkaid dengan bahasa pemrograman tertentu. Pseudocode berisi langkah-langkah untuk menyelesaikan suatu permasalahn yang bentuknya sedikit berbeda dari algoritma. Pseudocode menggunakan bahasa ynag mudah dipahami secara umum dan ringkas.

3.2.1 Pseudocode Proses Deteksi Tepi

1. Mengubah citra dengan format JPG menjadi citra grayscale

int rata2=0;

for y <-0; y< gambar.Tinggi; y++

for x<-0; x< gambar.Lebar; x++ rata2=(gambar.GetPixel(x, y).R +

gambar.GetPixel(x, y).G + gambar.GetPixel(x, y).B)/3;

2. Melakukan Konvolusi citra dengan ukuran kernel 3x3 int xStart, xFinish, yStart, yFinish;

int pixel;

xStart = xPos - 1 xFinish = xPos + 1 yStart = yPos - 1

yFinish = yPos + 1 for y <- yStart y <= yFinish for (int x <- xStart; x <= xFinish

if (x < 0 || y < 0 || x >(gambar.lebar-1) || y > (gambar.Tinggi - 1))

neighboursList.Add(0) else

(51)

3. Melakukan Deteksi Tepi Dengan Metode Sobel

int[,] sobelX = { {-1,0,1}, {-2,0,2}, {-1,0,1} }

int[,] sobelY = { { 1,2,1 }, { 0,0,0 }, { -1,-2,-1 } } int count = 0;

if (sobelX)) for y <- 0 y < 3

for x <- 0 x < 3

hasil += (sobelX[x, y] * (konvolusi[count])) count++

else if (sobelY)) for y <- 0 y < 3 for x <- 0 x < 3

Hasil += (sobelY[x, y] *(konvolusi[count])) count++

magnitude= (Math.Sqrt(Math.Pow(sobelX, 2) + Math.Pow(Sobel, 2)))

4. Melakukan Deteksi Tepi Dengan Metode Frei-Chen if (Frei_ChenX)

a=akar(2)

int[,] Frei_ChenX = { {-1, 0,1}, {-a,0,a}, {-1,0,1} } int[,] Frei_ChenY= { {1,a,1}, { 0,0,0 }, {-1,-a,-1} } int count = 0

for (int y <- 0 y < 3 for (int x <- 0 x < 3

Hasil+=(Frei_ChenX[x, y] * (konvolusi[count])) count++;

else if (Frei_ChenY)) for (int y <- 0 y < 3 for (int x <- 0 x < 3

result += (Frei_ChenY[x, y] * (konvolusi[count])) count++

magnitude= (Math.Sqrt(Math.Pow(sobelX, 2) + Math.Pow(Sobel, 2))) 4. Melakukan Deteksi Tepi Dengan Metode Morphologi

int result=0; int maks = 0; int count=0; int min = 255; if (Dilasi)

for (int y <- 0 y < 3 for (int x <- 0 x < 3 hasil+=(konvolusi[count]) if (maks < hasil)

maks= hasil count++

(52)

min = hasil count++

Padapseudocode proses deteksi tepi Sobel, Frei-Chen dan Morphologi citra terlebih dahulu diubah dari format JPG menjadi grayscale, kemudian dilakukan pendeteksian tepi dengan menerapkan konvolusi 3x3 dan dioperasikan dengan operator Sobel dan Frei-Chen kemudian dihitung nilai Magnitudnya (gradiennya). Pada proses morphologi diambil nilai maks= 255, kemudian diambil nilai tertinggi dari citra konvolusi 3x3 untuk operasi dilasi, sedangkan untuk erosidiambil nilai min = 0, dan kemudian diambil nilai minimun dari citra konvolusi 3x3.

3.2.2 Pseudocode Proses Perhitungan MSE

for i <- 0 i < gambar.Tinggi for j <- 0 j < gambar.Tinggi r1 = gambar.GetPixel(j, i).R r2 = gambar.GetPixel(j, i).R sum += Math.Pow(r1 - r2, 2) g1 = gambar.GetPixel(j, i).G g2 = gambar.GetPixel(j, i).G sum += Math.Pow(g1 - g2, 2) b1 = gambar.GetPixel(j, i).B b2 = gambar.GetPixel(j, i).B sum += Math.Pow(b1 - b2, 2)

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

pada pseudocode menentukan nilai MSE dilakukan perhitungan citra asli dengan citra hasil yang telah dideteksi tepi.

3.2.3 Pseudocode Proses perhitungan presentase MSE

for (int i =0; i< gambar.Height; i++) for (int j= 0; j<gambar.Width; j++)

r=gambar.GetPixel(j,i).R;

(53)

persenMSE =MSE/sum * 100; return persenMSE;

3.2.4 Pseudocode Proses perhitungan PSNR

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

Pada pseudocode perhitungan PSNR dilakukan perhitungan dengan menggunakan hasil nilai MSE sebelumnya yang telah diproses.

3.3 Perancangan Sistem

(54)

Mulai Selesai Input Citra Asli (.jpg) Deteksi Tepi Sobel Deteksi Tepi Morphologi Deteksi Tepi Frei-Chen

Proses Deteksi Tepi Frei-Chen

Proses Deteksi Tepi

Sobel

Proses Deteksi

Morphologi

Citra Hasil Deteksi Tepi

Hitung PSNR, MSE dan Running

Time Hasil Deteksi Tepi Citra

Tampilkan Nilai PNSR, MSE dan

Running Time

Ubah Citra Asli (.jpg) Menjadi Citra Grayscale

Citra Grayscale Deteksi Tepi Sobel & Morphologi Deteksi Tepi Frei-Chen &Morphologi

Proses Deteksi Tepi Sobel & Morphologi

Proses Deteksi Tepi Frei-Chen & Morphologi ya

Tidak Tidak Tidak Tidak Tidak

ya ya ya ya

Simpan

Deteksi Tepi Bantuan Tentang Keluar

[image:54.595.118.514.148.568.2]

Halaman Bantuan Halaman Tentang Tidak Tidak Tidak ya ya ya ya Tidak

Gambar 3.5 Flowchart Rancangan Sistem

3.3.2 Perancangan Antarmuka Sistem (Interface)

(55)

3.3.2.1 Halaman Menu Utama

Halaman menu utama merupakan halaman yang pertama kali muncul pada saat sistem dijalankan. Halaman ini memiliki beberapa menu bar, yaitu menu home, menu deteksi tepi, menu bantuan, menu tentang, dan menu keluar. Tampilan rancangan halaman menu utama dapat dilihat pada Gambar 3.6 berikut.

Home Deteksi Tepi Bantuan Tentang Keluar

Judul

Nama dan Nim

Logo Fakultas

Program Studi

1 2 3 4 5

7 6

8

[image:55.595.110.503.286.543.2]

9

Gambar 3.6 Rancangan Antarmuka Halaman Menu Utama

Keterangan:

1. Merupakan Tool Strip Menu ItemHome.

2. Merupakan Tool Strip Menu Item Deteksi Tepi. 3. Merupakan Tool Strip Menu Item Tentang. 4. Merupakan Tool Strip Menu Item Bantuan. 5. Merupakan Tool Strip Menu Item Keluar. 6. Merupakan Label Judul Skripsi.

(56)

9.Merupakan Label Program Studi.

3.3.2.2 Halaman Menu Deteksi Tepi

Halaman menu deteksi tepi merupakan halaman yang akan digunakan untuk melakukan proses deteksi tepi. Tampilan rancangan halaman Menu deteksi tepi dapat dilihat pada Gambar 3.7 berikut :

Home Deteksi Tepi Bantuan Tentang Keluar

5

7 Ambil Gambar

MSE PSNR Running Time File Ukuran Dimensi KB X Simpan Deteksi Tepi Deteksi Tepi Deteksi Tepi Deteksi Tepi Deteksi Tepi Simpan Simpan Simpan Simpan MSE MSE MSE MSE PSNR PSNR PSNR PSNR Running Time Running Time Running Time Running Time 7 8 9 7 10 Keterangan 15 6

1 2 3 4

55 45 35 25 12 11 16 14 13 24 23 22 21 20 19 18 17 33 32 31 30 29 28 27 26 34 10 10 10 10 10 10 10 10 10 10 10 65 63 64 61 60 59 58 57 56 54 53 52 51 50 49 48 47 46 44 43 42 41 40 39 38 37 36 62 Sobel Frei-Chen

[image:56.595.123.543.307.643.2]

Morphologi Sobel & Morphologi Frei-Chen & Morphologi File Info

Gambar 3.7 Rancangan Antarmuka Halaman Menu Detaksi Tepi

Keterangan:

(57)

3. Merupakan Tool Strip Menu Item Tentang. 4. Merupakan Tool Strip Menu Item Bantuan. 5. Merupakan Tool Strip Menu Item Keluar. 6. Merupakan Group Box untuk File Info. 7. Merupakan Picture Box Citra Awal. 8. Merupakan Button Ambil Gambar. 9. Merupakan Label File.

10. Merupakan Label Ukuran. 11.Merupakan Label Dimensi

12. Merupakan Text Box untuk menampilkan lokasi File. 13. Merupakan Text Box untuk menampilkan Ukuran File.

14. Merupakan Text Box untuk menampilkan Panjang dan lebar Citra. 15. Merupakan Group Box untuk Sobel

16. Merupakan Picture Box Citra Sobel. 17. Merupakan Button Deteksi Tepi 18. Merupakan Button Simpan. 19.Merupakan Label MSE. 20.Merupakan Label PSNR.

21.Merupakan Label Running Time.

22. Merupakan Text Box untuk menampilkan nilai MSE. 23. Merupakan Text Box untuk menampilkan nilai PSNR.

24. Merupakan Text Box untuk menampilkan nilai Running Time. 25. Merupakan Group Box untuk Frei-Chen

26. Merupakan Picture Box Citra Frei-Chen. 27. Merupakan Button Deteksi Tepi

28. Merupakan Button Simpan. 29.Merupakan Label MSE. 30.Merupakan Label PSNR.

31.Merupakan Label Running Time.

(58)

33. Merupakan Text Box untuk menampilkan nilai PSNR.

34. Merupakan Text Box untuk menampilkan nilai Running Time. 35. Merupakan Group Box untuk Morphologi.

36. Merupakan Picture Box Citra Morphologi. 37. Merupakan Button Deteksi Tepi

38. Merupakan Button Simpan. 39.Merupakan Label MSE. 40.Merupakan Label PSNR.

41.Merupakan Label Running Time.

42. Merupakan Text Box untuk menampilkan nilai MSE. 43. Merupakan Text Box untuk menampilkan nilai PSNR.

44. Merupakan Text Box untuk menampilkan nilai Running Time. 45. Merupakan Group Box untuk Sobel & Morphologi.

46. Merupakan Picture Box Citra Sobel & Morphologi. 47. Merupakan Button Deteksi Tepi.

48. Merupakan Button Simpan. 49.Merupakan Label MSE. 50.Merupakan Label PSNR.

51.Merupakan Label Running Time.

52. Merupakan Text Box untuk menampilkan nilai MSE. 53. Merupakan Text Box untuk menampilkan nilai PSNR.

54. Merupakan Text Box untuk menampilkan nilai Running Time. 55. Merupakan Group Box untuk Frei-Chen & Morphologi. 56. Merupakan Picture Box Citra Frei-Chen & Morphologi. 57. Merupakan Button Deteksi Tepi.

58. Merupakan Button Simpan. 59.Merupakan Label MSE. 60.Merupakan Label PSNR.

61.Merupakan Label Running Time.

(59)

63. Merupakan Text Box untuk menampilkan nilai PSNR.

64. Merupakan Text Box untuk menampilkan nilai Running Time. 65. Merupakan Group BoxKeterangan.

3.3.2.3 Halaman Menu Bantuan

Tampilan rancangan halaman Menu Bantuan dapat dilihat pada Gambar 3.8 berikut :

1

[image:59.595.108.506.304.575.2]

Bantuan

Gambar 3.8 Rancangan Antarmuka Halaman Menu Bantuan

Keterangan :

1.Merupakan Group Box untuk Bantuan.

3.3.2.4 Halaman Menu Tentang

(60)

2 1

Identitas Foto

[image:60.595.121.504.130.465.2]

AUTHOR

Gambar 3.9 Rancangan Antar muka Halaman Menu Tentang

Keterangan :

(61)

BAB IV

IMPLEMENTASI DAN PENGUJIAN

4.1.Implementasi Sistem

Setelah proses analisis dan perancangan sistem, tahap selanjutnya adalah proses implementasi dan pengujian sistem. Implementasi sistem merupakan penerapan fungsionalitas suatu sistem setelah selesai dilakukan pemodelan dan perancangan sistem. Impelementasi sistem inidibangun dengan menggunakan bahasa pemrograman C# dengan memakai IDE SharpDevelop. Terdapat 4 form utama pada sistem ini yaitu form Home (Mainform), form Deteksi Tepi, form Bantuan, dan form Tentang.

4.1.1 Form Menu Utama (Mainform)

(62)
[image:62.595.120.527.115.338.2]

Gambar 4.1 Tampilan Form Menu Utama

4.1.2 Form Deteksi Tepi

(63)
[image:63.595.115.529.89.326.2]

Gambar 4.2 Tampilan Form Deteksi Tepi 4.1.3 Form Bantuan

Form Bantuan berisi panduan untuk pengguna agar dapat menjalankan dan menggunakan sistem aplikasi dengan mudah. Tampilan form Bantuan dapat dilihat pada Gambar 4.3.

[image:63.595.116.532.495.715.2]
(64)
[image:64.595.116.530.192.428.2]

Form Tentang menampilkan data dan profil penulis. Tampilan form Tentang dapat dilihat pada Gambar 4.4.

Gambar 4.4 Tampilan Form Tentang.

4.2.Pengujian Sistem

(65)

Gambar

Gambar 3.2Use Case Diagram
Tabel 3.2 Spesifikasi Use Case Deteksi Tepi Sobel
Tabel 3.3 Spesifikasi Use Case Deteksi Tepi Frei-Chen
Tabel 3.7 Spesifikasi Use Case Simpan Citra
+7

Referensi

Dokumen terkait

Pada penelitian ini dilakukan dengan 30 sampel citra plat mobil yang diambil dengan kondisi tertentu menghasilkan deteksi tepi prewitt memiliki tingkat keberhasilan yang

Deteksi tepi berfungsi untuk mengidentifikasikan garis batas dari suatu objek terhadap latar belakang yang saling tumpang tindih.Saat ini telah ada beberapa metode

ini peneliti mengambil data berdasarkan pencatatan langsung dari hasil pengolahan citra dengan deteksi tepi sobel dan canny secara visual maupun perhitungan MSE dan

Berdasarkan tabel 4.2 maka dapat terlihat bahwa hasil deteksi tepi berdasarkan jumlah piksel warna putih dengan metode sobel lebih besar dibandingkan dengan metode

Dari rumusan masalah di atas, maka tujuan dari penulisan tugas akhir ini adalah membandingan metode roberts, sobel, prewitt, dan canny untuk deteksi tepi objek

Deteksi tepigambar merupakan sebuah proses dimana suatu proses yang menghasilkan tepi-tepi dariobyek-obyek citra yang bertujuan untuk menandai bagian yang menjadi detail

Tampilan simulasi pengolahan citra rontgen penyakit paru Sampel citra rontgen yang diinputkan, citra asli diperbaiki, citra rontgen hasil segmentasi dan hasil deteksi tepi dapat

Polinus Laia | http://ejurnal.stmik-budidarma.ac.id/index.php/mib | Page | 48 Maka hasil deteksi tepi yang didapat dari perhitungan matrix untuk mengetahui segmentasi pada gambar