Implementasi Algoritma Edge Detection Operator Sobel pada Proses Perbaikan Kualitas Citra Teks

(1)

SKRIPSI

ZULHAM EFFENDI 111421021

PROGRAM STUDI EKSTENSI S-1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA


(2)

IMPLEMENTASI ALGORITMAEDGE DETECTIONOPERATOR SOBEL PADA PROSES PERBAIKAN KUALITAS CITRA TEKS

SKRIPSI

Diajukan untuk melengkapi dan memenuhi syarat memperoleh ijazah

Sarjana Ilmu Komputer

ZULHAM EFFENDI 111421021

PROGRAM STUDI EKSTENSI S-1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2015


(3)

Judul : IMPLEMENTASI ALGORITMA EDGE DETECTION

OPERATOR SOBEL PADA PROSES PERBAIKAN

KUALITAS CITRA TEKS

Kategori : SKRIPSI

Nama : ZULHAM EFFENDI

NIM : 111421021

Program Studi : EKSTENSI S-1 ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

Komisi Pembimbing :

Pembimbing II Pembimbing I

Drs. Dahlan Sitompul M.Eng Prof. Dr. Muhammad Zarlis

NIP. 19670725 200501 1 002 NIP. 19570701 198601 1 003

Diketahui/disetujui oleh :

Program Studi S1 Ilmu Komputer Ketua


(4)

PERNYATAAN

IMPLEMENTASI ALGORITMAEDGE DETECTIONOPERATOR SOBEL PADA PROSES PERBAIKAN KUALITAS CITRA TEKS

Saya mengakui bahwa skripsi ini adalah hasil karya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, Juni 2015

Zulham Effendi NIM. 111421021


(5)

PENGHARGAAN

Puji dan syukur kehadirat Allah SWT karena atas segala rahmat dan karunia-Nya penulis dapat menyelesaikan skripsi ini dalam waktu yang telah ditetapkan sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer, Program Studi Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, serta Shalawat dan Salam penulis hadiahkan kepada Nabi Besar Muhammad SAW.

Pada kesempatan ini, penulis menyampaikan ucapan terima kasih yang sebesar-besarnya kepada :

1. Bapak Prof. Dr. dr. Syahril Pasaribu, DTM&H, M.Sc(CTM), Sp.A(K) selaku Rektor Universitas Sumatera Utara.

2. Bapak Prof. Dr. Muhammad Zarlis, M.Kom sebagai Dekan Fakultas Ilmu Komputer dan Teknologi Informasi sekaligus sebagai dosen Pembimbing I Saya yang telah meluangkan waktu, tenaga, dan pikiran dalam membimbing, mengarahkan, menasehati, memotivasi, dan menyemangati penulis agar dapat menyelesaikan skripsi ini.

3. Bapak Dr. Poltak Sihombing, M.Kom sebagai Ketua Program Studi S1 Ilmu Komputer.

4. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Sekretaris Program Studi Ilmu Komputer.

5. Bapak Drs. Dahlan Sitompul, M.Eng selaku pembimbing II yang telah meluangkan waktu, tenaga, dan pikiran dalam membimbing, mengarahkan, menasehati, memotivasi, dan menyemangati penulis agar dapat menyelesaikan skripsi ini.

6. Bapak Syahriol Sitorus, S.Si, MIT sebagai dosen penguji I yang telah memberikan kritik dan saran yang berguna bagi penulis

7. Bapak Drs. Open Darnius, M.Sc sebagai dosen penguji II yang telah memberikan kritik dan saran yang berguna bagi penulis.

8. Seluruh staf pengajar dan pegawai Fakultas Ilmu Komputer dan Teknologi Informasi.


(6)

vi

9. Teristimewa orang tua yang penulis sayangi, ibunda Sri Ningsih dan ayahanda Syamsuddin yang telah memberikan doa, motivasi, perhatian , mendukung penulis dengan penuh kasih sayang dan kesabaran yang tak terhingga.

10. Adik tersayang Putri Ramadani yang telah memberikan doa, dukungan, dan perhatian kepada saya.

11. Pendamping teristimewa Lydia Utami, SE yang selalu menasehati dan tak henti-hentinya memberi motivasi, dukungan, dan doa.

12. Teman–teman seperjuangan mahasiswa S1 Ekstensi Ilmu Komputer stambuk 2011 yang selalu memberi dukungan.

13. Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah membantu menyelesaikan skripsi ini.

Penulis menyadari bahwa skripsi ini masih banyak kekurangan. Oleh karena itu penulis menerima kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini. Semoga skripsi ini dapat bermanfaat bagi penulis dan pembaca, khususnya rekan-rekan mahasiswa lainnya yang mengikuti perkuliahan di Universitas Sumatera Utara.

Medan, Juni 2015 Penulis


(7)

ABSTRAK

Manuskrip kuno seringkali mengandung noise yang disebut sebagai ‘fox’ dimana terjadinya perubahan warna kertas menjadi kekuningan atau kecoklatan karena tersimpan lama. Untuk kepentingan analisa tulisan pada manuskrip kuno, fox sangat mengganggu pandangan dan perubahan tulisan pada naskah sehingga diperlukan restorasi digital yang menggunakan teknik-teknik pengolahan citra. Algoritma Edges Detection merupakan cara segmentasi citra yang digunakan untuk memisahkan teks dan latar manuskrip yang terkena fox dengan cara mempertegas batas tepi objek yaitu teks dengan latar belakang. Perangkat lunak yang digunakan untuk membangun program restorasi citra digital dengan teknik deteksi tepi operator Sobel adalah Microsoft Visual Basic .Net 2010. Hasil pengujian perangkat lunak membuat kualitas citra teks manuskrip kuno menjadi lebih jelas untuk dapat digunakan menganalisa tulisan lebih lanjut.


(8)

viii

ABSTRACT

Ancient manuscripts often contain noise that is referred as a 'fox' in color changing of the paper becomes yellowish or brownish due to old stored. For the purposes of ancient manuscript analysis, fox is very troubling views and changes writing on the

paper so it’s required digital restoration techniques on image processing. Edges Detection Algorithm is a way of image segmentation uses to separate between text and background of manuscripts affected by fox with clarifying edges of objects between a text with the background. The software to build digital image restoration program with edge detection sobel operator technique is Microsoft Visual Basic Net. 2010. Result of testing the software makes the quality image of ancient manuscripts of the text to be clearer so can be used to analyze the writing further.


(9)

DAFTAR ISI Halaman PERSETUJUAN iii PERNYATAAN iv PENGHARGAAN v ABSTRAK vii ABSTRACT viii

DAFTAR ISI ix

DAFTAR GAMBAR xi

DAFTAR TABEL xiii

BAB 1 PENDAHULUAN 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

BAB 2 TINJAUAN PUSTAKA 5

2.1 Pengolahan Citra 5

2.2 Citra Warna 7

2.3 Citra Digital 8

2.4 Menghitung Nilai RGB Citra 13

2.5 Deteksi Tepi Citra 13

2.5.1 Operator Sobel 15

2.6 Microsoft Visual Basic NET 2010 17

2.7 Data Flow Diagram (DFD) 19

2.8 Flow Chart 20

BAB 3 ANALISIS DAN PERANCANGAN 21

3.1 Analisis 21

3.1.1Pembagian Citra menjadi Ukuran 3 x 3 Piksel 22

3.1.2 Perhitungan Nilai Warna RGB 22

3.1.3 Perhitungan Nilai Grayscale 23

3.1.4 Perhitungan Nilai Biner (Binerisasi) 25

3.1.5 Inisialisasi Kernel Sobel 26

3.1.6 Perhitungan Gradien (M) 26

3.1.7 Pemetaan Nilai Gradien ke Citra Baru 27

3.1.8 Flow Chart Deteksi Tepi 27

3.1.9 Penelitian Deteksi Tepi Terkait 29

3.2 Perancangan Sistem 31

3.2.1Diagram Konteks Sistem 32


(10)

x

3.2.3.2 Rancangan Form Deteksi Tepi 34

3.2.3.3 Rancangan Help 35

3.2.3.4 Rancangan About 36

3.2.4 Rancangan Pengujian 37

BAB 4 IMPLEMENTASI DAN PENGUJIAN 38

4.1 Implementasi 38

4.1.1 Tampilan Menu Utama 38

4.1.2 Tampilan Form DeteksiTepi 39

4.1.3 Tampilan Bantuan 40

4.2 Pengujian 41

4.2.1 Pengujian Citra Berformat JPG 41

4.2.2 pengujian Citra Berformat BMP 43

BAB 5 KESIMPULAN DAN SARAN 48

5.1 Kesimpulan 48

5.2 Saran 48

DAFTAR PUSTAKA 49

LAMPIRAN


(11)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Citra Manuscrip Kuno 6

Gambar 2.2 Nilai warna RGB dalam hexadesimal 7

Gambar 2.3 Komposisi Warna RGB 7

Gambar 2.4 Kordinat Citra Digital 9

Gambar 2.5 Representasi Citra Digital Dalam 2 Dimensi 10

Gambar 2.6 Citra Biner 10

Gambar 2.7 Citra Keabuan 11

Gambar 2.8 8 bittruecolor 11

Gambar 2.9 Citra Warna 8 bit 12

Gambar 2.10 Citra Warna 16 bit 12

Gambar 2.11 Citra Warna 24 bit 12

Gambar 2.12 Proses Deteksi Tepi Citra 14

Gambar 2.13 Model Tepi Satu Citra 14

Gambar 2.14 Jenis-jenis Tepi Citra 15

Gambar 2.15 Matriks Konvolusi 3 X 3 Sobel 15

Gambar 2.16 Matrik Operator Sobel 16

Gambar 2.17 Hasil Deteksi Tepi 17

Gambar 3.1 Matriks Kernel Sobel 21

Gambar 3.2 Pengolahan Citra 3x3 Piksel 22

Gambar 3.3 Citra Manuskrip kuno (3 x 3 piksel) 22

Gambar 3.4 Blok Citra (3 x 3 piksel) 23

Gambar 3.5 Nilai Piksel Blok Citra (3 x 3 piksel) 23

Gambar 3.6 Matriks RGB Blok Citra 24

Gambar 3.7 MatriksGrayscaleBlok Citra 25

Gambar 3.8 Matriks Citra Biner 26

Gambar 3.9 Dua Buah Kernel 26

Gambar 3.10 matriks Citra 3x3 Piksel dengan Dua Kernel 26

Gambar 3.11 Matriks Hasil Deteksi Tepi Citra 3x3 27

Gambar 3.12Flow ChartDeteksi Tepi Citra 28

Gambar 3.13 Diagram konteks 29

Gambar 3.14 DFD Level 1 30

Gambar 3.15 Rancangan Menu Utama 31

Gambar 3.16 RancanganFormDeteksi Tepi 32

Gambar 3.17 Rancangan Bantuan 33

Gambar 3.18 Rancangan Hasil Pengujian 33

Gambar 4.1 Tampilan Menu Utama 35

Gambar 4.2 Tampilan Form DeteksiTepi 34

Gambar 4.3 Tampilan Hasil Deteksi Tepi 35

Gambar 4.4 Tampilan Bantuan 37

Gambar 4.6 Tampilan Hasil Deteksi Tepi File Citra ManuScrip-6 38 Gambar 4.7 Tampilan Hasil Deteksi Tepi File Citra ManuScrip-8 38 Gambar 4.8 Tampilan Hasil Deteksi Tepi File Citra ManuScrip-9 39 Gambar 4.9 Tampilan Hasil Deteksi Tepi File Citra ManuScrip-10 39


(12)

xii

Gambar 4.12 Tampilan Hasil Deteksi Tepi File Citra ManuScrip-8a 41 Gambar 4.13 Tampilan Hasil Deteksi Tepi File Citra ManuScrip-9a 42 Gambar 4.14 Tampilan Hasil Deteksi Tepi File Citra ManuScrip-10a 43


(13)

DAFTAR TABEL

Halaman

Tabel 2.1 Contoh-contoh warna dalam hexadesimal 8

Tabel 2.2 Format Piksel 8 bit 11

Tabel 2.3 SimbolData Flow Diagram 19


(14)

vii

ABSTRAK

Manuskrip kuno seringkali mengandung noise yang disebut sebagai ‘fox’ dimana terjadinya perubahan warna kertas menjadi kekuningan atau kecoklatan karena tersimpan lama. Untuk kepentingan analisa tulisan pada manuskrip kuno, fox sangat mengganggu pandangan dan perubahan tulisan pada naskah sehingga diperlukan restorasi digital yang menggunakan teknik-teknik pengolahan citra. Algoritma Edges Detection merupakan cara segmentasi citra yang digunakan untuk memisahkan teks dan latar manuskrip yang terkena fox dengan cara mempertegas batas tepi objek yaitu teks dengan latar belakang. Perangkat lunak yang digunakan untuk membangun program restorasi citra digital dengan teknik deteksi tepi operator Sobel adalah Microsoft Visual Basic .Net 2010. Hasil pengujian perangkat lunak membuat kualitas citra teks manuskrip kuno menjadi lebih jelas untuk dapat digunakan menganalisa tulisan lebih lanjut.


(15)

ABSTRACT

Ancient manuscripts often contain noise that is referred as a 'fox' in color changing of the paper becomes yellowish or brownish due to old stored. For the purposes of ancient manuscript analysis, fox is very troubling views and changes writing on the

paper so it’s required digital restoration techniques on image processing. Edges Detection Algorithm is a way of image segmentation uses to separate between text and background of manuscripts affected by fox with clarifying edges of objects between a text with the background. The software to build digital image restoration program with edge detection sobel operator technique is Microsoft Visual Basic Net. 2010. Result of testing the software makes the quality image of ancient manuscripts of the text to be clearer so can be used to analyze the writing further.


(16)

BAB 1

PENDAHULUAN

1.1 Latar Belakang

Meskipun sebuah citra kaya akan informasi, namun seringkali citra atau gambar yang dimiliki mengalami penurunan mutu (degradasi) citra yaitu penurunan kualitas citra dikarenakan mengandung cacat (noise). Derau atau noise adalah titik pada citra yang sebenarnya bukan merupakan bagian dari citra, melainkan ikut tercampur pada citra. Ganguan tersebut biasanya muncul sebagai akibat dari perekaman (capture) yang tidak sempurna (Murinto, 2008).

Manuskrip kuno seringkali mengandung noise termasuk perubahan warna kertas menjadi kekuningan atau kecoklatan karena tersimpan lama. Apabila perubahan tersebut terjadi pada beberapa tempat disebut sebagai ‘fox’, tulisan tembus karena terkena tumpahan air dan lain-lain. Noise tersebut dapat mengganggu pandangan dan perubahan tulisan pada naskah. Restorasi biasa secara kimiawi dan fisik tidak dapat mengembalikan keadaan naskah yang demikian menjadi lebih bagus, karena itu diperlukan restorasi digital yang menggunakan teknik-teknik pengolahan citra (Arnia, 2010). Teknik utama dalam restorasi citra adalah pemisahan bagian teks dengan latarnya. Masing-masing bagian ini diproses dengan teknik pengolahan citra. Bagian teks dipertajam, sedangkan bagian latar yang mengandung noise akan mengalami proses denoising. Masing-masing bagian ini kemudian disatukan kembali untuk menghasilkan naskah utuh.

Beberapa penelitian yang telah dilakukan adalah Arnia, Fitri. Munadi, Khairul. Untuk restorasi citra manuskrip kuno berbasis histogram terekualisasi. Pada penelitian ini, dilakukan teknik restorasi citra pada citra manuskrip berhuruf Arab dengan tujuan menghilangkan fox. Teknik ini lebih sederhana karena tidak memerlukan proses iterasi ataupun perhitungan statistik. Histogram terekualisasi dianalisis untuk menentukan batas ambang antara teks dan latar yaitu menggunakan satu nilai batas


(17)

ambang untuk keseluruhan manuskrip. Metode usulan diujicobakan pada beberapa lembar citra manuskrip dan terbukti efektif untuk menghilangkan fox.

Penelitian lainnya adalah Rinjani dkk yaitu memperbaiki kualitas citra lontar kuno dengan cara digitalisasi. Proses digitalisasi pada lontar kuno dilakukan dengan menggunakan alat scanner. Proses restorasi pada lontar kuno tersebut meliputi deteksi tepi (edge detection), morphologi dan penghilangan noise (reduksi noise) dengan hasil akhir adalah citra biner. Selanjutnya dilakukan deteksi tepi dengan operator Prewitt karena dapat menghasilkan titik-titik tepi yang cukup tebal (jelas) sehingga dapat mempermudah dalam mendeteksi citra lontar kuno. Operasi morphologi yang digunakan adalah operasi morphologi black top hat karena operasi morphologi black top hat dilakukan dengan cara mengurangi hasil operasi closing oleh kernel dengan citra input. Sedangkan untuk menghilangkan noise-nya digunakan median filtering karena memiliki kemampuan yang lebih baik dalam mengurangi noise.

Sebuah format citra harus dapat menyatukan kualitas citra, ukuran file dan kompatibilitas dengan berbagai aplikasi. Saat ini tersedia banyak format grafik antara lain Bitmap (BMP) serta Joint Picture Expert Group (JPEG). Setiap program pengolahan citra biasanya memiliki format citra tersendiri. Format dan metode dari suatu citra yang baik juga sangat bergantung pada jenis citranya. Setiap format file citra memiliki masing-masing kelebihan dan kekurangan dalam hal kualitas serta ukurannya.

Metode Edges Detection merupakan teknik segmentasi citra yang digunakan untuk memisahkan teks dan latar manuskrip uji bertuliskan huruf latin dengan cara mempertegas batas tepi objek yaitu teks dengan latar belakang.

Berdasarkan hal yang telah diuraikan diatas maka penulis berniat membuat penelitian dengan judul Implementasi Algoritma Edge Detection Operator Sobel Pada Proses Perbaikan Kualitas Citra Teks.


(18)

3

1.2 Rumusan Masalah

Yang menjadi rumusan masalah pada penelitian ini adalah:

1. Bagaimana memisahkan noise dengan objek citra yang telah tercampur akibat penurunan kualitas citra.

2. Bagaimana memperjelas batas tepi objek yaitu teks dengan latar belakang sehingga tulisan dapat lebih diperjelas pada suatu citra.

1.3 Batasan Masalah

Adapun yang menjadi batasan masalah dalam penelitian ini adalah:

1. File citra yang diperbaiki adalah berformat JPG dan BMP yang berisi dokumen tua huruf latin (manuskrip kuno).

2. Tools pemrograman yang digunakan adalah VB .NET 2010.

1.4 Tujuan Penelitian

Adapun tujuan penelitian ini adalah memperoleh objek teks yang lebih jelas dari sebuah file citra yang telah mengalami penurunan kualitas citra.

1.5 Manfaat Penelitian

Manfaat dari penelitian ini adalah penulis diharapkan mendapat hasil perbaikan kualitas citra teks menggunakan metode Edge Detection operator Sobel.

1.6 Metode Penelitian

Dalam penelitian ini, tahapan-tahapan yang akan dilalui adalah sebagai berikut: a. Studi Literatur

Pada tahap ini dilakukan studi kepustakaan terhadap buku-buku yang relevan maupun artikel-artikel atau e-book dan juga journal international yang didapatkan melalui internet.


(19)

b. Analisis

Tahap ini digunakan untuk mengolah data dari hasil studi literatur dan kemudian melakukan analisis sehingga menjadi suatu informasi.

c. Perancangan Perangkat Lunak

Pada tahap ini, digunakan seluruh hasil analisa terhadap studi literatur yang dilakukan untuk merancang perangkat lunak yang akan dihasilkan. Dalam tahapan ini juga dilakukan perancangan model antarmuka serta proses kerja sistem untuk memudahkan dalam proses implementasi.

d. Implementasi dan Pengujian Sistem

Pada tahap ini dilakukan pemasukan data serta memprosesnya untuk mendapatkan hasil apakah sesuai dengan yang diharapkan.

e. Dokumentasi

Tahap dokumentasi adalah pembuatan laporan berupa skripsi berdasarkan tahap-tahap diatas.

1.7 Sistematika Penulisan

Sistematika penulisan skripsi ini adalah sebagai berikut :

BAB 1 PENDAHULUAN membahas latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian serta sistematika penulisan. BAB 2 LANDASAN TEORI membahas tentang landasan teori tentang citra, deteksi

tepi citra, algoritma deteksi tepi Sobel, bahasa pemrograman VB NET 2010, flow chart serta data flow diagram (DFD).

BAB 3 ANALISIS DAN PERANCANGAN membahas mengenai langkah-langkah pengolahan citra dengan metode Edges Detection Sobel, flow chart sistem, data flow diagram serta perancangan antar muka aplikasi (user interface). BAB 4 IMPLEMENTASI DAN PENGUJIAN membahas tentang implementasi dari

perancangan sistem yang dirancang pada BAB 3.

BAB 5 KESIMPULAN DAN SARAN merupakan kesimpulan dari semua pembahasan yang ada dengan saran-saran yang ditujukan bagi para pembaca atau pengembang.


(20)

BAB 2

TINJAUAN PUSTAKA

2.1 Pengolahan Citra

Peningkatan kualitas citra (image enhancement) bertujuan menghasilkan citra dengan kualitas yang lebih baik dibandingkan dengan citra semula. Langkah selanjutnya dalam pengolahan citra adalah analisis citra (image analysis). Analisis citra bertujuan mengidentifikasi parameter-parameter yang diasosiasikan dengan ciri (feature) dari objek di dalam citra, untuk selanjutnya parameter tersebut digunakan sebagai hasil proses analisis citra. Analisis citra pada dasarnya terdiri dari tiga tahapan: ekstrakasi ciri (feature extraction), segmentasi, dan klasifikasi.

Faktor kunci dalam mengekstraksi ciri objek citra adalah kemampuan mendeteksi keberadaan tepi (edge) dari objek di dalam citra. Setelah tepi objek diketahui, langkah selanjutnya dalam analisis citra adalah segmentasi, yaitu mereduksi citra menjadi objek atau region, misalnya memisahkan objek-objek yang berbeda dengan mengekstraksi batas-batas objek (boundary). Langkah terakhir dari analisis citra adalah klasifikasi, yaitu memetakan segmen-segmen yang berbeda ke dalam kelas objek yang berbeda pula.

Proses segmentasi area teks pada citra dokumen adalah salah satu tahap pra proses yang sangat penting dalam pengolahan citra dokumen. Namun seringkali fitur warna saja tidak cukup untuk dapat memisahkan antara foreground area teks dengan

backgroundcitra dokumen yang pada umumnya tidak memiliki warna yang seragam serta terganggu penuh oleh noise. Dokumen dan naskah kuno yang telah mengalami kerusakan fisik telah banyak menjadi objek penelitian dalam bidang restorasi citra digital. Metode-metode pengolahan citra digital diharapkan mampu memberikan citra digital hasil restorasi yang mudah dibaca dari tulisan-tulisan yang telah mengalami kerusakan (Kesima, 2013).

Terdapat tiga jenis metode perbaikan citra yaitu (a) perbaikan citra dengan metode binarisasi dan thresholding, (b) perbaikan citra dengan metode hibridisasi


(21)

antara binarisasi/thresholding dengan metode lainya, serta (c) perbaikan citra tanpa metodethresholding. Hasilreviewyang dilakukan menjelaskan bahwa metode ke dua memberikan peningkatan yang potensial dalam proses perbaikan citra. Khusus untuk metode perbaikan citra dengan metode binarisasi citra (Kesima, 2013).

Metode binarisasi adaptif yang dapat memisahkan dengan baik komponen teks, background, serta gambar dari sebuah citra dokumen. Dengan penentuan nilai

threshold secara local dapat berhasil mengatasi permasalahan pokok kerusakan citra dokumen yang disebabkan oleh adanya noise serta perbedaan tingkat iluminasi (Kesima, 2013).

Pada citra dokumen, area teks secara natural memiliki fitur tekstur yang cukup berbeda. Informasi tekstur dapat digunakan untuk membedakan sifat-sifat permukaan suatu benda dalam citra yang berhubungan dengan kasar dan halus, juga sifat-sifat spesifik dari kekasaran dan kehalusan permukaan tadi, yang sama sekali terlepas dari warna permukaan tersebut. Salah satu ukuran fitur tekstur yang dikenal dalam citra adalah nilai lacunarity. Artikel ini diawali dengan paparan tentang metode perhitungan nilai lacunarity pada citra, kemudian metode pembentukan peta

lacunarity, serta hasil uji coba deteksi dan segmentasi area teks aksara bali pada citra lontar, dan diakhiri dengan simpulan dan saran untuk pengembangan penelitian selanjutnya (Kesima, 2013).


(22)

7

2.2 Citra Warna

Dalam pengolahan citra warna dipresentasikan dengan nilai hexadesimal dari 0x00000000 sampai 0x00ffffff. Warna hitam adalah 0x00000000 dan warna putih adalah 0x00ffffff. Definisi nilai warna di atas seperti Gambar 2.2, variabel 0x00 menyatakan angka dibelakangnya adalahhexadecimal(Sutoyo et al, 2009).

0x00 XX XX XX

Nilai R Nilai G Nilai B

Gambar 2.2 Nilai warna RGB dalam hexadesimal

Terlihat bahwa setiap warna mempunyai range nilai 00 (angka desimalnya adalah 0) dan ff (angka desimalnya adalah 255), atau mempunyai nilai derajat keabuan 256 = 28. Dengan demikian range warna yang digunakan adalah (28)(28)(28) = 224 (atau yang dikenal dengan istilahtrue colour pada Windows). Nilai warna yang digunakan di atas merupakan gabungan warna cahaya merah, hijau dan biru seperti yang terlihat pada Gambar 2.3. Sehingga untuk menentukan nilai dari suatu warna yang bukan warna dasar digunakan gabungan skala kecerahan dari setiap warnanya.

Gambar 2.3 Komposisi Warna RGB (Sutoyo et al, 2009).

Dari definisi diatas untuk menyajikan warna tertentu dapat dengan mudah dilakukan, yaitu dengan mencampurkan ketiga warna dasar RGB, Table 2.1. berikut memperlihatkan contoh-contoh warna yang bisa digunakan


(23)

Tabel 2.1 Contoh-contoh warna dalam hexadesimal (Sutoyo et al, 2009).

Nilai Warna Nilai Warna

0x00000000 Hitam 0x0000AAFF Orange

0x000000FF Merah 0x00888888 Abu-abu

0x0000FF00 Hijau 0x00FF00AA Ungu

0x00FF0000 Biru 0x00AAFF00 Hijau Muda

0x0000FFFF Kuning 0x00AA00FF Merah Muda

0x00FF00FF Magenta 0x00AAFFFF Kuning Muda

0x00FFFF00 Cyan 0x000088AA Coklat

0x00FFFFFF Putih 0x00AA0088 Ungu

2.3 Citra Digital

Citra merupakan fungsi kontinyu dari intensitas cahaya pada bidang dua dimensi. Intensitas cahaya merupakan hasil kali antara jumlah pancaran (illuminasi) cahaya yang diterima objek dengan derajat kemampuan obyek memantulkan cahaya. Citra digital umumnya direpresentasikan dalam bentuk matriks 2 dimensi dengan ukuran NxM. Elemen terkecil dalam citra digital (elemen matriks) disebut pixel. Setiap nilai

pixel pada citra merepresentasikan nilai intensitas cahaya (Budi, 2009). Nilai fungsi intensitas f(x,y) memiliki rentang nilai yang disebut skala keabuan, yaitu:

l min < f(x,y) < l max atau 0≤ f(x,y) ≤ L-1 ... (2.1) Dimana:

f(x,y) : nilai intensitas pada posisix,y.

l max= L : nilaimaxintensitas (skala keabuan)

l min : nilaiminintensitas

Suatu citra dapat didefinisikan sebagai fungsi f(x,y),berukuran M baris dan N kolom, denganxdanyadalah koordinat spasial dan amplitudo f di titik kordinatf(x,y)

dinamakan intensitas atau tingkat keabuan dari citra pada titik tersebut. Apabila nilai x, y dan nilai amplitudo f secara keseluruhan berhingga (finite) dan nilai bernilai diskrit maka dapat dikatakan bahwa citra tersebut adalah citra digital (Putra, 2010). Kordinat citra digital dapat dilihat pada Gambar 2.4.


(24)

9

Gambar 2.4 Kordinat Citra Digital (Putra, 2010)

Sebuah citra digital dapat diwakili oleh sebuah matriks dua dimensif(x,y) yang terdiri dariMkolom dan Nbaris, dimana perpotongan antara kolom dan baris disebut piksel (pixel = picture element) atau elemen terkecil dari sebuah citra. Citra digital dapat ditulis dalam bentuk matrik sebagai berikut (Kusumanto,2011).

( , ) =

(0,0) (0,1) (0, 1)

(1,0) (1,1) (1, 1)

( 1,0) ( 1,1) ( 1, 1)

………... (2.2)

Suatu citra ƒ(x,y) dalam fungsi matematis dapat dituliskan sebagai berikut:

0≤ x ≤ M-1 0≤ y ≤ N-1 0≤ ƒ(x,y)≤ G-1 dimana :

M = jumlah piksel baris (row) padaarraycitra N = jumlah piksel kolom (column) padaarraycitra G = nilai skala keabuan (graylevel)

0 0 Kordinat awal 1 2 3 4 5

1 2 3 4 5 N-1

M-1

Piksel


(25)

Besarnya nilaiM, NdanGpada umumnya merupakan perpangkatan dari dua.

M = 2m; N = 2n; G = 2k ... (2.3) Dimana:

Nilai m, n dan k adalah bilangan bulat positif. Interval (0,G) disebut skala keabuan (grayscale). Besar G tergantung pada proses digitalisasinya. Biasanya keabuan 0 (nol) menyatakan intensitas hitam dan 1 (satu) menyatakan intensitas putih. Untuk citra 8 bit, nilai G sama dengan 28 = 256 warna (derajat keabuan).

Gambar 2.5 Representasi Citra Digital Dalam 2 Dimensi (Kusumanto, 2011)

Jenis citra berdasarkan nilai pikselnya adalah sebagai berikut (Putra, 2010) :

1. Citra Biner

Citra biner adalah citra digital yang hanya memiliki dua kemungkinan nilai piksel yaitu hitam dan putih. Citra biner juga disebut sebagai citra black and white (B&W) atau citra monokrom. Hanya dibutuhkan 1 bit untuk mewakili nilai setiap piksel dari citra biner. Citra biner sering kali muncul sebagai hasil dari proses pengolahan seperti segmentasi, pengambangan, morfologi ataupundithering.


(26)

11

2. Citra Grayscale

Citra grayscale merupakan citra digital yang hanya memiliki satu nilai kanal pada setiap pikselnya, dengan kata lain nilai bagian Red=Green=Blue. Nilai tersebut digunakan untuk menunjukkan tingkat intensitas. Warna yang dimiliki adalah warna dari hitam, keabuan dan putih. Tingkatan keabuan disini merupakan warna abu dengan berbagai tingkatan dari hitam hingga mendekati putih. Citragrayscale berikut memiliki kedalaman warna 8 bit (256 kombinasi warna keabuan).

Gambar 2.7 Citra Keabuan (Putra, 2010)

3. Citra Warna (8 bit)

Setiap piksel dari citra warna (8 bit) hanya diwakili oleh 8 bit dengan jumlah warna maksimum yang dapat digunakan adalah 256 warna. Ada dua jenis citra warna 8 bit, pertama adalah citra warna 8 bit dengan menggunakan palet warna 256 dengan setiap paletnya memiliki pemetaan nilai (color map) RGB tertentu. Model ini lebih sering digunakan. Kedua, setiappixelmemiliki format 8 bit seperti pada Tabel 2.2.

Tabel 2.2 Format Piksel 8 bit

Bit-7 Bit-6 Bit-5 Bit-4 Bit-3 Bit-2 Bit-1 Bit-0

R R R G G G B B

Bentuk kedua ini dinamakan 8 bittruecolor. Berikut ini adalah warna-warnanya.


(27)

Gambar 2.9 Citra Warna 8 bit (Putra, 2010)

4. Citra Warna (16 bit)

Citra warna 16 bit (biasanya disebut sebagai citra highcolor) dengan setiap pikselnya diwakili dengan 2byte memory(16 bit). Warna 16 bit memiliki 65.536 warna.

Gambar 2.10 Citra Warna 16 bit (Putra, 2010)

5. Citra Warna (24 bit)


(28)

13

2.4 Menghitung Nilai RGB Citra

Menghitung nilai RGB citra asli adalah sama dengan citra penyisip, dimana setiap pikselnya mengandung 24-bit kandungan warna atau 8-bit untuk masing-masing warna dasar (R, G, dan B), dengan kisaran nilai kandungan antara 0 (00000000) sampai 255 (11111111) untuk tiap warna yang dapat ditulis sebagai berikut (Gonzales, 2003).

Red : RGB (255, 0, 0) ……….………….…………..………....… (2.4)

Green : RGB (0, 255, 0) .………..………...……… (2.5)

Blue : RGB (0, 0, 255) …..……….………....………. (2.6)

Dari nilai triplet RGB persamaan (2.4) sampai (2.6) di atas dapat dikonversikan ke dalam nilai desimal seperti dibawah ini:

Red : 255*2560+ 0*2561+ 0*2562= 255 + 0 + 0 = 255 ………...… (2.7) Green : 0*2560+ 255*2561+ 0*2562= 0 + 65,280 + 0 = 65,280 ……….….... (2.8) Blue : 0*2560+ 0*2561+ 255*2562= 0 + 0 + 16,711,680 = 16,711,680... (2.9) Rumus dasar mencari nilai RGB citra adalah:

R = COLOR And RGB(255, 0, 0) ….……….….. (2.10)

G = (COLOR And RGB(0, 255, 0)) / 256 ...……..………...… (2.11)

B = ((COLOR And RGB(0, 0, 255)) / 256) / 256 ….………..…. (2.12) Dari persamaan (2.7) sampai (2.9) diatas, rumus RGB pada persamaan (2.10) sampai (2.12) menjadi:

Nilai R = c and 255 ………... (2.13) Nilai G = (c and65,280)/256 ..………...………..…... (2.14) Nilai B = ((c and16,711,680)/256)/256 ………...………... (2.15)

2.5 Deteksi Tepi Citra

Tepi citra (edge) adalah perubahan nilai intensitas derajat keabuan yang cepat/tiba-tiba (besar) dalam jarak yang singkat. Sedangkan deteksi tepi (Edge Detection) pada suatu citra adalah suatu proses yang menghasilkan tepi-tepi dari obyek-obyek citra. Deteksi tepi (Edge detection) adalah operasi yang dijalankan untuk mendeteksi garis tepi (edges) yang membatasi dua wilayah citra homogen yang memiliki tingkat kecerahan


(29)

yang berbeda (Pitas 1993). Deteksi tepi pada suatu citra adalah suatu proses yang menghasilkan tepi-tepi dari obyek-obyek citra, tujuannya adalah:

1. Untuk menandai bagian yang menjadi detail citra.

2. Untuk memperbaiki detail dari citra yang kabur, yang terjadi karena error atau adanya efek dari proses akuisisi citra.

3. Serta untuk mengubah citra 2D menjadi bentuk kurva.

Suatu titik (x,y) dikatakan sebagai tepi (edge) dari suatu citra bila titik tersebut mempunyai perbedaan yang tinggi dengan tetangganya. Gambar 2.12 berikut ini menggambarkan bagaimana tepi suatu gambar di peroleh.

Gambar 2.12 Proses Deteksi Tepi Citra (Sutoyo et al, 2009).


(30)

15

Pada Gambar 2.14 ada tiga macam tepi yang terdapat di dalam citra digital, ketiganya adalah:

1. Tepi curam, tepi dengan perubahan intensitas yang tajam. Arah tepi berkisar 90°. 2. Tepi landai, disebut juga tepi lebar, yaitu tepi dengan sudut arah yang kecil. Tepi

landai dapat dianggap terdiri dari sejumlah tepi-tepi lokal yang lokasinya berdekatan.

3. Tepi yang mengandung derau (noise)

Umumnya tepi yang terdapat pada aplikasi computer vision mengandung derau. Operasi peningkatan kualitas citra (image enhancement) dapat dilakukan terlebih dahulu sebelum pendeteksian tepi.

Gambar 2.14 Jenis-jenis Tepi Citra (Putra, 2010).

2.5.1 Operator Sobel

Proses yang digunakan oleh operator Sobel merupakan proses dari sebuah konvolusi yang telah di tetapkan terhadap citra yang terdeteksi. Dalam operator Sobel digunakan matrik konvolusi 3 X 3 dan susunan piksel-pikselnya di sekitarpixel(x, y) (Sutoyo et al, 2009). Matriks konvolusi 3x3 piksel dapat dilihat seperti pada Gambar 2.15.

p1 p2 p3

p8 (x,y) p4

p7 p6 p5

Gambar 2.15 Matriks Konvolusi 3 X 3 Sobel (Sutoyo et al, 2009). P (1,2,3,4,5,6,7,8)= nilai piksel citra


(31)

Operator Sobel merupakan pengembangan operator Robert dengan menggunakanHigh Pass Filter(HPF) yang diberi satu angka nol penyangga. Operator ini mengambil prinsip dari fungsi Laplacian dan Gaussian yang dikenal sebagai fungsi untuk membangkitkan HPF. Kelebihan dari operator Sobel ini adalah kemampuan untuk mengurangi noise sebelum melakukan perhitungan deteksi tepi. Sehingga besar gradient (G) dapat dihitung dengan menggunakan persamaan:

Sx = ( p3 + cp4 + p5 )− ( p1 + cp8 + p7 ) ... (2.16) Sy = ( p1 + cp2 + p3 ) - ( p7 + cp6 + p5 ) ... (2.17) | G | =√GX2+ GY2 ... (2.18)

Dengan nilai c konstanta bernilai dua, sehingga terbentuk matriks operator Sobel dapat digambarkan seperti pada Gambar 2.16.

-1 0 1 -1 -2 -1

Sx -2 0 2 Sy 0 0 2

-1 0 1 1 2 1

Gambar 2.16 Matrik Operator Sobel

Biasanya operator Sobel menempatkan penekanan atau pembobotan pada piksel yang lebih dekat dengan titik pusat jendela, sehingga pengaruh piksel-piksel tetangga akan berbeda sesuai dengan letaknya terhadap titik di mana gradien dihitung. Dari susunan nilai-nilai pembobotan pada jendela juga terlihat bahwa perhitungan terhadap gradien juga merupakan gabungan dari posisi mendatar dan posisi vertikal.

Pada Gambar 2.17 terlihat bahwa hasil deteksi tepi berupa tepi-tepi dari suatu gambar. Bila diperhatikan bahwa tepi suatu gambar terletak pada titik-titik yang memiliki perbedaan tinggi.


(32)

17

Gambar 2.17 Hasil Deteksi Tepi

Proses deteksi tepi (edge detection) sendiri masing-masing dapat dikelompokkan berdasarkan operator atau metode yang digunakan dalam proses pendeteksian tepi suatu citra untuk memperoleh citra hasil.

2.6 Microsoft Visual Basic NET 2010

Visual Basic 2010 merupakan salah satu aplikasi pemrograman visual yang dibuat oleh Microsoft. Visual Basic 2010 merupakan bagian dari sebuah suite aplikasi pemrograman bernama Visual Studio 2010. Suite aplikasi ini adalah suite aplikasi paling mutakhir yang dibuat oleh Microsoft (Wahana Komputer, 2012). Visual Basic 2010 sudah mendukung konsep pemrograman berorientasi objek (Object Oriented Programming). Dalam Visual Basic 2010 akan dikenal konsep objek, kelas (class), pewarisan (inheritance),namespace, dan lain-lain.

Program Visual Basic adalah bahasa pemprograman yang paling mudah dikuasai oleh para pemula. Dalam program Visual Basic 2010 (disingkat VB 2010), menawarkan banyak kemudahan lagi dibandingkan versi-versi sebelumnya, antara lain teknik pemrograman dapat dibuat lebih terstruktur dan lebih banyak bantuan dalam pemrograman. Jauh lebih mudah untuk menguasainya dibandingkan dengan versinya yang terdahulu, yaitu Visual Basic 6 (disingkat VB6).

Ada banyak perubahan dalam VB 2010 ini dibandingkan VB6, antara lain : 1. Bahasa pemprograman sekarang benar-benar bahasa berbasis objek (Object


(33)

2. Aplikasi dan komponen yang ditulis di VB 2010 mempunyai akses penuh ke Net Framework. Sedangkan di VB6 tidak dikenal atau tidak menggunakan Net Framework.

3. Semua Semua aplikasi yang dibuat beroperasi dalam manajemen Common Language Runtime(CLR).

Net Framework sendiri, yang sekarang sudah versi 4.0 adalah suatu himpunan file-file pustaka yang telah terorganisir dan berguna sebagai fasilitas untuk sistem dan aplikasi. Sehingga seorang programmer tidak perlu lagi menghapal fungsi-fungsi Windows API untuk akses sistem, seperti di dalam bahasa VB6 karena sudah diorganisir oleh Net FrameWork. Hampir semua fungsi Windows API tersebut telah dijadikan object-object yang dapat dengan mudah digunakan dan ditemukan oleh

programmer VB 2010. Pemrograman berbasis objek (OOP) sendiri adalah suatu pendekatan ke arah struktur pengembangan aplikasi berdasarkan objek. Objek tersebut dapat berupa prosedur, event, ataupunvariable. Object satu dapat menjadi bawahan

object lainnya berdasarkan susunan fungsinya. Artinya suatu object terdepan terdiri atas beberapa object yang memiliki tugas lebih sempit, dan antar object dapat saling berinteraksi dalam melaksanakan tugas tertentu.

Common Language Runtime (CLR) adalah suatu runtime lingkungan yang memproses, melaksanakan, dan mengatur kode dasar Visual Basic. Mirip dengan runtime Visual Basic tradisional, yaitu VBRUN300.dll atau MSVBVM60.dll, tetapi kemampuannya saja lebih ditingkatkan sehingga jalannya program yang dibuat lebih stabil dan penanganan kesalahan lebih baik dengan tujuan supaya program dapat berjalan secara optimum.

Untuk Membuat suatu project pada Microsoft Visual Basic 2010 dapat dilakukan dengan langkah sebagai berikut :

1. Klik tombolStartpadaWindows taskbar

2. Pilih menu program Microsoft Visual Studio 2010  Microsoft Visual Studio 2010.


(34)

19

5. Ketika muncul jendela New Project, pilih Visual Basic dan Windows Form Application, ketikkan namaprojectpada kotak isianNamedan pilih tombol OK, maka muncul IDE (Integrated Development Environment) berupa form desain untuk memulai membangun aplikasi baru.

2.7 Data Flow Diagram (DFD)

Data flow diagram adalah suatu network yang menggambarkan suatu sistem automat/komputerisasi, manualisasi atau gabungan dari keduanya yang penggambarannya disusun dalam bentuk kumpulan komponen sistem yang saling berhubungan sesuai dengan aturan mainnya. Adapun simbol-simbol padaData Flow Diagramdapat dilihat pada Tabel 2.3.

Tabel 2.3 SimbolData Flow Diagram

SIMBOL FUNGSI

Eksternal entity (kesatuan luar atau batas sistem) berupa orang, organisasi atau sistem lainnya yang berada di lingkungan luarnya yang akan memberikaninputatau menerimaoutputdari sistem.

Dataflow (arus data) arus data ini mengalir diantara proses, simpanan data dan kesatuan luar.

Process (proses) kegiatan arus kerja yang dilakukan oleh orang, mesin atau komputer dari hasil suatu arus data yang masuk ke dalam proses untuk dihasilkan.

Data store merupakan simpanan data yang berupa file database atau tabel manual, agenda atau buku.

(Sumber: Jogiyanto, 2005)

Tahapan Diagram Arus Data terbagi atas beberapa bagian yaitu: 1. Diagram Konteks

Diagram ini dibuat untuk menggambarkan sumber serta tujuan data yang akan di proses atau dengan kata lain diagram tersebut digunakan untuk menggambarkan sistem secara umum/global dari keseluruhan sistem yang ada.


(35)

2. Diagram Nol

Diagram ini dibuat untuk menggambarkan tahapan proses yang ada didalam diagram konteks, yang penjabarannya lebih terperinci.

3. Diagram Detail

Diagram ini dibuat untuk menggambarkan arus data secara lebih mendetail lagi dari tahapan proses yang didalam diagram nol.

2.8 Flow Chart

Flowchart adalah bagan alir yang menggambarkan arus data dari program. Fungsi dari bagan alir ini adalah untuk memudahkan programmer di dalam perancangan program aplikasi (Jogiyanto. 2005). Simbol-simbol yang digunakan pada bagan flowchart ini antara lain seperti pada Tabel 2.4.

Tabel 2.4 Simbol-simbolFlowchartProgram

Simbol Fungsi

Terminator

Menunjukkan awal dan akhir suatu proses. Data

Digunakan untuk mewakili datainput/output.

Process

Digunakan untuk mewakili proses.

Decision

Digunakan untuk suatu seleksi kondisi didalam program.

Predefined Process

Menunjukkan suatu operasi yang rinciannya ditunjukkan di tempat lain.

Preparation

Digunakan untuk memberi nilai awal variabel.

Flow Lines Symbol

Menunjukkan arah dari proses.

Connector


(36)

BAB 3

ANALISIS DAN PERANCANGAN

3.1 Analisis

Pada penelitian ini dilakukan perbaikan kualitas citra manuskrip kuno dengan mengimplementasikan algoritmaedge detectionoperator Sobel.Edge detectionadalah operasi untuk mendeteksi garis tepi (edge) yang membatasi dua wilayah citra homogen yang memiliki tingkat kecerahan yang berbeda. Proses yang digunakan oleh operator Sobel merupakan proses dari sebuah konvolusi yang telah ditetapkan terhadap citra yang terdeteksi. Pada operator Sobel digunakan dua matriks kernel 3 x 3 Sxdan Syseperti Gambar 3.1.

Gambar 3.1 Matriks Kernel Sobel

Langkah-langkah proses deteksi tepi pada citra teks adalah sebagai berikut: 1. Pembagian citra menjadi blok-blok ukuran 3 x 3 piksel.

2. Perhitungan nilai warnared green blue(RGB) untuk setiap blok. 3. Perhitungan nilaigrayscalesetiap blok.

4. Perhitungan nilai biner setiap blok.

5. Inisialisasi kernel S(x) dan S(y) dengan ukuran 3 x 3 piksel. 6. Perhitungan gradien (M) dengan kernel Sobel S(x) dan S(y). 7. Pemetaan gradien (M) ke citra baru.

8. Ulangi langkah 5 sampai 6 sampai blok citra habis.               1 0 1 2 0 2 1 0 1 x s

1

2

1

0

0

0

1

2

1

y

s


(37)

3.1.1 Pembagian Citra menjadi Ukuran 3 x 3 Piksel

Untuk menyesuaikan dengan operator Sobel, maka ukuran citra yang akan diolah dibagi dengan blok-blok dengan ukuran 3 x 3 piksel perblok seperti yang terlihat pada Gambar 3.2.

Gambar 3.2 Pengolahan Citra 3 x 3 piksel

Pada Gambar 3.2 terlihat urutan pengolahan blok citra dengan ukuran 3 x 3 piksel dimulai mulai sebelah kiri atas sampai ke blok kanan bawah.

3.1.2 Perhitungan Nilai Warna RGB

Sebelum melakukan pengolahan citra, terlebih dahulu dilakukan pembacaan dan penghitungan nilai piksel. Sebagai contoh diberikan citra manuskrip kuno berdimensi 3 x 3 piksel seperti pada Gambar 3.3.

Blok Image 3 x 3 piksel


(38)

23

Citra pada Gambar 3.3 di atas dilakukan penghitungan nilai komponen warna RGB-nya dengan membagi citra dalam piksel-piksel. Sebagai contoh diberikan cuplikan citra 3 x 3 piksel yang berasal dari citra manuskrip kuno yang dapat dilihat seperti pada Gambar 3.4.

Gambar 3.4 Blok Citra (3 x 3 piksel)

Citra pada Gambar 3.4 di atas dilakukan pembacaan nilai piksel pada data bitmapCover Image(3 x 3 piksel) seperti pada Gambar 3.5.

Gambar 3.5 Nilai Piksel Blok Citra (3 x 3 piksel)

3.1.3 Perhitungan NilaiGrayscale

Untuk mendapatkan masing-masing nilai R, G dan B dilakukan operasi modulo (sisa bagi) dengan rumus sebagai berikut:

Nilai R = C(i,j) and 255 ………...……….. (3.1)

Nilai G = (C(i,j) and 65280) / 256………...…...……….……. (3.2) Nilai B = (C(i,j) and 16711680) / 256/256 ….………...…...………... (3.3) Dimana C(i,j) adalah nilai piksel citra pada kordinat (i,j) dalam biner.

Pada Gambar 3.2 di atas memiliki nilai piksel antara lain: a. Nilai piksel (0,0) = 110110111010011000110011.

Nilai R = 110110001010011111110011and11111111 = 11 0011= 51 (dec) >>>>>>>>>>>><Header><<<<<<<<<<<<<<<<<<<

>>>>>>>>>>>><databitmap><<<<<<<<<<<<<<<<

Piksel(0,0) Piksel(0,1) Piksel-(i,j)

110110001010011111110011 101100111011010011010100 ... 100101111010011010011011 111101101011110011111101 ... 110100111011011010010101 100001101111010110110101 ... 100100100010011011011001 111101101011110010011001 ...


(39)

Nilai G = (110110111010011000110011and1111111100000000)/ 100000000 = 1010 0110 = 166 (dec).

Nilai B = (110110111010011000110011and111111110000000000000000)/ 100000000/100000000 = 1101 1011 = 219 (dec).

b. Nilai piksel (0,1) = 101100111011010011010100.

Nilai R = 101100111011010011010100and11111111 = 1101 0100 = 212 (dec) Nilai G = (101100111011010011010100and1111111100000000)/ 100000000

= 1011 0100= 180 (dec).

Nilai B = (101100111011010011010100and111111110000000000000000)/ 100000000/100000000 = 1011 0011 = 179 (dec).

Untuk mencari nilai piksel selanjutnya sampai dengan piksel (3,3) dihitung dengan cara yang sama seperti diatas. Dari hasil perhitungan nilai RGB blok citra di atas dimasukkan pada matriks citra RGB seperti pada Gambar 3.6.

R=51 G=166 B=219 R=212 G=180 B=179 R=100 G=80 B=90 R=52 G=110 B=125 R=70 G=100 B=10 R=144 G=40 B=10 R=50 G=50 B=0 R=40 G=85 B=90 R=122 G=100 B=45

Gambar 3.6 Matriks RGB Blok Citra

Matriks nilai di atas lalu ditransformasikan menjadi citra grayscale dengan menghitung rata-rata warnaRed,Green danBlue. Secara matematis penghitungannya nilaigrayscaledengan rumus sebagai berikut.

f (i,j) = ... (3,4) untuk piksel (0,0) adalah:


(40)

25

f(0,2) = = 90

f(0,3) = = 95

f(0,4) = = 60

f(0,5) = = 64

f(0,6) = = 33

f(0,7) = = 71

f(0,8) = = 89

Selanjutnya hasil perhitungan nilai grayscale di atas dimasukkan ke dalam matriks citragrayscaleseperti pada Gambar 3.7.

145 190 90

95 60 64

33 71 89

Gambar 3.7 MatriksGrayscaleBlok Citra

3.1.4 Perhitungan Nilai Biner (Binerisasi)

Binerisasi adalah proses untuk mengubah warna citra menjadi hanya dua nilai yaitu 0 dan 1. Proses binerisasi pada matriks citra pada Gambar 3.7 di atas adalah dengan teknik threshold, dimana nilai grayscale dibawah 128 dimasukkan ke dalam nilai 0 sedangkan nilai grayscale diatas 128 dimasukkan ke nilai 1. Proses threshold dapat sebagai berikut.

Nilai 1451 Nilai 1901 Nilai 900 Nilai 950 Nilai 600 Nilai 640 Nilai 330


(41)

Nilai 710 Nilai 890

Nilai threshold diatas dimasukkan pada matriks citra biner seperti pada Gambar 3.8.

1 1 0

0 0 0

0 0 0

Gambar 3.8 Matriks Citra Biner

3.1.5 Inisialisasi Kernel Sobel

Deteksi tepi berfungsi untuk mempertegas batas batas citra atau untuk meningkatkan penampakan objek dengan latar belakang citra. Pada penelitian ini digunakan operator Sobel dengan dua buah kernel seperti pada Gambar 3.9.

-1 0 1 1 2 1

-2 0 2 0 0 0

-1 0 1 -1 -2 -1

Sx Sy

Gambar 3.9 Dua Buah Kernel

3.1.6 Perhitungan Gradien (M)

Pada citra manuskrip kuno dilakukan deteksi tepi dengan mengambil 1 blok citra 3 x 3

Pixelseperti pada Gambar 3.10.

1 1 0 -1 0 1 1 2 1

0 0 0 -2 0 2 0 0 0

0 0 0 -1 0 1 -1 -2 -1

Gambar 3.10 Matriks citra 3x3Pixeldengan Dua Kernel sx = 1(-1) + 0(-2) + 0(-1) +0(1) +0(2) + 0(1)


(42)

27

= -1

sy = 1(1)+1(2)+0(1)+0(-1)+0(-2)+ 0(-1) = 1 +1 +0 -0 -1 -0

= 1

Perhitungan nilai gradien (M) adalah sebagai berikut: M = |sx| + |sy|

M = |-1| + |1| M = |2|

Nilai gradien yang diperoleh adalah 2, karena 2 adalah < 128, maka 2 dimasukkan ke dalam nilai 0.

3.1.7 Pemetaan Nilai Gradien ke Citra baru

Citra hasil gradien yang diperoleh sebesar 2 dari perhitungan deteksi tepi untuk pixel

blok 3 x 3 dipetakan ke citra baru seperti pada Gambar 3.11 .

1 1 0

0 0 0

0 0 0

Gambar 3.11 Matriks Hasil Deteksi Tepi Citra 3x3

Selanjutnya dilakukan proses yang sama untuk blok citra 3 x 3 piksel blok n+1 sampai seluruh blok citra habis diproses deteksi tepi.

3.1.8 Flow chartDeteksi Tepi

Flow chart Deteksi Tepi dengan metode deteksi tepi operator Sobel dapat dilihat seperti pada Gambar 3.12.


(43)

Hitung Nilai Grayscale Citra Blok n

Hitung Gradien (M) dengan Kernel

Sobel Sxdan Sy

Start

Input Citra Manuskrip

Petakan Nilai M ke Piksel Citra Baru Hitung Jumlah Piksel Citra

Stop

Tampilkan Citra Deteksi Tepi

Pembagian Citra menjadi Blok 3x3 Piksel (n)

Baca Citra Blok n

Blok(n) =0 ? Blok(n) =Blok(n)-1

No

Yes Hitung Nilai Biner Citra Blok n


(44)

29

Keterangan gambar:

Pada citra inputan, dilakukan pembacaan nilai piksel untuk pembentukan matriksgrayscale dan biner.Proses perhitungan gradien dilakukan pada matriks citra 3 x 3 piksel dengan kerner Sobel Sx dan Sy. Hasil perhitungan gradien dipetakan ke piksel pada matriks citra baru sebagai citra hasil deteksi tepi.

3.1.9 Penelitian Deteksi Tepi Terkait

Pada penelitian Muhammad Kusban 2010. yang berjudul Deteksi Tepi Citra Bidang Kedokteran Dalam Kawasan AlihragamPowerlaw, digunakan algoritma yang sedikit lebih kompleks dalam proses deteksi tepi sebuah citra. file digital dikumpulkan dan dimasukkan dalam folder yang sama dengan sistim software Matlab yang digunakan untuk mendeteksi tepi citra. File dipilih yang berukuran di bawah [1024 1024] guna mempercepat proses komputasi serta kemungkinan dapat terpampang dalam batas pandang di layar monitor. Berikut adalahFlowchartproses deteksi tepi.


(45)

a. Citra bidang kedokteran dari hasilrontgent di-digitalkan dan disimpan dalam file berformat JPG. Citra hitam-putih tersebut dikumpulan dalam direktori yang sama dengan fungsi deteksi tepi. Satu demi satu citra diproses dengan deteksi tepi (Konvolusi, resize citra, blok pengisi, dan thresholding). Misalkan dengan proses deteksi tepi metode Sobel, konvolusi dilakukan dengan citra berukuran [1024 1024] dengan blok pengisi bernilai [1 2 1; 0 0 0; -1 -2 -1]. Citra dikonvolusikan dengan blok pengisi yang selanjutnya nilai citra yang digunakan adalah yang memiliki nilai diatas threshold dengan rumus dengan M adalah nilai baris dan N adalah kolom citra.

b. Saat proses deteksi tepi, nilai perbaikan citra dilakukan dengan metode gaussian smoothing. Dalam penelitian ini menggunakan nilai 0.1 dan 0.5.

c. Proses deteksi tepi diulangi lagi dalam proses loop dengan nilai random dalam hal ini menggunakan nilai perkiraan dari saat t=0 detik hingga proses satu buah deteksi tepi selesai.

d. Nilai proses loop yang dihasilkan yang kemudian dikonvolusikan dalam kawasan

Laplacian order ke-1 dengan matrik bernilai [0 -1 0; -1 4 -1; 0 -1 0], nilainya dibatasi hingga dibawah nilai threshold dengan nilai baru dengan rumus

Dengan menggunakan beragam citra kedokteran, didapatkan hasil proses deteksi citra sebagai berikut :


(46)

31

Gambar 3.15. Citra hasil operasi Prewitt A dan operasi Canny B

Gambar 3.16. Citra hasil operasi zero-cross A dan operasi LoG B

Penggunaan operator powerlaw meningkatkan intensitas citra sehingga saat operasi deteksi tepi dijalankan akan memberikan tingkat kecerahan dalam garis batas antar objek. Waktu proses terlama yang diperlukan untuk sekali proses deteksi tepi, terjadi saat menggunakan operator Canny.

3.2 Perancangan Sistem

Rancang sistem yang diusulkan adalah dalam model Diagram Konteks danData Flow Diagram(DFD) yang menampilkan kebutuhan sistem serta entitas luar yang terlibat dalam proses deteksi tepi citra manuskrip kuno.


(47)

3.2.1 Diagram Konteks Sistem

Pada diagram konteks adalah gambaran sistem dengan entitas luar (external entity) yang terdapat pada perangkat lunak yang dibangun yaituUsersebagai pengguna yang memberi masukan berupa file citra manuskrip kuno ke dalam sistem. Selanjutnya sistem akan mengolah citra dan memberikan hasil pengolahan citra kepada User

sebagai pengguna perangkat lunak. Diagram Konteks dapat dilihat seperti pada Gambar 3.17.

Gambar 3.17 Diagram Konteks

Pada Gambar 3.17, sistem adalah perangkat lunak perbaikan citra dengan teknik deteksi tepi menggunakan operator Sobel dan User adalah aktor atau orang mengoperasikan sistem.

3.2.2 Data Flow Diagram Level 1

Data Flow Diagram Level 1 adalah suatu diagram menggambarkan proses deteksi tepi citra sampai menghasilkan citra hasil pengolahan. DFD Level 1 dapat dilihat seperti pada Gambar 3.18.

Citra Deteksi Tepi n

0 Perangkat Lunak

Perbaikan Kualitas Citra

Teks USER


(48)

33

Gambar 3.18 DFD Level 1

Pada Gambar 3.18 diatas, terlihat 6 proses pengolahan citra manuskrip agar menjadi citra deteksi tepi. Proses 1.1 adalah perhitungan nilai warna RGB (red,green

dan blue) dari nilai intensitas per piksel citra manuskrip. Proses 1.2 adalah perhitungan nilaigrayscale per piksel dari nilai RGB diatas. Proses 1.3 adalah proses biner, Proses 1.4 adalah proses perhitungan nilai gradien (M) yang akan digunakan untuk citra hasil dengan mengalikan nilai grayscale dengan dua filter Sobel (Sx dan Sy). Proses 1.5 adalah pemetaan nilai gradien (M) ke citra baru sebagai hasil deteksi tepi dan Proses 1.6 adalah penyimpanan citra hasil pengolahan kemedia store.

Nilai Grayscale 1.1 Hitung Nilai RGB Piksel Citra Nilai RGB Citra Asli 1.5 Petakan Nilai M

ke piksel citra baru 1.2 Hitung Nilai Grayscale Piksel Citra USER

Simpan Citra Deteksi Tepi

Nilai (M)Gradien

1.4

Hitung Gradien dengan Kernel Sobel Sxdan Sy

1.3 Hitung Nilai Biner Piksel Citra Nilai Biner 1.6 Tampilkan Hasil Deteksi Tepi


(49)

3.2.3 Perancangan Antarmuka (interface)

Perancangan antar muka adalah rancangan tampilan yang menghubungkan pengguna (user)dengan komputer dengan bantuan program. Salah satu syarat pembuatan antar muka adalah berorientasi pada mudah digunakan (user friendly) serta informatif.

3.2.3.1 Rancangan Menu Utama

Rancangan Menu Utama merupakan tampilan yang pertama kali muncul saat program dijalankan. Pada rancangan ini terdapat menu Deteksi Tepi, Help, About dan Exit. Menu Deteksi Tepi berfungsi untuk menampilkan sub program deteksi tepi operator Sobel,Help berfungsi untuk menampilkan informasi bantuan, About berfungsi untuk menampilkan keterangan seputar aplikasi yang dibangun dan Exit berfungsi untuk keluar dari sistem. Rancangan Menu Utama terlihat seperti pada Gambar 3.19.

Gambar 3.19 Rancangan Menu Utama

3.2.3.2 RancanganFormDeteksi Tepi

Judul Skripsi

Gambar Pembukaan


(50)

35

manuskrip kuno yang berformat .jpg dan .bmp. Fungsi tombol yang terdapat pada rancangan ini adalah: Tombol Load Citra adalah tombol untuk melakukan pemanggilan file citra dari memori komputer dan menampilkannya padapicture box, tombol Proses untuk melakukan proses deteksi tepi, tombol Bersih untuk melakukan pembersihan tampilan dan tombol Keluar untuk menutup tampilan form. Rancangan

formDeteksi Tepi dapat dilihat seperti pada Gambar 3.20.

Gambar 3.20 RancanganFormDeteksi Tepi

3.2.3.3 RancanganHelp

Rancangan Help adalah tampilan sederhana yang hanya memiliki satu tombol yaitu tombol Keluar. Rancangan ini berguna untuk menampilkan informasi tentang tata cara pengoperasian aplikasi yang dijelaskan tahap demi tahap. Untuk lebih jelasnya rancanganHelpdapat dilihat seperti pada Gambar 3.21.

Tampilan Citra

Nama File xxxxxxxxxxxxxxxxxxxxxxxxx Nama File xxxxxxxxxxxxxxxxxxxxxxxx

Tampilan Citra Grayscale

Proses Simpan

Load

Size xxxxx

Keluar

Size xxxxx

Bersih

Tampilan Citra Hasil Deteksi Tepi Tampilan Citra


(51)

Gambar 3.21 RancanganHelp

3.2.3.4 RancanganAbout

Rancangan About ini berfungsi menampilkan informasi tentang profil penulis. Profil penulis meliputi biodata penulis serta data-data akademik. Rancangan About dapat dilihat seperti pada Gambar 3.22.

Tata Cara Pengoperasian Sistem

Tutup

Judul Skripsi

Tutup Profil Penulis Skripsi

Nama : xxxxxxxxx NIM: xxxxxxxxxxx Logo USU


(52)

37

3.2.4 Rancangan Pengujian

Rancangan Pengujian berfungsi untuk menampilkan hasil proses deteksi citra-citra uji seperti pada Gambar 3.21 berikut ini.

No Citra Asli Manuskrip Citra hasil Deteksi Tepi

xx xxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xx xxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx

xx xxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx

xx xxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxx


(53)

4.1 Implementasi

Algoritma edge detection menggunakan operator Sobel untuk memperbaiki kualitas citra teks adalah tampilan hasil rancangan dari penulisan kode program dimulai dari program Menu Utama yang terdiri dari menu DeteksiTepi,Help,AboutsertaExit.

4.1.1 Tampilan Menu Utama

Tampilan Menu Utama merupakan tampilan yang berisi judul skripsi, gambar latar serta tampilan menu. Tampilan Menu terdiri dari menu DeteksiTepi,Help,Aboutserta

Exit. Tampilan Menu Utama dapat dilihat pada Gambar 4.1.


(54)

39

4.1.2 Tampilan Form DeteksiTepi

Tampilan DeteksiTepi merupakan tampilan berguna untuk melakukan proses deteksi tepi dengan operator Sobel. Tampilan form Deteksi Tepi dapat dilihat pada Gambar 4.2.

Gambar 4.2 TampilanFormDeteksiTepi

Keterangan:

Pada Gambar 4.2 diatas adalah tampilan awal citra manuskrip kuno yang telah di Load dari memori komputer yang berukuran 151566 kb. Untuk melakukan deteksi tepi, maka pilih tombol Proses dan hasilnya dapat dilihat seperti Gambar 4.3.


(55)

Gambar 4.3 Tampilan Hasil Deteksi Tepi

Pada Gambar 4.3, terlihat hasil deteksi tepi citra manuskrip kuno dengan nama file Picture_008.jpg yang berukuran 397494 kb.

4.1.3 Tampilan Bantuan

Tampilan Help berfungsi untuk menampilkan penjelasan proses-proses yang terjadi pada proses reduksi noise. TampilanHelpdapat dilihat pada Gambar 4.4.


(56)

41

4.2 Pengujian

Hasil Pengujian edge detection menggunakan operator Sobel untuk memperbaiki kualitas citra teks berfungsi untuk menampilkan hasil deteksi tepi citra pada citra manuskrip. Tampilan Hasil Pengujian dapat dilihat pada Gambar 4.6.

4.2.1 Pengujian Citra Format JPG

Pengujian edge detection menggunakan format citra yang telah dikompresi dengan format JPG sebagai berikut:

1. Citra Test 1.jpg

Gambar 4.5 Tampilan Hasil Deteksi Tepi File Citra Test 1.jpg

Pada Gambar 4.9 fox pada citra teks manuskrip dapat dikurangi tanpa merusak teks manuskrip sehingga teks menjadi lebih jelas. Dari keseluruhan citra manuskrip kuno yang dideteksi tepi menghasilkan citra keabu-abuan yang size-nya lebih besar dari file citra aslinya.


(57)

2. Citra Test 2.jpg

Gambar 4.6 Hasil Deteksi Tepi File Citra Test 2.jpg

Pada Gambar 11 diatas bentuk tulisan file citra hasil deteksi terlihat tidak terlalu baik, hal ini disebabkan oleh pencahayaan yang kurang baik pada objek uji. Hal ini berarti untuk mendapatkan hasil deteksi tepi yang baik, teknik perekekaman file citra juga menjadi poin penting.


(58)

43

Pada Gambar 12 diatas terdapat area teks yang terlihat jelas pada hasil proses deteksi tepi. Hal ini juga merupakan efek dari tekhnik pengambilan gambar uang tunai citra objek uji.

Meskipun memiliki beberapa kelebihan dalam penggunaan aplikasi deteksi tepi, beberapa kelemahan penggunaan deteksi tepi ditemukan dalam kasus deteksi citra yang memiliki nilai kontras rendah. Kesulitan deteksi tepi semakin bertambah besar saat digunakan dalam deteksi tepi citra yang memiliki struktur elemen searah.

4.2.2 Pengujian Citra Format BMP

Pengujian edge detection yang kedua menggunakan format citra yang belum dikompresi dengan format BMP sebagai berikut:

1. Citra Test 1.bmp


(59)

Pada Gambar 4.14 fox pada citra teks manuskrip bagian atas tengah dapat dikurangi sehingga teks menjadi lebih jelas. Gambar objek pada bagian tengah berupa lingkaran menjadi lebih jelas dan untuk garis-garis vertikal kurang jelas.


(60)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Setelah merancang dan mengaplikasikan perangkat lunak perbaikan kualitas citra manuskrip kuno dengan mengimplementasikan algoritma edge detection operator Sobel, maka diperoleh hasil pengujian sistem adalah sebagai berikut:

1. Perangkat lunak dapat mengolah citra manuskrip kuno dengan algoritma Edge Detection operator Sobel.

2. Tambahan operator powerlaw meningkatkan intensitas citra saat operasi deteksi tepi dijalankan dan memberikan tingkat kecerahan dalam garis batas antar objek

3. Kualitas citra hasil deteksi tepi secara visual untuk kedua format JPG dan BMP adalah sama.

4. Beberapa kelemahan penggunaan deteksi tepi ditemukan dalam kasus deteksi citra yang memiliki nilai kontras rendah.

5.2 Saran

Adapun saran-saran yang diperlukan untuk penelitian maupun pengembangan berikutnya adalah :

1. Membandingkan operator yang digunakan seperti operator Prewitt, Robert maupun Canny.

2. Sebaiknya menggunakan tambahan operatorpowerlawsaat melakukan deteksi tepi pada sebuah objek.


(61)

Ahmad, N. & Hadinegoro, A. 2012.Metode Histogram Equalization Untuk Perbaikan Citra Digital. Seminar Nasional Teknologi Informasi & Komunikasi Terapan 2012 (Semantik 2012). Semarang, 23 Juni 2012 Program Pasca Sarjana Magister Teknik Informatika,Universitas Atma Jaya Yogyakarta. Arnia, F. & Munadi, K. 2010. Metode Restorasi Citra Manuskrip Kuno Berbasis

Histogram Terekualisasi. Seminar Nasional Teknologi Informasi 2010. Teknik Elektro Universitas Syiah Kuala. Banda Aceh.

Awaluddin, M.D & Bambang Y.Penajaman Dan Segmentasi Citra Pada Pengolahan Citra Digital.Jurnal TEKNIK – Vol. 31 No. 1 Tahun 2010, ISSN 0852-1697. Fakultas Teknik UNDIP Semarang.

Budi, T.A.W., Rahmawati, M. & Dayawati, R.N., Romadhony, A. 2009. Proses Up-Scaling Citra Digital Pada Domain Frekuensi Dengan Menggunakan metode Discrete Wavelet Transform. Konferensi Nasional Sistem Dan Informatika 2009; Bali, November 14, 2009. Fakultas Informatika Institut Teknologi Telkom, Bandung.

Kesiman, M, W, A. 2013.Segmentasi Area Teks Aksara Bali pada Citra Lontar Kuno Bali Berdasarkan Peta Nilai Lacunarity. Seminar Nasional Aplikasi Teknologi Informasi (SNATI) 2013 Yogyakarta, 15 Juni 2013.

Kusban, Muhammad. 2013. Deteksi Tepi Bidang Kedokteran Dalam Kawasan AlihgramPowerlaw Proceeding.Seminar Nasional Teknik & Manajemen Industri 2013. T. Elektro Universitas Muhammadiyah Surakarta.

Kusumanto, RD., Tompunu & Alan N. 2011. Pengolahan Citra Digital Untuk Mendeteksi Obyek Menggunakan Pengolahan Warna Model Normalisasi RGB. Seminar Nasional Teknologi Informasi & Komunikasi Terapan 2011 (Semantik 2011). Jurusan Teknik Komputer, Politeknik Negeri Sriwijaya, Palembang.

Murinto, Putra.,W.P. & Handayaningsih, S. 2008. Analisis perbandingan Histogram Equalization dan Model Logarithmic Image Processing(LIP) untukImage Enhancement. JURNAL INFORMATIKAVol 2, No. 2, Juli 2008.

Pujiyono, W., Murinto & Adam I., 2009. Perbandingan Kinerja Metode Gradient

Berdasarkan OperatorSobelDanPrewittImplementasi Pada Deteksi Sidik Jari. Jurnal Informatika Vol 3, No. 1, Januari 2009.


(62)

47

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

Pujiyono, W., Murinto & Adam I., 2009. Perbandingan Kinerja Metode Gradient

Berdasarkan OperatorSobelDanPrewittImplementasi Pada Deteksi Sidik Jari. Jurnal Informatika Vol 3, No. 1, Januari 2009

T.Sutojo & Wicaksono M.H. 2009. Perbandingan Sensitivitas Filter Deteksi Tepi Sobel Dengan Filter Deteksi Tepi Prewitt Untuk Citra Yang Mengandung Noise Gaussian. Jurnal Techno.Com, Vol. 8 No. 1, Mei 2009. UDINUS Semarang.


(63)

LISTING PROGRAM

1. Menu

Public Class frmMenu

Private Sub HelpToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HelpToolStripMenuItem.Click

frmHelp.Show() End Sub

Private Sub QuitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles QuitToolStripMenuItem.Click

End End Sub

Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click

frmAbt.Show() End Sub

Private Sub ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripMenuItem1.Click

frmEdges1.Show() End Sub

End Class

2. EdgeDetect

Public Class frmEdges1

Dim bmap As Bitmap 'deklarasi gambar/image dengan tipe Bitmap Dim PicAda As Boolean

Dim NmFIle As String Dim nmFILE1 As String Private displayBM As Bitmap

Private Sub cmdLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLoad.Click

OpenFileDialog1.Filter = "Images|*.JPG;*.BMP" OpenFileDialog1.ShowDialog()

If OpenFileDialog1.FileName = "" Then Exit Sub PicAda = True

Pic1.Image = Image.FromFile(OpenFileDialog1.FileName)

Pic1.Width = Pic1.Height * Pic1.Image.Width / Pic1.Image.Height NmFIle = OpenFileDialog1.FileName

lblNmFile.Text = NmFIle

Dim fileDetails As System.IO.FileInfo = New System.IO.FileInfo(NmFIle) lblSize.Text = fileDetails.Length.ToString

cmdProses.Enabled = True End Sub

Private Sub cmdProses_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdProses.Click

cmdLoad.Enabled = False cmdProses.Enabled = False If PicAda = False Then

MsgBox("Pilih dulu gambar yang akan diproses", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses")


(64)

LAMPIRAN A-2

bmap = New Bitmap(Pic1.Image) 'Gambar asli dijadikan gambar Bitmap Pic2.Image = bmap

Dim tempbmp As New Bitmap(Pic2.Image) 'deklarasi gambar Bitmap dari gambar asli untuk diproses

Dim DX As Integer Dim DY As Integer

Dim Red, Green, Blue, Grey As Integer Dim X, Y As Integer

ProgressBar1.Width = Pic2.Width ProgressBar1.Show()

With tempbmp

For X = DX To .Height - DX - 1 For Y = DY To .Width - DY - 1

Red = CInt(.GetPixel(Y, X).R) Green = CInt(.GetPixel(Y, X).G) Blue = CInt(.GetPixel(Y, X).B) Grey = (Red + Green + Blue) / 3

Dim clr As Color = bmap.GetPixel(Y, X) If (Grey < 128) Then

Red = 0 Green = 0 Blue = 0 Else

Red = 255 Blue = 255 Green = 255 End If

bmap.SetPixel(Y, X, Color.FromArgb(Red, Green, Blue)) Next

If X Mod 10 = 0 Then Pic2.Invalidate()

Me.Text = "Progres Proses Biner : " & Int(100 * X / _ (Pic2.Image.Height - 2)).ToString & "%"

ProgressBar1.Value = Int(100 * X / (Pic2.Image.Height - 2)) Pic2.Refresh() End If Next End With ProgressBar1.Hide() Pic2.Refresh()

Me.Text = "Pengolahan Citra : Proses Biner berhasil" Call SobelH()

Call SobelV() End Sub

Sub SobelH()

If PicAda = False Then

MsgBox("Pilih dulu gambar yang akan diproses", _

MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses") Exit Sub

End If

Dim MF(2, 2) As Double MF(0, 0) = -1 'a MF(0, 1) = -2 'b MF(0, 2) = -1 'c MF(1, 0) = 0 'd MF(1, 1) = 0 'e MF(1, 2) = 0 'f MF(2, 0) = 1 'g MF(2, 1) = 2 'h MF(2, 2) = 1 'i


(65)

bmap = New Bitmap(Pic2.Image) Pic3.Image = bmap

Dim tempbmp As New Bitmap(Pic3.Image) Dim DX As Integer = 1

Dim DY As Integer = 1

Dim Red As Integer, Green As Integer, Blue As Integer Dim i As Integer, j As Integer

Dim k As Integer, l As Integer 'untuk mask border ProgressBar1.Width = Pic3.Width

ProgressBar1.Show() With bmap

For i = DX To .Height - DX - 1 For j = DY To .Width - DY - 1

'proses matriks filter

'point(j,i)*e --> titik tengah

Red = CInt(.GetPixel(j, i).R) * MF(1, 1) Green = CInt(.GetPixel(j, i).G) * MF(1, 1) Blue = CInt(.GetPixel(j, i).B) * MF(1, 1) 'proses titik tetangga

'point(j-1,i-1)*a--> MF(0,0)--> titik kiri atas If j - 1 < 1 And i - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 0)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 0)) Else

Red = Red + (CInt(.GetPixel(j - 1, i - 1).R) * _ MF(0, 0))

Green = Green + (CInt(.GetPixel(j - 1, i - 1).G) * _ MF(0, 0))

Blue = Blue + (CInt(.GetPixel(j - 1, i - 1).B) * _ MF(0, 0))

End If

If i - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 1)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 1)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 1)) Else

Red = Red + (CInt(.GetPixel(j, i - 1).R) * MF(0, 1)) Green = Green + (CInt(.GetPixel(j, i - 1).G) * _ MF(0, 1))

Blue = Blue + (CInt(.GetPixel(j, i - 1).B) * MF(0, 1)) End If

If j + 1 > .Width - DY - 1 And i - 1 > 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i - 1).R) * _ MF(0, 2))

Green = Green + (CInt(.GetPixel(j + 1, i - 1).G) * _ MF(0, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i - 1).B) * _ MF(0, 2))

End If

If j - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 0)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 0))


(66)

LAMPIRAN A-4

Green = Green + (CInt(.GetPixel(j - 1, i).G) * _ MF(1, 0))

Blue = Blue + (CInt(.GetPixel(j - 1, i).B) * MF(1, 0)) End If

If j + 1 > .Width - DY - 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i).R) * MF(1, 2)) Green = Green + (CInt(.GetPixel(j + 1, i).G) * _

MF(1, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i).B) * MF(1, 2)) End If

If j - 1 < 1 And i + 1 > .Height - DX - 1 Then Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 0)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 0)) Else

Red = Red + (CInt(.GetPixel(j - 1, i + 1).R) * _ MF(2, 0))

Green = Green + (CInt(.GetPixel(j - 1, i + 1).G) * _ MF(2, 0))

Blue = Blue + (CInt(.GetPixel(j - 1, i + 1).B) * _ MF(2, 0))

End If

If i + 1 > .Height - DX - 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 1)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 1)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 1)) Else

Red = Red + (CInt(.GetPixel(j, i + 1).R) * MF(2, 1)) Green = Green + (CInt(.GetPixel(j, i + 1).G) * _

MF(2, 1))

Blue = Blue + (CInt(.GetPixel(j, i + 1).B) * MF(2, 1)) End If

If j + 1 > .Width - DY - 1 And i + 1 > .Height - DX 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i + 1).R) * _ MF(2, 2))

Green = Green + (CInt(.GetPixel(j + 1, i + 1).G) _ * MF(2, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i + 1).B) * _ MF(2, 2))

End If

If Red < 0 Then Red = 0 Else

If Red > 255 Then Red = 255 End If

End If

If Green < 0 Then Green = 0 Else

If Green > 255 Then Green = 255


(1)

bmap = New Bitmap(Pic2.Image) Pic3.Image = bmap

Dim tempbmp As New Bitmap(Pic3.Image) Dim DX As Integer = 1

Dim DY As Integer = 1

Dim Red As Integer, Green As Integer, Blue As Integer Dim i As Integer, j As Integer

Dim k As Integer, l As Integer 'untuk mask border ProgressBar1.Width = Pic3.Width

ProgressBar1.Show() With bmap

For i = DX To .Height - DX - 1 For j = DY To .Width - DY - 1

'proses matriks filter

'point(j,i)*e --> titik tengah

Red = CInt(.GetPixel(j, i).R) * MF(1, 1) Green = CInt(.GetPixel(j, i).G) * MF(1, 1) Blue = CInt(.GetPixel(j, i).B) * MF(1, 1) 'proses titik tetangga

'point(j-1,i-1)*a--> MF(0,0)--> titik kiri atas If j - 1 < 1 And i - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 0)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 0)) Else

Red = Red + (CInt(.GetPixel(j - 1, i - 1).R) * _ MF(0, 0))

Green = Green + (CInt(.GetPixel(j - 1, i - 1).G) * _ MF(0, 0))

Blue = Blue + (CInt(.GetPixel(j - 1, i - 1).B) * _ MF(0, 0))

End If

If i - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 1)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 1)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 1)) Else

Red = Red + (CInt(.GetPixel(j, i - 1).R) * MF(0, 1)) Green = Green + (CInt(.GetPixel(j, i - 1).G) * _ MF(0, 1))

Blue = Blue + (CInt(.GetPixel(j, i - 1).B) * MF(0, 1)) End If

If j + 1 > .Width - DY - 1 And i - 1 > 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i - 1).R) * _ MF(0, 2))

Green = Green + (CInt(.GetPixel(j + 1, i - 1).G) * _ MF(0, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i - 1).B) * _ MF(0, 2))

End If

If j - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 0)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 0)) Else


(2)

Green = Green + (CInt(.GetPixel(j - 1, i).G) * _ MF(1, 0))

Blue = Blue + (CInt(.GetPixel(j - 1, i).B) * MF(1, 0)) End If

If j + 1 > .Width - DY - 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i).R) * MF(1, 2)) Green = Green + (CInt(.GetPixel(j + 1, i).G) * _

MF(1, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i).B) * MF(1, 2)) End If

If j - 1 < 1 And i + 1 > .Height - DX - 1 Then Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 0)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 0)) Else

Red = Red + (CInt(.GetPixel(j - 1, i + 1).R) * _ MF(2, 0))

Green = Green + (CInt(.GetPixel(j - 1, i + 1).G) * _ MF(2, 0))

Blue = Blue + (CInt(.GetPixel(j - 1, i + 1).B) * _ MF(2, 0))

End If

If i + 1 > .Height - DX - 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 1)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 1)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 1)) Else

Red = Red + (CInt(.GetPixel(j, i + 1).R) * MF(2, 1)) Green = Green + (CInt(.GetPixel(j, i + 1).G) * _

MF(2, 1))

Blue = Blue + (CInt(.GetPixel(j, i + 1).B) * MF(2, 1)) End If

If j + 1 > .Width - DY - 1 And i + 1 > .Height - DX 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i + 1).R) * _ MF(2, 2))

Green = Green + (CInt(.GetPixel(j + 1, i + 1).G) _ * MF(2, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i + 1).B) * _ MF(2, 2))

End If

If Red < 0 Then Red = 0 Else

If Red > 255 Then Red = 255 End If

End If

If Green < 0 Then Green = 0 Else

If Green > 255 Then Green = 255


(3)

End If End If

If Blue < 0 Then Blue = 0 Else

If Blue > 255 Then Blue = 255 End If

End If

bmap.SetPixel(j, i, Color.FromArgb(Red, Green, Blue)) Next

If i Mod 10 = 0 Then Pic3.Invalidate()

Me.Text = Int(100 * i / (Pic3.Image.Height - 2))_ .ToString & "%"

ProgressBar1.Value = Int(100 * i / (Pic3.Image.Height - 2)) Pic3.Refresh()

End If Next End With

ProgressBar1.Hide() Pic3.Refresh() End Sub

Sub SobelV()

If PicAda = False Then

MsgBox("Pilih dulu gambar yang akan diproses", _

MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Error Proses") Exit Sub

End If

Dim MF(2, 2) As Double MF(0, 0) = 1 'a

MF(0, 1) = 0 'b MF(0, 2) = -1 'c MF(1, 0) = 2 'd MF(1, 1) = 0 'e MF(1, 2) = -2 'f MF(2, 0) = 1 'g MF(2, 1) = 0 'h MF(2, 2) = -1 'i

bmap = New Bitmap(Pic2.Image) Pic4.Image = bmap

Dim tempbmp As New Bitmap(Pic4.Image) Dim DX As Integer = 1

Dim DY As Integer = 1

Dim Red As Integer, Green As Integer, Blue As Integer Dim i As Integer, j As Integer

Dim k As Integer, l As Integer 'untuk kernel border ProgressBar1.Width = Pic4.Width

ProgressBar1.Show() With bmap

For i = DX To .Height - DX - 1 For j = DY To .Width - DY - 1

Red = CInt(.GetPixel(j, i).R) * MF(1, 1) Green = CInt(.GetPixel(j, i).G) * MF(1, 1) Blue = CInt(.GetPixel(j, i).B) * MF(1, 1) If j - 1 < 1 And i - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 0))


(4)

Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 0)) Else

Red = Red + (CInt(.GetPixel(j - 1, i - 1).R) * _ MF(0, 0))

Green = Green + (CInt(.GetPixel(j - 1, i - 1).G) * _ MF(0, 0))

Blue = Blue + (CInt(.GetPixel(j - 1, i - 1).B) * _ MF(0, 0))

End If

If i - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 1)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 1)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 1)) Else

Red = Red + (CInt(.GetPixel(j, i - 1).R) * MF(0, 1)) Green = Green + (CInt(.GetPixel(j, i - 1).G) * _

MF(0, 1))

Blue = Blue + (CInt(.GetPixel(j, i - 1).B) * MF(0, 1)) End If

If j + 1 > .Width - DY - 1 And i - 1 > 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(0, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(0, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(0, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i - 1).R) * _ MF(0, 2))

Green = Green + (CInt(.GetPixel(j + 1, i - 1).G) * _ MF(0, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i - 1).B) * _ MF(0, 2))

End If

If j - 1 < 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 0)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 0)) Else

Red = Red + (CInt(.GetPixel(j - 1, i).R) * MF(1, 0)) Green = Green + (CInt(.GetPixel(j - 1, i).G) * _

MF(1, 0))

Blue = Blue + (CInt(.GetPixel(j - 1, i).B) * MF(1, 0)) End If

If j + 1 > .Width - DY - 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(1, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(1, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(1, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i).R) * MF(1, 2)) Green = Green + (CInt(.GetPixel(j + 1, i).G) * _

MF(1, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i).B) * MF(1, 2)) End If

If j - 1 < 1 And i + 1 > .Height - DX - 1 Then Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 0)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 0)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 0)) Else

Red = Red + (CInt(.GetPixel(j - 1, i + 1).R) * _ MF(2, 0))

Green = Green + (CInt(.GetPixel(j - 1, i + 1).G) _ * MF(2, 0))


(5)

MF(2, 0)) End If

If i + 1 > .Height - DX - 1 Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 1)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 1)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 1)) Else

Red = Red + (CInt(.GetPixel(j, i + 1).R) * MF(2, 1)) Green = Green + (CInt(.GetPixel(j, i + 1).G) * _

MF(2, 1))

Blue = Blue + (CInt(.GetPixel(j, i + 1).B) * MF(2, 1)) End If

If j + 1 > .Width - DY - 1 And i + 1 > .Height - DX 1 _ Then

Red = Red + (CInt(.GetPixel(j, i).R) * MF(2, 2)) Green = Green + (CInt(.GetPixel(j, i).G) * MF(2, 2)) Blue = Blue + (CInt(.GetPixel(j, i).B) * MF(2, 2)) Else

Red = Red + (CInt(.GetPixel(j + 1, i + 1).R) * _ MF(2, 2))

Green = Green + (CInt(.GetPixel(j + 1, i + 1).G) _ * MF(2, 2))

Blue = Blue + (CInt(.GetPixel(j + 1, i + 1).B) * _ MF(2, 2))

End If

If Red < 0 Then Red = 0 Else

If Red > 255 Then Red = 255 End If

End If

If Green < 0 Then Green = 0 Else

If Green > 255 Then Green = 255 End If

End If

If Blue < 0 Then Blue = 0 Else

If Blue > 255 Then Blue = 255 End If

End If

bmap.SetPixel(j, i, Color.FromArgb(Red, Green, Blue)) Next

If i Mod 10 = 0 Then Pic4.Invalidate()

Me.Text = Int(100 * i / (Pic4.Image.Height - 2)).ToString_ & "%"

ProgressBar1.Value = Int(100 * i / (Pic4.Image.Height - 2)) Pic4.Refresh()

End If Next End With

ProgressBar1.Hide() Pic4.Refresh()

cmdSimpan.Enabled = True End Sub


(6)

Private Sub cmdKeluar_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles cmdKeluar.Click

Close() End Sub

Private Sub cmdBersih_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles cmdBersih.Click

Pic1.Image = Nothing Pic2.Image = Nothing Pic3.Image = Nothing Pic4.Image = Nothing lblNmFile.Text = "" lblNmFile1.Text = "" lblSize.Text = "" lblSize1.Text = ""

cmdSimpan.Enabled = False cmdLoad.Enabled = True End Sub

Private Sub cmdSimpan_Click(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles cmdSimpan.Click

cmdSimpan.Enabled = False Dim i As Integer

Dim str As String For i = 1 To 1000

If i < 10 Then str = "Picture_00" & i.ToString & ".jpg"

If i > 9 And i < 100 Then str = "Picture_0" & i.ToString & ".jpg" If i > 99 Then str = "Picture_" & i.ToString & ".jpg"

If i > 900 Then MsgBox("err")

If Not System.IO.File.Exists(str) Then Try

Pic3.Image.Save(str, _

System.Drawing.Imaging.ImageFormat.Jpeg) System.Drawing.Imaging.ImageFormat.Png)

lblNmFile1.Text = Application.StartupPath & "\" & str Catch Ex As Exception

MsgBox("Gagal") End Try

Exit For End If Next

Dim fileDetails As System.IO.FileInfo = New _ System.IO.FileInfo(lblNmFile1.Text) lblSize1.Text = fileDetails.Length.ToString

MsgBox("Gambar berhasil di simpan ...", MsgBoxStyle.OkOnly, _ "Save Sukses")

cmdLoad.Enabled = True End Sub

Private Sub frmEdges1_Load(ByVal sender As System.Object, ByVal e As _ System.EventArgs) Handles MyBase.Load

cmdProses.Enabled = False cmdSimpan.Enabled = False cmdLoad.Focus()

End Sub End Class