• Tidak ada hasil yang ditemukan

Aplikasi Pengolahan Citra Digital Untuk Menghitung Jumlah Suatu Objek Pada Suatu Daerah Pengamatan.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Aplikasi Pengolahan Citra Digital Untuk Menghitung Jumlah Suatu Objek Pada Suatu Daerah Pengamatan."

Copied!
70
0
0

Teks penuh

(1)

i

Universitas Kristen Maranatha

APLIKASI PENGOLAHAN CITRA DIGITAL DALAM

MENGHITUNG JUMLAH SUATU OBJEK PADA SUATU

DAERAH PENGAMATAN

Rubinhut Sihar / 0322161

Jurusan Teknik Elektro, Fakultas Teknik

Universitas Kristen Maranatha

Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia

Email : rubinhut@gmail.com

ABSTRAK

Pada tugas akhir ini telah dibuat sebuah perangkat lunak yang dapat

menghitung banyak objek sekaligus mengklasifikasikannya dengan menggunakan

teknologi pengolahan citra digital, pembuatan perangkat lunak ini di dasari

dibutuhkannya suatu alat yang dapat menghitung suatu objek pada suatu daerah

pengamatan dengan cepat dan akurat.

Dalam tugas akhir ini digunakan metode image component labelling

dalam melakukan pembentukan suatu objek dalam citra dan metode shape factor

untuk melakukan pengenalan objek bedasarkan bentuk morfologinya.

Dengan kedua metode tersebut di dapatkan tingkat keberhasilan perangkat

lunak dalam mengenali dan mengklasifikasian empat macam objek dalam tiga kali

percobaan mencapai 94,65% dan keberhasilan perangkat lunak dalam melakukan

penghitungan objek secara keseluruhan dalam tiga kali percobaan mencapai

99,73%.

(2)

ii

Universitas Kristen Maranatha

DIGITAL IMAGE PROCESSING APPLICATION FORCOUNTING

THE NUMBER OF OBJECTS IN AN OBSERVATED AREA

Rubinhut Sihar / 0322161

Department of Electrical Engineering, Faculty of Technique

Maranatha Christian University

Jl. Prof. Drg. Suria Sumantri 65, Bandung 40164, Indonesia

Email : rubinhut@gmail.com

ABSTRACT

This final project, used be realize a software can be count the number of

objects and classifying by used digital image processing technology, the created

software created equipments a tools witches can be count a number object at

observed area swiftly and accurate.

Image component labeling method used for created object at image and

shape factor used for object identification based on morphologically form.

By using both of the method, software level success for identifying and

classify four objects within three times experiment effort to 94,65% and for to do

a object count for three times experiment effort to 99,73%.

(3)

v

Universitas Kristen Maranatha

DAFTAR ISI

ABSTRAK i

ABSTRACT ii

KATA PENGANTAR iii

DAFTAR ISI v

DAFTAR TABEL vii

DAFTAR GAMBAR viii

BAB I PENDAHULUAN 1

1.1 Latar Belakang 1

1.2 Identifikasi Masalah 1

1.3 Perumusan Masalah 1

1.4 Tujuan 1

1.5 Pembatasan Masalah 2

1.6 Sistematika Penulisan 2

BAB II LANDASAN TEORI 4

2.1 Pengolahan Citra Digital 4

2.1.1 Pengantar Pengolahan Citra Digital 4

2.1.2 Citra Kontinyu 4

2.1.3 Citra Digital 4

2.1.4 Pixel 5

2.1.5 Warna Pada Citra Digital 6

2.1.5.1 RGB 7

2.1.5.2 Grayscale 7

2.1.5.3 Biner 8

2.1.6 Tresholding 9

2.1.7 Histogram 10

2.1.8 Cropping 11

2.1.9 Pixel Tetangga 12

2.1.10 Shape Factor 12

2.2 C# 13

2.2.1 Pengolahan Citra Digital menggunakan C# 13

2.2.1.1 Class GDI + 14

(4)

vi

Universitas Kristen Maranatha

BAB III PERANCANGAN PERANGKAT LUNAK 17

3.1 Perancangan Antarmuka Perangkat Lunak 17

3.1.1 Perancangan Antarmuka Form Utama 18

3.1.2 Perancangan Antarmuka Form Splash Screen 20

3.1.3 Perancangan Antarmuka Form Konverter ke Biner 21 3.1.4 Perancangan Antarmuka Form Konverter ke Kode 22

3.1.5 Perancangan Antarmuka Form Klasifikasi Objek 24

3.2 Alur Kerja Perangkat Lunak 26

3.2.1 Konversi Citra ke Grayscale 28

3.2.2 Konversi ke Biner 29

3.2.3 Pemisahan Latar Belakang dan Objek 31

3.2.4 Terjemahkan Citra ke Dalam Bentuk Objek 32

3.2.5 Labelisasi 33

3.2.6 Pengenalan dan Pengklasifikasian Objek 36

3.2.7 Penghitungan Banyak Objek 40

3.2.8 Tampilkan Banyak Objek Perklasifikasi 40

BAB IV PENGAMATAN DAN ANALISA DATA 41

4.1 Pengamatan 41

4.1.1 Objek Pengamatan 40

4.1.2 Citra Pengamatan 42

4.2 Analisis Data 49

BAB V KESIMPULAN DAN SARAN 56

5.1 Kesimpulan 56

5.2 Saran 56

DAFTAR PUSTAKA 57

LAMPIRAN A - SCREEN SHOOT A

LAMPIRAN B - LISTING PROGRAM B

LAMPIRAN C - PENGENALAN VISUAL C# C

(5)

vii

Universitas Kristen Maranatha

DAFTAR TABEL

Tabel 3.1 Kontrol dan properti pada form utama 19 Tabel 3.2 Kontrol dan properti pada splash screen 20 Tabel 3.3 Kontrol dan properti pada form konverter ke biner 22 Tabel 3.4 Kontrol dan properti pada form konverter ke kode 23 Tabel 3.5 Kontrol dan properti pada form klasifikasi 25 Tabel 4.1 Objek - objek yang digunakan dalam pengamatan 41

Tabel 4.2 Data pengamatan - 1 objek 1 jenis 43

Tabel 4.3 Data pengamatan - 2 objek 1 jenis 44

Tabel 4.4 Data pengamatan - 3 objek 1 jenis 45

Tabel 4.5 Data pengamatan - Banyak objek 3 jenis 46 Tabel 4.6 Data pengamatan - Banyak objek 4 jenis 47 Tabel 4.7 Data pengamatan - Banyak objek 5 jenis 48

Tabel 4.8 Data pengamatan penghitungan objek 50

Tabel 4.9 Data pengamatan pengklasifikasian objek 51

(6)

viii

Universitas Kristen Maranatha

DAFTAR GAMBAR

Gambar 2.1 Contoh pixel yang di dapat dari perbesaran suatu citra digital

5

Gambar 2.2 Nilai - nilai tingkat kecerahan suatu warna pada suatu pixel

6

Gambar 2.3 Warna - warna yang dapat dihasilkan oleh ketiga layer warna RGB

7

Gambar 2.4 Grafik histogram pada suatu citra digital 11 Gambar 2.5 Proses cropping pada citra digital 11

Gambar 2.6 Pixel - pixel tetangga 12

Gambar 3.1 Diagram perancangan form 17

Gambar 3.2 Form Utama 18

Gambar 3.3 Form Splash Screen 21

Gambar 3.4 Form konverter ke biner 21

Gambar 3.5 Form konverter ke kode 23

Gambar 3.6 Form klasifikasi objek 24

Gambar 3.7 Diagram alir alur kerja perangkat lunak 27 Gambar 3.8 Diagram alir alur kerja konversi citra ke grayscale 28 Gambar 3.9 Diagram alir alur kerja konversi citra ke biner 31 Gambar 3.10 Diagram alir alur kerja pemisahan objek dengan latar

belakang

32

Gambar 3.11 Diagram alir alur kerja konversi citra ke kode 33 Gambar 3.12 Diagram alir alur kerja labelisasi 35 Gambar 3.13 Diagram alir alur kerja menentukan shape factor 37 Gambar 3.14 Diagram alir alur kerja menentukan klasifikasi bedasarkan

shape factor

38

Gambar 4.1 Objek - objek yang digunakan dalam pengujian 41

(7)

LAMPIRAN A

(8)

A - 1

Gambar A.1 Screen Shoot Splash Screen

(9)

A - 2

Gambar A.3 Screen Shoot Form Dialog Konverter ke Biner

(10)

A - 3

(11)

LAMPIRAN B

(12)
(13)
(14)

B - 3 deactivate_CONTROL();

}

publicvoid setJUMLAH_PRI(int _JUMLAH_PRIx) {

_JUMLAH_PRI = _JUMLAH_PRIx; }

publicvoid setJUMLAH_SLV(int _JUMLAH_SLVx) {

_JUMLAH_SLV = _JUMLAH_SLVx; }

publicvoid setTOLERANCE_PRI(int _TOLERANCE_PRIx) {

_TOLERANCE_PRI = _TOLERANCE_PRIx; }

publicvoid setTOLERANCE_SLV(int _TOLERANCE_SLVx) {

_TOLERANCE_SLV = _TOLERANCE_SLVx; }

publicvoid setID_PRI(int _ID_PRIx) {

_ID_PRI = _ID_PRIx; }

publicvoid setID_SLV(int _ID_SLVx) {

_ID_SLV = _ID_SLVx; }

publicvoid setOBJECT_ID(paramsint[] _OBJECT_IDx) {

_OBJECT_ID = _OBJECT_IDx; }

publicvoid setOBJECT_X_START(paramsint[] _OBJECT_X_STARTx) {

_OBJECT_X_START = _OBJECT_X_STARTx; }

(15)

B - 4

(16)
(17)

B - 6

privatevoid cmd_NEW_Click(object sender, EventArgs e) {

OpenFileDialog dlg_OPEN_PICTURE = new OpenFileDialog();

dlg_OPEN_PICTURE.Filter = "Bitmap Image|*.bmp";

dlg_OPEN_PICTURE.Title = "Select Bitmap Image File (BMP)"; dlg_OPEN_PICTURE.InitialDirectory = Application.StartupPath; dlg_OPEN_PICTURE.RestoreDirectory = false;

dlg_OPEN_PICTURE.Multiselect = false; dlg_OPEN_PICTURE.FilterIndex = 0; dlg_OPEN_PICTURE.ShowDialog();

if (dlg_OPEN_PICTURE.FileName != "") {

Bitmap _TMPGambar = new Bitmap(dlg_OPEN_PICTURE.FileName);

pic_DISPLAY.Image = _TMPGambar;

pic_DISPLAY.SizeMode = PictureBoxSizeMode.StretchImage;

activate_CONTROL();

cmd_NEW.Enabled = false;

cmd_NEW.ForeColor = Color.Gray; }

cmd_CLOSE.Enabled = true;

cmd_COLOR2GRAYSCALE.Enabled = true; cmd_COLOR2BINARY.Enabled =true; cmd_IMAGE2CODE.Enabled = false; cmd_LABELLING.Enabled = false; cmd_CLASSIFICATION.Enabled = false; cmd_REPORT.Enabled = false;

cmd_CLOSE.ForeColor = Color.Black;

cmd_COLOR2GRAYSCALE.ForeColor = Color.Black; cmd_COLOR2BINARY.ForeColor = Color.Black; cmd_IMAGE2CODE.ForeColor = Color.Gray; cmd_LABELLING.ForeColor = Color.Gray; cmd_CLASSIFICATION.ForeColor = Color.Gray; cmd_REPORT.ForeColor = Color.Gray;

(18)

B - 7

privatevoid cmd_CLOSE_Click(object sender, EventArgs e) {

cmd_NEW.Enabled = true;

cmd_NEW.ForeColor = Color.Black;

pic_DISPLAY.Image =

iCout_U____Does_it.Properties.Resources.jpg_INITIAL;

deactivate_CONTROL(); }

privatevoid cmd_COLOR2GRAYSCALE_Click(object sender, EventArgs e) {

ImageProcessing Processing = new ImageProcessing();

Processing.setGAMBAR((Bitmap)(pic_DISPLAY.Image)); Processing.ConvertToGrayScale();

pic_DISPLAY.Image = (Bitmap)Processing.GAMBAR;

pic_DISPLAY.SizeMode = PictureBoxSizeMode.StretchImage;

cmd_CLOSE.Enabled = true;

cmd_COLOR2GRAYSCALE.Enabled = false; cmd_COLOR2BINARY.Enabled = true; cmd_IMAGE2CODE.Enabled = false; cmd_LABELLING.Enabled = false; cmd_CLASSIFICATION.Enabled = false; cmd_REPORT.Enabled = false;

cmd_CLOSE.ForeColor = Color.Black;

cmd_COLOR2GRAYSCALE.ForeColor = Color.Gray; cmd_COLOR2BINARY.ForeColor = Color.Black; cmd_IMAGE2CODE.ForeColor = Color.Gray; cmd_LABELLING.ForeColor = Color.Gray; cmd_CLASSIFICATION.ForeColor = Color.Gray; cmd_REPORT.ForeColor = Color.Gray;

}

privatevoid cmd_COLOR2BINARY_Click(object sender, EventArgs e) {

(19)

B - 8

(20)

B - 9

(21)

B - 10

(22)

B - 11

cmd_CLASSIFICATION.ForeColor = Color.Gray; cmd_REPORT.ForeColor = Color.Black;

}

privatevoid cmd_REPORT_Click(object sender, EventArgs e) {

saya = this;

frm_REPORT _frmREPORT = new frm_REPORT();

_frmREPORT.ShowDialog(); }

} }

B.3 LISTING PROGRAM PADA FORM BINARY

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace iCout_U____Does_it {

publicpartialclass frm_BINARY : Form {

ImageProcessing Processing = new ImageProcessing();

private Bitmap _TMPGambar;

public frm_BINARY() {

InitializeComponent();

(23)

B - 12

(24)

B - 13

frm_MAIN.saya.pic_DISPLAY.Image = (Bitmap)Processing.GAMBAR; frm_MAIN.saya.pic_DISPLAY.SizeMode =

PictureBoxSizeMode.StretchImage; }

else

{

trc_TRESHOLD.Enabled = true;

Processing.setGAMBAR(_TMPGambar);

Processing.ConvertToBinaryManual(trc_TRESHOLD.Value);

frm_MAIN.saya.pic_DISPLAY.Image = (Bitmap)Processing.GAMBAR; frm_MAIN.saya.pic_DISPLAY.SizeMode =

PictureBoxSizeMode.StretchImage;

lbl_TRESHOLD.Text = Convert.ToString(trc_TRESHOLD.Value);

}

trc_TRESHOLD.Value = 0; lbl_TRESHOLD.Text = "0"; }

privatevoid trc_TRESHOLD_Scroll(object sender, EventArgs e) {

Processing.setGAMBAR(_TMPGambar);

Processing.ConvertToBinaryManual(trc_TRESHOLD.Value);

frm_MAIN.saya.pic_DISPLAY.Image = (Bitmap)Processing.GAMBAR; frm_MAIN.saya.pic_DISPLAY.SizeMode =

PictureBoxSizeMode.StretchImage;

lbl_TRESHOLD.Text = Convert.ToString(trc_TRESHOLD.Value); }

} }

B.4 LISTING PROGRAM PADA FORM CODE

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

(25)

B - 14

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace iCout_U____Does_it {

publicpartialclass frm_CODE : Form {

privatestring _PATH; privatestring _MODE; privatedouble _ZOOM;

public frm_CODE() {

InitializeComponent(); }

publicvoid setPATH(string _PATHx) {

_PATH = _PATHx; }

publicvoid setMODE(string _MODEx) {

_MODE = _MODEx; }

privatevoid frm_CODE_Load(object sender, EventArgs e) {

ComputerVision Vision = new ComputerVision();

Vision.setGAMBAR((Bitmap)frm_MAIN.saya.pic_DISPLAY.Image);

if (_MODE == "BINARY") { Vision.BINStreamText(_PATH); } elseif (_MODE == "RGB") { Vision.RGBStreamText(_PATH); }

elseif (_MODE == "LABELLING") { Vision.LABStreamText(_PATH); }

txt_CODE.LoadFile(_PATH, RichTextBoxStreamType.PlainText);

_ZOOM = 1.0; }

(26)

B - 15

(27)

B - 16

publicvoid setOBJECT_KELILING(paramsdouble[] _OBJECT_KELILINGx) {

(28)

B - 17

publicvoid setOBJECT_LUAS(paramsdouble[] _OBJECT_LUASx) {

_OBJECT_LUAS = _OBJECT_LUASx; }

publicvoid setOBJECT_SHAPE(paramsdouble[] _OBJECT_SHAPEx) {

_OBJECT_SHAPE = _OBJECT_SHAPEx; }

publicvoid setJUMLAH(int _JUMLAHx) {

_JUMLAH = _JUMLAHx; }

privatevoid Processor() {

double _TOLERANCE; double _TOLERANCE_UP; double _TOLERANCE_DOWN;

int[] _OBJECT = newint[_JUMLAH + 1];

int _BANYAK;

bool _CHECK = false;

int _INDEKS; int _MODE;

_MODE = 0; _INDEKS = 0; _TOLERANCE = 10; _BANYAK = 0;

for (int c = 1; c <= _JUMLAH; c++) {

foreach (int u in _OBJECT) {

if (u == _OBJECT_ID[c]) {

(29)
(30)

B - 19

Processing_1st.ShowPartial(_OBJECT_X_START[c], _OBJECT_Y_START[c], _OBJECT_X_END[c], _OBJECT_Y_END[c]);

pic_OBJECT_1st.Image = ((Bitmap)Processing_1st.GAMBAR); pic_OBJECT_1st.SizeMode = PictureBoxSizeMode.StretchImage;

lbl_OBJECT_1st.Text = Convert.ToString(_BANYAK); }

elseif (_MODE == 2) {

ImageProcessing Processing_2nd = new ImageProcessing();

Processing_2nd.setGAMBAR((Bitmap)(frm_MAIN.saya.pic_DISPLAY.Image)); Processing_2nd.ShowPartial(_OBJECT_X_START[c],

_OBJECT_Y_START[c], _OBJECT_X_END[c], _OBJECT_Y_END[c]);

pic_OBJECT_2nd.Image = ((Bitmap)Processing_2nd.GAMBAR); pic_OBJECT_2nd.SizeMode = PictureBoxSizeMode.StretchImage;

lbl_OBJECT_2nd.Text = Convert.ToString(_BANYAK); }

elseif (_MODE == 3) {

ImageProcessing Processing_3rd = new ImageProcessing();

Processing_3rd.setGAMBAR((Bitmap)(frm_MAIN.saya.pic_DISPLAY.Image)); Processing_3rd.ShowPartial(_OBJECT_X_START[c],

_OBJECT_Y_START[c], _OBJECT_X_END[c], _OBJECT_Y_END[c]);

pic_OBJECT_3rd.Image = ((Bitmap)Processing_3rd.GAMBAR); pic_OBJECT_3rd.SizeMode = PictureBoxSizeMode.StretchImage;

lbl_OBJECT_3rd.Text = Convert.ToString(_BANYAK); }

elseif (_MODE == 4) {

ImageProcessing Processing_4th = new ImageProcessing();

Processing_4th.setGAMBAR((Bitmap)(frm_MAIN.saya.pic_DISPLAY.Image)); Processing_4th.ShowPartial(_OBJECT_X_START[c],

(31)

B - 20

pic_OBJECT_4th.Image = ((Bitmap)Processing_4th.GAMBAR); pic_OBJECT_4th.SizeMode = PictureBoxSizeMode.StretchImage;

lbl_OBJECT_4th.Text = Convert.ToString(_BANYAK); }

_BANYAK = 0; }

_CHECK = false; }

}

privatevoid frm_CLASSIFICATION_Load(object sender, EventArgs e) {

double _JUMLAH_KLAS; double _ERROR_KLAS;

double _JUMLAH_OBJ1; double _JUMLAH_OBJ2; double _JUMLAH_OBJ3; double _JUMLAH_OBJ4;

pic_DISPLAY.Image = (Bitmap)(frm_MAIN.saya.pic_DISPLAY.Image); pic_DISPLAY.SizeMode = PictureBoxSizeMode.StretchImage;

Processor();

_JUMLAH_OBJ1 = Convert.ToDouble(lbl_OBJECT_1st.Text); _JUMLAH_OBJ2 = Convert.ToDouble(lbl_OBJECT_2nd.Text); _JUMLAH_OBJ3 = Convert.ToDouble(lbl_OBJECT_3rd.Text); _JUMLAH_OBJ4 = Convert.ToDouble(lbl_OBJECT_4th.Text);

_JUMLAH_KLAS = _JUMLAH_OBJ1 + _JUMLAH_OBJ2 + _JUMLAH_OBJ3 + _JUMLAH_OBJ4;

_ERROR_KLAS = (((_JUMLAH - _JUMLAH_KLAS) / _JUMLAH) * 100.0);

lbl_JML_KLASIFIKASI.Text = Convert.ToString(_JUMLAH_KLAS); lbl_JML_ERROR.Text = Convert.ToString(_ERROR_KLAS) + " %";

(32)

B - 21

privatevoid cmd_OK_Click(object sender, EventArgs e) {

this.Close(); }

} }

B.6 LISTING PROGRAM PADA FORM CLASS IMAGE PROCESSING

using System;

using System.Collections;

using System.Collections.Generic;

using System.Drawing;

using System.Drawing.Imaging;

using System.IO;

using System.Linq;

using System.Text;

namespace iCout_U____Does_it {

publicclass ImageProcessing {

private Bitmap _GAMBAR;

public ImageProcessing() {

}

public Bitmap GAMBAR {

get

{

return _GAMBAR; }

}

publicvoid setGAMBAR(Bitmap IMAGE) {

(33)
(34)
(35)

B - 24

_BIN = (_BIN <= _TRESHOLD ? _BIN = 0 : 255);

_pTempGAMBAR[0] = (byte)_BIN; _pTempGAMBAR[1] = (byte)_BIN; _pTempGAMBAR[2] = (byte)_BIN; _pTempGAMBAR[3] = _pGAMBAR[3];

_pGAMBAR += 4; _pTempGAMBAR += 4; }

_pGAMBAR += _dGAMBAR.Stride - (_dGAMBAR.Width * 4); _pTempGAMBAR += _dTempGAMBAR.Stride -

(_dTempGAMBAR.Width * 4); }

}

_TempGAMBAR.UnlockBits(_dTempGAMBAR); _GAMBAR.UnlockBits(_dGAMBAR);

_GAMBAR = (Bitmap)_TempGAMBAR.Clone(); }

publicvoid ConvertToBinaryAutomatic() {

int[,] _PIXEL = newint[_GAMBAR.Width, _GAMBAR.Height]; int[] _HISTOGRAM = newint[256];

int _THRESHOLD; int _INDEX;

_THRESHOLD = 0; _INDEX = 0;

ConvertToGrayScale(); _PIXEL = Pixel("R");

_HISTOGRAM = Histogram("R");

Bitmap _TempGAMBAR = new Bitmap(_GAMBAR.Width, _GAMBAR.Height, PixelFormat.Format32bppArgb);

BitmapData _dGAMBAR = _GAMBAR.LockBits(new Rectangle(0, 0, _GAMBAR.Width, _GAMBAR.Height),

(36)
(37)
(38)
(39)

B - 28 }

} }

B.6 LISTING PROGRAM PADA FORM CLASS COMPUTER VISION

using System;

using System.Collections;

using System.Collections.Generic;

using System.Drawing;

using System.Drawing.Imaging;

using System.IO;

using System.Linq;

using System.Text;

namespace iCout_U____Does_it {

publicclass ComputerVision {

private Bitmap _GAMBAR;

public ComputerVision() {

}

public Bitmap GAMBAR {

get

{

return _GAMBAR; }

}

publicvoid setGAMBAR(Bitmap IMAGE) {

(40)
(41)

B - 30 publicstring BINStreamText(string _PATH) {

ImageProcessing Processing = new ImageProcessing(); StreamWriter Text = new StreamWriter(_PATH);

string _R;

int[,] _RE = newint[_GAMBAR.Width, _GAMBAR.Height];

Processing.setGAMBAR(_GAMBAR);

_RE = Processing.Pixel("R");

for (int y = 0; y < _GAMBAR.Height; y++) {

for (int x = 0; x < _GAMBAR.Width; x++) {

_R = Convert.ToString(_RE[x, y]);

_R = (_R == "255" ? "1" : "0");

Text.Write(_R + " "); }

Text.WriteLine(""); }

Text.Close();

return _PATH; }

publicstring LABStreamText(string _PATH) {

ImageProcessing Processing = new ImageProcessing(); XMLProcessor XML = new XMLProcessor();

StreamWriter Text = new StreamWriter(_PATH);

int _COUNTER = 1; int _JUMLAH = 0; int _INDEKS; int _ID = 0;

int _CEKBORDER = 0;

(42)
(43)
(44)
(45)
(46)
(47)
(48)
(49)

B - 38 _CEKBORDER = 0;

_CEKBORDER = (_PIXEL[x, (y + 1)] == 0 ? _CEKBORDER + 1 : _CEKBORDER);

_CEKBORDER = (_PIXEL[x, (y - 1)] == 0 ? _CEKBORDER + 1 : _CEKBORDER);

_CEKBORDER = (_PIXEL[(x + 1), y] == 0 ? _CEKBORDER + 1 : _CEKBORDER);

_CEKBORDER = (_PIXEL[(x - 1), y] == 0 ? _CEKBORDER + 1 : _CEKBORDER);

_OBJECT_KELILING[_INDEKS] = (_CEKBORDER > 0 ? _OBJECT_KELILING[_INDEKS] + 1 : _OBJECT_KELILING[_INDEKS]); _OBJECT_SHAPE[_INDEKS] =

((_OBJECT_KELILING[_INDEKS] * _OBJECT_KELILING[_INDEKS]) / _OBJECT_LUAS[_INDEKS]);

} else

{

foreach (int a in _OBJECT_ID) {

if (a > 0) {

_INDEKS++; }

}

_INDEKS = (_INDEKS < 1 ? 1 : (_INDEKS + 1));

_OBJECT_ID[_INDEKS] = _PIXEL[x, y]; _OBJECT_X_START[_INDEKS] = x; _OBJECT_X_END[_INDEKS] = x; _OBJECT_Y_START[_INDEKS] = y; _OBJECT_Y_END[_INDEKS] = y; _OBJECT_LUAS[_INDEKS]++;

_CEKBORDER = 0;

(50)
(51)

B - 40

(52)
(53)

B - 42

publicvoid setOBJECT_X_START(paramsint[] _OBJECT_X_STARTx) {

_OBJECT_X_START = _OBJECT_X_STARTx; }

publicvoid setOBJECT_Y_START(paramsint[] _OBJECT_Y_STARTx) {

_OBJECT_Y_START = _OBJECT_Y_STARTx; }

publicvoid setOBJECT_X_END(paramsint[] _OBJECT_X_ENDx) {

_OBJECT_X_END = _OBJECT_X_ENDx; }

publicvoid setOBJECT_Y_END(paramsint[] _OBJECT_Y_ENDx) {

_OBJECT_Y_END = _OBJECT_Y_ENDx; }

publicvoid setOBJECT_KELILING(paramsdouble[] _OBJECT_KELILINGx) {

_OBJECT_KELILING = _OBJECT_KELILINGx; }

publicvoid setOBJECT_LUAS(paramsdouble[] _OBJECT_LUASx) {

_OBJECT_LUAS = _OBJECT_LUASx; }

publicvoid setOBJECT_SHAPE(paramsdouble[] _OBJECT_SHAPEx) {

_OBJECT_SHAPE = _OBJECT_SHAPEx; }

publicvoid setJUMLAH(int _JUMLAHx) {

_JUMLAH = _JUMLAHx; }

publicvoid CreateXML() {

(54)

B - 43

_PATHx = Path.GetDirectoryName(_PATH) + "\\" + Path.GetFileNameWithoutExtension(_PATH) + ".icup";

XmlTextWriter myXmlTextWriter = new XmlTextWriter(_PATHx, System.Text.Encoding.UTF8);

myXmlTextWriter.Formatting = Formatting.Indented; myXmlTextWriter.WriteStartDocument(false);

myXmlTextWriter.WriteComment("ICout U! - Project File");

myXmlTextWriter.WriteStartElement("icup");

myXmlTextWriter.WriteStartElement("configuration", null);

myXmlTextWriter.WriteElementString("pic_author", null, "Author Gambar");

myXmlTextWriter.WriteElementString("pic_name", null, "Nama Gambar");

myXmlTextWriter.WriteElementString("pic_crc", null, "CRC Gambar"); myXmlTextWriter.WriteElementString("pic_format", null, "Format Gambar");

myXmlTextWriter.WriteEndElement();

myXmlTextWriter.Flush();

myXmlTextWriter.WriteStartElement("information", null);

for (int v = 1; v <= _JUMLAH; v++) {

myXmlTextWriter.WriteStartElement("object", null);

myXmlTextWriter.WriteElementString("object-id", null, Convert.ToString(_OBJECT_ID[v]));

myXmlTextWriter.WriteElementString("object-start-x", null, Convert.ToString(_OBJECT_X_START[v]));

myXmlTextWriter.WriteElementString("object-start-y", null, Convert.ToString(_OBJECT_Y_START[v]));

myXmlTextWriter.WriteElementString("object-end-x", null, Convert.ToString(_OBJECT_X_END[v]));

(55)

B - 44

myXmlTextWriter.WriteElementString("object-luas", null, Convert.ToString(_OBJECT_LUAS[v]));

myXmlTextWriter.WriteElementString("object-keliling", null, Convert.ToString(_OBJECT_KELILING[v]));

myXmlTextWriter.WriteElementString("object-shapefactor", null, Convert.ToString(_OBJECT_SHAPE[v]));

myXmlTextWriter.WriteEndElement(); }

myXmlTextWriter.WriteEndElement();

myXmlTextWriter.WriteEndElement();

myXmlTextWriter.Flush(); myXmlTextWriter.Close(); }

(56)

LAMPIRAN C

(57)

C-1

PENGENALAN VISUAL C#

Microsoft Visual C#.NET adalah sebuah bahasa pemrograman baru dalam

dunia teknologi informasi, dengan berbasiskan platform baru yang di kembangkan

oleh Microsoft sebagai salah satu produsen perangkat lunak yang cukup dominan

yakni platform .NET Framework, kelebihan dari digunakannya platform baru ini

tidak lain adalah .NET Framework menawarkan kompabitilas dan portabilitas yang

sangat signifingkan jika di bandingkan dengan bahasa penprograman lain di luar

.NET Framework.

Dengan teknologi .NET Framework sangatlah memungkinkan untuk

mendesain sebuah perangkat lunak yang dapat berjalan di berbagai sistem operasi,

prosesor, maupun berbagai peralatan elektronik yang mendukung platform .NET

seperti PDA, SMART Phone dan peralatan elektronik lainnya. Kompabilitas yang

sangat luas tersebut di mungkinkan tanpa melakukan compile ulang terhadap

perangkat lunak yang telah dibuat, hal tersebut di mungkinkan karena teknologi .NET

Framework mengadopsi teknologi virtualisasi CPU, sehingga perangkat lunak yang

telah di kompilasi adalah perangkat lunak yang berjalan di atas framework virtual

sehingga nantinya perangkat lunak tersebut tidak bergantung pada sistem operasi

(58)

C-2

C. 1 Integrated Development Environment ( IDE )

Gambar C.1 IDE Visual Studio 2008

Dalam melakukan pemrograman Visual C# tidak di perlukan suatu editor

khusus, cukup dengan aplikasi teks editor seperti notepad, programmer dapat

membuatu suatu perangkat lunak yang berbasiskan Visual C#, tetapi untuk

membangun suatu perangkat yang memiliki tingkat kompleksitas yang tinggi maka

diperlukan suatu “alat” untuk membantu dalam melakukan perancangan perangkat

lunak mulai dari perancangan antar muka sampai penulisan kode program, oleh

karena itu digunakan suatu IDE (Integrated Development Environment) sebagai alat

bantu dalam membangun suatu perangkat lunak. Pada Gambar C.1 dapat dilihat

bahwa IDE dari Visual Studio 2008 memiliki beberapa bagian, berikut adalah bagian

(59)

C-3

Menu Bar, merupakan tempat menampilkan menu Visual Studio seperti File,

Edit, View, Project, Build, Debug, Data, Format, Tools, Text, Window, Help.

Jendela Toolbox, jendela ini berisi komponen - komponen atau objek-objek visual untuk melakukan pemrograman.

Jendela Form Designer, merupakan tempat untuk merancang antarmuka perangkat lunak, objek – objek dari jendela Toolbox akan di tempatkan di jendela ini.

Jendela Properties, adalah jendela berisikan karakteristik dari form dan

objek-objek yang ada dalam form tersebut seperti ukuran, posisi, nama

tampilan dan lain - lain.

Jendela Error List, adalah jendela yang berfungsi untuk menunjukan

kesalahan – kesalahan yang terjadi ketika kompilasi perangkat lunak di lakukan.

Jendela Solution Explorer, pada jendela ini semua komponen – komponen dari perangkat lunak yang digunakan dalam percangan dapat dilihat.

C. 2 Jenis – jenis Kontrol pada Visual C#

(60)

C-4

Gambar C.2 Menunjukan kontrol – kontrol yang sering digunakan dalam membangun suatu perangkat lunak, untuk lebih jelas mengenai fungsi dan deskripsi

dari kontrol – kontrol diatas dapat dilihat pada tabel C.1.

Tabel C.1 Fungsi dan deskripsi dari kontrol – kontrol dalam kategori Command Controls.

Nama Kontrol Keterangan

Button Digunakan untuk membangkitkan event proses tertentu ketika pemakai melakukan operasi klik terhadap kontrol ini.

CheckBox Digunakan untuk melakukan satu atau lebih pilihan bernilai yes/no, true/false.

CheckedListBox Merupakan gabungan dari ListBox dan CheckBox, dan memiliki fungsi sama seperti CheckBox. ComboBox Digunakan untuk menampung suatu item data dengan style dropdown.

DateTimePicker Digunakan untuk mengambil data yang berupa waktu, untuk selanjutnya di lakukan proses. Label Digunakan untuk menampilkan teks yang tidak dapat diubah oleh pemakai.

LinkLabel Digunakan untuk menampilkan teks yang tidak dapat diubah oleh pemakai, tidak seperti label biasa label jenis ini dapat diisi dengan link.

ListBox Digunakan untuk menampung suatu item data dengan style datalist.

ListView Digunakan untuk menampung komponen - komponen dalam suatu perangkat lunak.

MaskedTextBox Digunakan untuk menampung suatu teks yang memiliki ukuran terbatas, tetapi menampilkan text dengan format yang telah di tentukan.

MonthCalendar Digunakan untuk mengambil data yang hanya bernilai bulan dari suatu waktu. NotifyIcon Digunakan untuk membuat suatu icon yang akan bereaksi jika suatu event terpenuhi. NumericUpDown Digunakan untuk mengambil nilai numerik.

PictureBox Digunakan untuk menampilkan suatu gambar yang akan di proses atau telah diproses. Pointer Mengembalikan mouse pointer jika telah selesai melakukan penambahan kontrol ke form. ProgressBar Digunakan untuk mengetahui seberapa persentase kemajuan suatu proses yang sedang di lakukan. RadioButton Digunakan untuk melakukan hanya satu pilihan dan bernilai true/false.

RichTextBox Digunakan untuk menampung suatu teks yang cukup besar. TextBox Digunakan untuk menampung teks yang memiliki ukuran terbatas.

ToolTip Digunakan untuk memberikan informasi kepada pengguna perangkat lunak mengenai kontrol yang ada pada perangkat lunak tersebut.

TreeView Digunakan untuk menampilkan data - data dengan bentuk pohon. WebBrowser Digunakan untuk menampilkan situs dari suatu situs di internet.

Selain menggunakan kontrol – kontrol yang ada pada kategori Common Controls, dalam melakukan perancangan suatu perangkat lunak dibutuhkan juga

kontrol – kontrol yang berfungsi sebagai alat interaksi antara perangkat lunak dengan pengguna perangkat lunak itu sendiri. Kontrol – kontrol yang memiliki fungsi seperti yang telah disebutkan terdapat pada kontrol dengan kategori Dialogs ( Gambar C.3 ),

(61)

C-5

Gambar C.3 Kontrol pada kategori Dialogs

Tabel C.2 Fungsi dan deskripsi dari kontrol – kontrol dalam kategori Dialogs.

Nama Kontrol Keterangan

Pointer Mengembalikan mouse pointer jika telah selesai melakukan penambahan kontrol ke form.

ColorDialog Kontrol dialog yang akan memunculkan suatu dialog yang meminta pemakai untuk memilih suatu warna.

FolderBrowser Dialog

Kontrol dialog yang akan memunculkan suatu dialog yang meminta pemakai untuk memilih suatu folder.

FontDialog

Kontrol dialog yang akan memunculkan suatu dialog yang meminta pemakai untuk memilih suatu jenis huruf beserta atributnya.

OpenFileDialog

Kontrol dialog yang akan memunculkan suatu dialog yang meminta pemakai untuk memilih suatu alamat di mana suatu file akan dibuka.

SaveFileDialog

Kontrol dialog yang akan memunculkan suatu dialog yang meminta pemakai untuk memilih suatu alamat di mana suatu file akan disimpan.

C. 3 Dasar Pemrograman Visual C# C. 3. 1 Variabel

Sebagai bahasa pemrograman yang mengadopsi gaya penulisan C\C++ maka

C# juga memiliki “perilaku” yang tidak berbeda jauh dengan C\C++, salah satu

contoh nyata dari “perilaku” ini adalah bagaimana C# memperlakukan variabel –

variabel yang akan di tulis dengan bahasa pemrograman ini bersifat strongly-typed

yang berarti setiap variabel yang ada pada C# haruslah memiliki suatu tipe data

tertentu dan variabel yang terlah di deklarasikan sebagai variabel yang memiliki suatu

(62)

C-6

C# juga bersifat case sensitive yang berarti C# membedakan penggunaan huruf

kapital dan huruf kecil.

Berikut ini adalah aturan – aturan penamaan variabel dalam C# :

1. Nama variabel hanya diijinkan terdiri dari huruf, angka dan karakter

underscore ( _ ).

2. Variabel bersifat case sensitive.

3. Keyword tidak dapat digunakan sebagai nama variabel, terkecuali pada awal

keyword tersebut di tambahkan karakter @ ( untuk daftar keyword dapat

dilihat pada tabel C.3 )

Tabel C.3 Keyword pada C#

abstract event null switch

as explicit object this

base extern operator throw

bool finally out try

break fixed override typeof

byte float params uint

case for private ulong

catch foreach protected unchecked

char goto public unsafe

checked if readonly ushort

class implicit ref using

const in return virtual

continue int sbyte void

decimal interface sealed volatile

default internal short while

delegate is sizeof FALSE

do lock stackalloc TRUE

double long static

else namespace string

enum new struct

(63)

C-7

maka dapat dilihat pada tabel C.4. Pada tabel dilihat bahwa penentuan tipe data pada

suatu variabel dapat memberikan dampak yang cukup signifigkan dalam pembuatan

perangkat lunak, hal ini dapat dilihat bahwa beberapa tipe data menggunakan relatif

cukup banyak memory dalam penanganannya, bila semua variabel dalam perangkat

lunak yang akan di buat menggunakan tipe yang menggunakan memory yang relatif

boros tentunya mengakibatkan perangkat lunak tesebut akan berjalan kurang optimal.

Tabel C.4 Tipe Data pada C#

Tipe

Ukuran ( Dalam

Bit ) Range

bool - -

byte 8 0 sampai 255

char 16 0 sampai 65535

char - -

decimal 128 1.0 x 10-28 sampai 7.9 x 1028 double 64 5.0 x 10-324 sampai 1.7 x 10308

float 32 1.5 x 10-45 sampai 3.4 x 1038

int 32 -2147483648 sampai 2147483647

long 64

-9223372036854775808 sampai 9223372036854775807

sbyte 8 -128 sampai 127

short 16 -32768 sampai 32767

string - -

uint 32 0 sampai 4294967295

ulong 64 0 sampai 18446744073709551615

ushort 16

0 sampai 65535

C. 3. 2 Flow Control

Hal yang tidak kalah pentingnya dalam pembuatan suatu perangkat lunak

adalah flow control, dengan menggunakan sintaks sintaks flow control event event pada perangkat lunak yang dibangun dapat dengan mudah di kendalikan. Flow

control pada C# memiliki sintaksis bahasa yang sama dengan bahasa pemrograman

C\C++, kesamaan tersebut tidak hanya pada sintaksis melainkan juga pada

(64)

C-8

Berikut ini adalah beberapa sintaks dari flow control beserta contoh

penggunaannya dalam kode program :

1. if

if statement digunakan untuk meneksekusi kode program jika kondisi tertentu terpenuhi.

2. if - else

Merupakan variasi dari statement if, selain menetukan langkah apa yang harus

dilakukan jika suatu kondisi terpenuhi, juga dapat menetukan langkah apa

yang dilakukan apabila kondisi tersebut tidak terpenuhi.

3. switch

switch merupakan variasi dari statement if - else. Statement ini biasa digunakan untuk mengecek beberapa kemungkinan dari suatu variabel.

Berbeda dengan C yang pada statement switch hanya bisa menggunakan

variabel numerik, C# dapat menggunakan string.

4. while

while statement berguna untuk melakukan perulangan selama kondisi bernilai true. Pengecekan kondisi dilakukan di awal, sehingga memungkinkan proses

loop tidak dijalankan sama sekali.

5. do - while

do - while merupakan variasi dari statement while. Bedanya pengecekan variabel dilakukan di akhir. Ini berarti bahwa badan loop akan dijalankan

minimal sekali.

6. for

Seperti keluarga bahasa C lainnya, for digunakan untuk melakukan

perulangan selama kondisi terpenuhi. Bedanya dengan while terdapat pada

deklarasi statement for dapat menetukan 3 hal, kondisi awal, kondisi akhir

perulangan ( kondisi pengecekan ) dan kondisi yang dilakukan tiap pada akhir

(65)

C-9 7. foreach

Bentuk iterasi khusus yang tidak berada di C adalah foreach, bentuk ini

sebenarnya diambil dari Visual Basic (for each). Statement foreach

digunakan untuk menelusuri suatu Collection, misalnya array.

C. 3. 3 Method

Method adalah bagian dari tubuh program yang mengimplementasikan suatu

action sehingga class atau object dapat bekerja. Beberapa method tersebut yakni :

1. Static Method

Method dapat di overload, artinya satu nama method dapat dipakai

berkali-kali selama dia memiliki sesuatu yang unik. Sesuatu yang unik pada method

tersebut dapat terdiri dari banyaknya parameter, type parameter atau modifier

parameter yang berbeda.

2. Non - Static Method

Static method dapat diakses hanya melalui class, sedangkan non-static method

hanya dapat diakses melalui instance.

C. 3. 4 Modifier

Modifier adalah keyword yang dipakai untuk menspesifikasikan deklarasi

pengaksesan (akses level) suatu member atau type. Modifier yang harus diperhatikan

dapat dilihat pada tabel C.5.

Tabel C.5 Jenis – jenis Modifier

Akes level Keterangan

Internal Akses dibatasi hanya pada project yang sama Private Akses dibatasi hanya pada type / class nya

Protected Akses dibatasi pada classnya saja atau type yang diturunkan dari class Public Akses tidak dibatasi

(66)

1

Universitas Kristen Maranatha

BAB I

PENDAHULUAN

1.1 Latar Belakang

Permasalahan dalam menghitung suatu objek tertentu dengan jumlah yang

relatif banyak pada sebuah daerah pengamatan, misalnya menghitung banyaknya

bintang dalam suatu daerah pengamatan atau menghitung banyaknya pohon dari

sebuah hutan homogen dapat dilakukan secara manual, tetapi hal ini cukup rumit

dan relatif cukup menyita waktu. Dengan bantuan teknologi pengolahan citra

digital maka permasalahan penghitungan objek seperti yang telah di paparkan

diatas dapat dipecahkan, dengan menangkap citra digital dari objek yang akan di

hitung dari ketinggian tertentu untuk mendapatkan gambar yang baik dan nantinya

diproses oleh komputer.

Untuk memecahkan masalah penghitungan objek tersebut maka pada tugas

akhir ini digunakan teknologi pengolahan citra digital dalam melakukan

penghitungan objek tersebut.

1.2 Identifikasi Masalah

1. Timbulnya masalah penggunaan waktu yang relatif lama jika melakukan

penghitungan obyek secara manual terutama obyek yang memiliki jumlah

yang cukup banyak.

2. Penerapan Teknologi Pengolahan Citra Digital untuk menghitung banyak

obyek pada suatu daerah pengamatan

1.3 Perumusan Masalah

1. Bagaimana menghitung banyak objek yang ada dalam suatu daerah

tertentu dengan menggunakan bantuan pengolahan citra digital ?

1.4 Tujuan

1. Membuat program penghitungan obyek dalam suatu daerah pengamatan

(67)

2

Universitas Kristen Maranatha 1.5 Pembatasan Masalah

1. Citra digital yang dapat diolah dibatasi hanya citra digital dengan format

BMP.

2. Citra digital yang akan diolah adalah citra digital dengan kualitas yang

baik, citra yang memiliki noise yang rendah dan tidak kabur (blur).

3. Asumsi antara latar belakang dan objek yang akan diproses memiliki

kekontrasan yang cukup, sehingga dapat dipisahkan.

4. Asumsi objek yang akan dihitung memiliki bentuk yang homogen.

5. Asumsi objek yang akan dihitung maksimal memiliki empat bentuk yang

berbeda.

6. Asumsi tidak terjadi irisan antara dua atau lebih objek yang akan diproses.

7. Jumlah pixel latar belakang lebih dominan.

1.6 Sistematika Penulisan

Sistematika pembahasan laporan tugas akhir ini disusun menjadi lima bab,

yaitu sebagai berikut :

Bab I : Pendahuluan

Bab ini membahas tentang latar belakang, identifikasi masalah, tujuan,

pembatasan masalah, serta sistematika pembahasan.

Bab II : Dasar Teori

Bab ini membahas tentang landasan teori - teori yang mendasari proses

perancangan perangkat lunak penghitung objek, teori – teori yang dibahas

dalam, bab ini antara lain teori konversi mode warna yang satu ke mode

warna lainnya dalam hal ini mengkonversi citra dengan bentuk warna

RGB ke bentuk warna grascale, mengkonversi citra dengan bentuk warna

grayscale ke bentuk warna biner. Selain itu pada bab ini juga dibahas teori

shape factor yaitu suatu teknik pengenalan objek bedasarkan

(68)

3

Universitas Kristen Maranatha Bab III : Perancangan dan Realisasi

Bab ini membahas tentang perancangan dan realisasi perangkat lunak

penghitung dan pengklasifikasi objek pada suatu citra digital. Perancangan

dan realisasi pada bab ini dimulai dengan perancangan antarmuka dari

perangkat lunak itu sendiri, lalu dilanjutkan dengan implementasi teori –

teori yang mendukung dari perancangan perangkat lunak ini kedalam

algoritma program. Pada bab ini juga dijelaskan bagaimana alur kerja dari

perangkat lunak dimulai dari tahap akusisi citra digital ke perangkat lunak,

konversi warna pada citra ke bentuk grayscale dan biner, pemisahan objek

dengan latar belakang, konversi citra digital ke bentuk kode, pengenalan

objek bedasarkan bentuk morfologi dan di akhiri dengan klasifikasi objek

dan menampilkanya ke pengguna.

Bab IV : Data Pengamatan dan Analisa

Bab ini membahas pengamatan, pengujian, dan analisa data dari perangkat

lunak yang telah dirancang dan direalisasikan. Pengujian yang dilakukan

pada perangkat lunak meliputi pengujian kemampuan perangkat lunak

dalam mengenali objek dan mengklasifikasikannya dan pengujian

kemampuan perangkat lunak menghitung banyak objek pada citra digital

itu sendiri.

Bab V : Kesimpulan dan Saran

Bab ini berisi tentang kesimpulan dan saran untuk perbaikan serta

(69)

56

Universitas Kristen Maranatha

BAB IV

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Adapun kesimpulan yang dapat ditarik dari tugas akhir ini adalah :

1. Perancangan perangkat lunak yang dapat menghitung dan

mengklasifikasikan objek pada suatu citra digital telah dapat di

realisasikan dengan keberhasilan perangkat lunak dalam mengidentifikasi

objek sebesar 94,65% dan persentase keberhasilan dalam melakukan

penghitungan jumlah objek sebesar 99,73% dalam tiga kali percobaan.

2. Hasil dari pengklasifikasian objek oleh program sangat bergantung dari

morfologi objek tersebut.

5.2 Saran

Berikut ini adalah saran – saran yang diajukan untuk pengembangan lebih

lanjut dari pembuatan tugas akhir ini :

1. Untuk pengembangan lebih lanjut, sebaiknya menggunakan beberapa

parameter pengenal objek untuk meningkatkan kepresisian dari program

dalam mengenali objek seperti parameter fourier, parameter eccentricity,

(70)

57

Universitas Kristen Maranatha

DAFTAR PUSTAKA

1. Acharya, Tinku, Image processing : Principles and Applications, New Jersey :

John Wiley & Sons, 2005.

2. Baldock, Image Processing and Analysis : A Practical Approach, New York :

Oxford University Press, 2000.

3. Basuki, Achmad, Pengolahan Citra Digital Menggunakan Visual Basic,

Yogyakarta : Graha Ilmu, 2005.

4. Gonzalez, Rafael C, Digital Image Processing, New Jersey : Prentice Hall

International, 2002.

5. Mann, Steve, Intelligent Image Processing, New Jersey : John Wiley & Sons,

2002.

6. Pratt, William K, Digital Image Processing, New Jersey : John Wiley & Sons,

2007.

7. Randy, Crane, A Simplified Approach To Image Processing : Classical and

Gambar

Gambar A.2 Screen Shoot Form Utama
Gambar A.4 Screen Shoot Form Konverter ke Kode
Gambar A.5 Screen Shoot Form Klasifikasi
Gambar C.1 IDE Visual Studio 2008
+7

Referensi

Dokumen terkait

Keterlambatan dan gangguan bisa mulai dari bentuk yang sederhana seperti bunyi suara yang ³tidak normal´ (sengau, serak) sampai dengan ketidakmampuan untuk mengerti

Ini harus diapresiasi bahwa sementara tujuan-tujuan Islam, di satu pihak, tidak dapat direalisasikan tanpa memungkinkan sistem keuangan dan perbankan untuk

 Teknik Operasi P eknik Operasi Pengeboran Lepas P engeboran Lepas Pantai, Peralat antai, Peralatan, dan Instalasinya an, dan Instalasinya Page 1.

a) Membawahi bagian expediting dan MAD. b) Mengembangkan produk yang berkualitas sesuai dengan permintaan pelanggan. c) Menerapkan hasil product development untuk proses

Hal inilah yang mendorong peneliti untuk melakukan penelitian dengan judul Pembelajaran Matematika dengan Media Lembar Kerja Siswa Berbasis Problem Solving Pada

Meski begitu masih ada 43 KK yang memilih untuk tetap tinggal di Desa Ketapang dengan berbagai alasan, pertama karena uang ganti rugi yang diberikan tidak cukup untuk membeli

Dalam hal ini menjadi sebuah tantangan bagi produsen dan pemasar Toyota Kijang untuk tidak hanya menjual sebuah merek, namun juga harus mampu untuk menawarkan dan menunjukkan

Hasil data membuktikan bahwa Surat Kabar Harian Surya Malang melakukan penerapan kode etik jurnalis sesuai pedoman UUD yang diterapkan di Indonesia untuk wartawan agar