SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Sains (S.Si)
Program Studi Ilmu Komputer
Oleh :
Vitri
NIM : 033124025
PROGRAM STUDI ILMU KOMPUTER
JURUSAN MATEMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
A THESIS
Presented as Partial Fulfillment of the Requirements
To Obtain Sarjana Sains (S.Si) Degree
Computer Science Study Program
By :
Vitri
Student ID : 033124025
COMPUTER SCIENCE STUDY PROGRAM
MATHEMATICS DEPARTMENT
SCIENCE AND TECHNOLOGY FACULTY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
TEKS SASTRA JAWA MODERN
Oleh :
Vitri
NIM : 033124025
telah disetujui oleh
Pembimbing
Anastasia Rita Widiarti, S.Si., M.Kom.
tanggal...
TEKS SASTRA JAWA MODERN
Dipersiapkan dan ditulis oleh :
Vitri
NIM : 033124025
Telah dipertahankan di depan Panitia Penguji
pada tanggal 16 Agustus 2007
dan dinyatakan memenuhi syarat
Susunan Panitia Penguji
Nama Lengkap
Tanda Tangan
Ketua : Ir. Greg. Heliarko, S.J., S.S., B.S.T., M.Sc., M.A. ...
Sekretaris : P.H. Prima Rosa, S.Si., M.Sc.
...
Anggota : Anastasia Rita Widiarti, S.Si., M.Kom.
...
Anggota : Drs. Hj. Haris Sriwindono, M.Kom.
...
Anggota : St. Eko Hari Parmadi, S.Si., M.Kom.
...
Yogyakarta,
16
Agustus
2007
Fakultas
Sains
dan
Teknologi
Universitas
Sanata
Dharma
Dekan,
(Ir. Greg. Heliarko, S.J., S.S., B.S.T., M.Sc., M.A.)
Satu bola basket di tanganku dihargai sekitar 19 dolar,
satu bola basket di tangan Michael jordan dihargai sekitar 30 juta dolar.
Nilainya tergantung di tangan siapa bola itu berada.
2 ekor ikan dan 5 roti di tanganku menjadi sepasang sandwiches ikan,
2 ekor ikan dan 5 roti di tangan Tuhan dapat memberi makan ribuan orang.
Paku di tanganku dapat digunakan membuat satu kandang burung,
paku di tangan Tuhan Yesus Kristus menghasilkan keselamatan untuk seluruh dunia.
Selalu tergantung di tangan siapa benda itu berada.
Oleh karena itu, serahkanlah kegelisahanmu, kekhawatiranmu, ketakutanmu,
harapanmu, impianmu dan keluargamu ke dalam tangan Tuhan,
karena...dalam tangan-Nya segala sesuatu dibuat-Nya menjadi berguna bagimu dan
bagi orang yang kau kasihi.
Engkau akan menjadi mahkota keagungan di tangan Tuhan dan serban kerajaan di
tangan Allahmu (Yesaya 62:3)
Skripsi ini ku persembahkan UNTUK :
•
Tuhanku Yesus Kristus
•
Papa dan Mamaku tercinta
•
Koko dan ceceku tersayang
M O TTO :
J adilah diri an da sen diri. Siapa lagi yan g bisa m elakukan n ya lebih baik
ketim bang diri anda sendiri? -
Fr a n k Gib lin , Ii
Do all the goods you can , All the best you can , In all tim es you can , In all places
you can , For all the creatures you can .
tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan
dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta,
16
Agustus
2007
Penulis
Vitri
Vitri
INTISARI
Dokumen teks sastra jawa modern merupakan warisan kebudayaan yang
sangat penting dan patut dilestarikan baik secara fisik maupun makna. Pengenalan
citra dokumen adalah salah satu cara pelestarian yang bisa dilakukan, karena
dengan pengenalan citra, dokumen teks tersebut dapat dikenali dan dapat bertahan
lebih lama.
Segmentasi adalah tahapan dalam proses pengolahan citra tingkat piksel
dengan tujuan utama untuk mendapatkan citra-citra karakter penyusun citra
dokumen teks. Citra karakter penyusun tersebut akan berfungsi sebagai masukan
untuk tahap selanjutnya yaitu pengenalan citra karakter.
Penelitian ini membuat sebuah sistem segmentasi citra dokumen teks
sastra Jawa modern. Data masukan untuk sistem diperoleh dari hasil pembacaan
dokumen teks sastra Jawa modern dengan alat optis, yang kemudian disimpan
sebagai file gambar dengan format *.bmp. Metode segmentasi yang dipergunakan
adalah profil proyeksi dan chain code, dan dikembangkan menggunakan bahasa
pemrograman Delphi.
Dari hasil penelitian terhadap 5 citra dokumen, diperoleh rata-rata
prosentase keberhasilan segmentasi sebesar 94,62% dengan rata-rata waktu yang
dibutuhkan adalah 28,143 detik. Dengan demikian, dapat disimpulkan bahwa
pemilihan metode profil proyeksi dan chain code pada penelitian ini relatif sudah
baik.
Vitri
ABSTRACT
Text document of modern Javanese literature is a cultural heritage which is
very important and needed to be preserved both physically and semantically. The
recognition of document image is one of the preservation efforts that can be done,
since through the image recognition, the text document could be recognized and
therefore could survive longer.
Segmentation is one of the stages in pixel image processing whose main
objective is to obtain character images that forms the text document. Those
character will be as the inputs of the next stage namely character image
recognition.
The objective of this research is to develop an image segmentation system
of modern Javanese literature’s text document. The input data of the system is
obtained from the scanning of modern Javanese literature’s text document using
an optical device, which later on is saved as picture file in *.bmp format. The
segmentation methods used are the projection profile and the chain code. The
system is developed using Delphi programming language.
Based on the experiments using five document images, the average
percentage of segmentation succes rate is 94,62%, while the averagge time needed
is 28,14 seconds. Therefore, it can be concluded that the choosing of the
projection profile and the chain code methods in this research is relatively
appropriate.
rahmat dan kasih-Nya sehingga penulis dapat menyelesaikan skripsi dengan judul
“Segmentasi Citra Dokumen Teks Sastra Jawa Modern”
.
Skripsi ini disusun sebagai salah satu syarat untuk memperoleh gelar
Sarjana Sains (S.Si) Program Studi Ilmu Komputer di Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.
Dalam penulisan skripsi penulis menyadari banyak pihak yang telah
memberikan sumbangan baik pikiran, waktu, tenaga, bimbingan dan dorongan
pada penulis sehingga akhirnya skripsi ini dapat selesai. Oleh karena itu dengan
segala kerendahan hati penulis menyampaikan ucapan terima kasih yang
sebesar-besarnya kepada :
1.
Ibu Anastasia Rita Widiarti, S.Si., M.Kom. selaku dosen pembimbing yang
telah memberikan bimbingan, arahan, dan petunjuk selama penulisan skripsi.
2.
Bapak Drs. Hj. Haris Sriwindono, M.Kom selaku dosen pembimbing
akademik, sekaligus dosen penguji yang telah memberikan bimbingan,
masukan, saran, dan kritik yang membangun untuk skripsi ini.
3.
Bapak St. Eko Hari Parmadi, S.Si., M.Kom selaku dosen penguji yang telah
memberikan, masukan, saran dan kritik yang membangun untuk skripsi ini.
4.
Romo Gregorius Heliarko selaku Dekan Fakultas Sains dan Teknologi.
5.
Ibu P.H. Prima Rosa, M.Sc.selaku Kepala Program Studi Ilmu Komputer atas
kesabaran dan bimbingannya.
6.
Seluruh dosen pengajar Program Studi Ilmu Komputer Universitas Sanata
Dharma yang telah membimbing penulis selama kuliah, dan seluruh karyawan
terkait atas bantuan yang diberikan untuk kelancaran penyelesaian skripsi
7.
Papa dan Mama atas kasih sayang, doa yang tulus, dorongan semangat, dan
pengorbanannya selama ini.
8.
Kedua kakak penulis Andrew Michael dan Vivi yang telah banyak
memberikan bantuan, dorongan semangat, pelajaran hidup dan kasih sayang.
9.
Iwan yang telah memberi banyak pelajaran hidup, semangat dan kasih sayang,
sehingga penulis menjadi lebih kuat dan dewasa dalam menjalani hidup.
10.
Mbak Tika yang selalu memberikan bantuan, dorongan semangat dan selalu
siap mendampingi penulis.
11.
Kadek, Anjar, Clara dan Rey atas bantuan, semangat dan kerjasamanya selama
kuliah dan dalam penulisan skripsi ini.
12.
Semua teman seperjuangan ikom’03.
13.
Semua pihak yang tidak dapat penulis sebutkan satu persatu.
Penulis menyadari bahwa skripsi ini masih banyak kekurangan dan jauh dari
kesempurnaan, sehingga segala kritik dan saran yang bersifat membangun sangat
penulis harapkan demi perbaikan skripsi ini. Akhirnya dengan segala kekurangan
yang ada, penulis berharap agar skripsi ini masih dapat diambil manfaatnya.
Yogyakarta,
16
Agustus
2007
Penulis
HALAMAN PERSETUJUAN PEMBIMBING ...
HALAMAN PENGESAHAN ...
HALAMAN PERSEMBAHAN ...
PERNYATAAN KEASLIAN KARYA ...
INTISARI ...
ABSTRACT ...
KATA PENGANTAR ...
DAFTAR ISI ...
DAFTAR TABEL ...
DAFTAR GAMBAR ...
DAFTAR LAMPIRAN ...
BAB 1 PENDAHULUAN ...
A.
Latar Belakang ...
B.
Rumusan Masalah ...
C.
Batasan Masalah ...
D.
Tujuan dan Manfaat ...
E.
Metode ...
F.
Sistematika Penulisan ...
BAB 2 DASAR TEORI ...
ii
iii
iv
v
vi
vii
viii
x
xiii
xiv
xvi
1
1
3
3
3
4
4
6
A.
Citra ...
1.
Citra Biner ...
2.
Citra Skala Keabuan ...
3.
Citra Warna ...
4.
Citra Warna Berindeks ...
B.
Citra Dokumen Teks ...
C.
Pengolahan Citra Digital ...
D.
Histogram ...
E.
Binarisasi ...
F.
Segmentasi Citra Dokumen ...
1.
Profil Proyeksi ...
2.
Kode Rantai (Chain Code) ...
BAB 3 ANALISA DAN PERANCANGAN ...
A.
Analisa ...
B.
Perancangan ...
1.
Perancangan Proses ...
2.
Perancangan Menu ...
3.
Perancangan Teknologi ...
4.
Perancangan Antar Muka ...
5.
Perancangan Struktur Data ...
BAB 4 IMPLEMENTASI ...
A.
Implementasi Antar Muka dan Menu ...
B.
Implementasi Proses ...
6
6
7
8
8
9
10
13
13
15
15
16
18
18
19
19
23
25
25
29
31
31
34
BAB 5 HASIL DAN PEMBAHASAN ...
A.
Data Masukan ...
B.
Perangkat Keras dan Perangkat Lunak ...
C.
Eksekusi Modul ...
D.
Analisis Output ...
BAB 6 KESIMPULAN DAN SARAN ...
A.
Kesimpulan ...
B.
Saran ...
DAFTAR PUSTAKA ...
LAMPIRAN ...
46
46
46
47
54
64
64
64
65
66
Tabel 2. Hasil indeks baris ...
Tabel 3. Hasil indeks baris ...
Tabel 4. Cuplikan hasil Chain code citra dokumen data 1 ...
Tabel 5. Waktu Proses binarisasi dan segmentasi...
Tabel 6. Besar file hasil binarisasi dan segmentasi...
Tabel 7. Analisis output Segmentasi Citra Dokumen data 1 ...
Tabel 8. Analisis output Segmentasi Citra Dokumen data 2 ...
Tabel 9. Analisis output Segmentasi Citra Dokumen data 3 ...
Tabel 10. Analisis output Segmentasi Citra Dokumen data 4 ...
Tabel 11. Analisis output Segmentasi Citra Dokumen data 5 ...
Tabel 12. Rangkuman hasil Analisis output sistem ...
50
51
53
54
55
55
57
58
60
61
63
Gambar 2. Citra skala keabuan dan representasinya dalam data digital ...
Gambar 3. Citra warna dan representasinya dalam data digital ...
Gambar 4. Citra warna berindeks dan representasinya dalam data digital ...
Gambar 5. Citra dokumen teks ...
Gambar 6. Histogram citra ...
Gambar 7. citra dengan proyeksi vertikal dan horizontal ...
Gambar 8. Chain code 4 arah mata angin ...
Gambar 9. Chain code 8 arah mata angin ...
Gambar 10. Diagram konteks ...
Gambar 11. DAD level 1 ...
Gambar 12. DAD level 2 untuk proses binarisasi ...
Gambar 13. DAD level 2 untuk proses segmentasi ...
Gambar 14. Rancangan menu ...
Gambar 15. Rancangan antar muka menu utama ...
Gambar 16. Rancangan antar muka menu hasil segmentasi baris ...
Gambar 17. Rancangan antar muka menu hasil segmentasi kolom ...
Gambar 18. Rancangan antar muka menu chain code ...
Gambar 19. Rancangan antar muka menu piksel awal ...
Gambar 20. Rancang antar muka menu piksel biner ...
7
8
9
10
13
16
17
17
19
20
20
21
23
25
26
27
28
28
29
Gambar 21. Form Judul ...
Gambar 22. Form Utama ...
Gambar 23. Form Indeks baris ...
Gambar 24. Form Indeks Kolom ...
Gambar 25. Form Chain code ...
Gambar 26. Form Piksel awal ...
Gambar 27. Form Piksel biner ...
Gambar 28. Citra dokumen masukan data 1 ...
Gambar 29. Citra dokumen hasil proses binarisasi data 1 ...
Gambar 30. Histogram baris pada cuplikan citra dokumen data 1 ...
Gambar 31. Hasil pemotongan histogram baris ...
Gambar 32. Histogram kolom pada cuplikan citra dokumen data 1 ...
Gambar 33. Hasil pemotongan histogram kolom ...
Gambar 34. Hasil pemotongan kolom citra baris ...
Gambar 35. Citra dokumen hasil proses segmentasi data 1 ...
Gambar 36. Citra hasil chain code dan Chain code ...
31
31
32
32
33
33
34
47
48
49
49
50
50
51
51
52
Lampiran 2. Data Citra Dokumen Masukan dan Hasil ...
Lampiran 3. Hasil Chain Code ...
86
98
A
LATAR BELAKANG
Dewasa ini, aplikasi-aplikasi yang berhubungan dengan pemrosesan citra
berkembang pesat. Aplikasi-aplikasi pemrosesan citra telah merambah ke
berbagai bidang. Contoh aplikasinya antara lain, analisis citra dokumen,
pengenalan sidik jari, pembacaan kode barang, pengenalan plat nomor
kendaraan dll. Salah satu aplikasi yang paling banyak diteliti dan paling cepat
berkembang adalah ilmu analisis citra dokumen.
Analisis citra dokumen merupakan ilmu yang membahas tentang
algoritma-algoritma dan teknik-teknik yang diterapkan pada citra dokumen
untuk menghasilkan deskripsi yang dapat dikenali oleh komputer (Widiarti,
2006). Contoh kasus yang membutuhkan analisis citra dokumen misalnya
pembaca dokumen sampai dengan pembuatan sistem pengenal huruf otomatis
(automatic character recoqnizer) untuk suatu citra karakter ataupun citra
dokumen.
Sistem pengenal huruf otomatis telah banyak ditemukan pada berbagai alat
elektronik misalnya sebagai media input pengganti keyboard pada PC
genggam atau PDA. Selain itu, dengan adanya sistem pengenal huruf
otomatis, berbagai dokumen teks seperti jurnal-jurnal, surat-surat kantor
bahkan naskah-naskah kuno penting seperti naskah-naskah Jawa, dapat diubah
ke dalam format digital untuk dikenali atau bahkan diperbaharui.
Dokumen teks berupa naskah-naskah kuno seperti naskah Jawa merupakan
peninggalan kebudayaan lokal yang sangat penting dan perlu dilestarikan.
Tidak hanya naskah dokumen secara fisik, makna yang terkandung dalam
naskah dokumen tersebut juga harus dilestarikan dengan cara
menerjemahkannya ke dalam bahasa latin yang mudah dimengerti. Hal ini
membuka peluang yang sangat besar bagi perkembangan ilmu analisis citra
dokumen, khususnya untuk melestarikan naskah-naskah kuno atau dokumen
Jawa yang banyak ditemukan di Yogyakarta.
Secara umum terdapat 3 tahapan utama dalam analisis citra dokumen
(Widiarti, 2006). Pertama, menangkap atau mengambil citra dokumen teks
dengan menggunakan scanner. Kedua, proses pengolaan tingkat piksel.
Ketiga, tahap analisis tingkat fitur. Proses pengolaan tingkat piksel dibagi lagi
menjadi beberapa tahap yaitu binarisasi, normalisasi orientasi, pengurangan
noise (filling), perangkaan (thinning), dan segmentasi citra dokumen.
Sedangkan proses analisis tingkat fitur dibagi menjadi 2 tahap yaitu
pengenalan dan analisis teks serta pengenalan dan analisis grafis.
B
RUMUSAN MASALAH
Bagaimana melakukan proses segmentasi sehingga mendapatkan
citra-citra karakter penyusun citra-citra dokumen teks pada sebuah citra-citra dokumen teks
sastra Jawa modern?
C
BATASAN MASALAH
Sistem yang akan dibangun hanya akan membahas proses segmentasi dan
sedikit proses binarisasi sebuah citra dokumen teks sastra Jawa Modern.
Apabila ada proses sebelum proses segmentasi seperti normalisasi orientasi,
filling dan perangkaan, maka proses-proses tersebut akan dihitung atau
dilakukan secara manual dan tidak dibahas dalam tugas akhir ini.
Citra dokumen masukan yang ideal untuk sistem ini adalah citra dokumen
sastra Jawa modern yang tidak miring, bebas dari derau atau noise, karakter
penyusun citra dokumen tebal dan jelas, serta memiliki batas baris dan kolom
yang jelas.
D
TUJUAN DAN MANFAAT
Tujuan yang ingin dicapai adalah membangun sistem yang dapat
melakukan proses segmentasi untuk memperoleh citra-citra karakter penyusun
yang terdapat dalam citra dokumen teks sastra Jawa modern masukan.
E
METODE
Metode yang digunakan untuk membuat sistem segmentasi citra dokumen
ini adalah sebagai berikut :
1
Pengumpulan kebutuhan sistem
Pada tahap ini yang dilakukan adalah mengumpulkan data-data yang
terkait dengan sistem antara lain : citra dokumen yang akan digunakan
sebagai percobaan dan pelatihan, perangkat keras dan perangkat lunak
yang dibutuhkan.
2
Perancangan sistem
Pada tahap ini dilakukan perancangan yang dibutuhkan dalam sistem,
antara lain : proses-proses yang akan dilakukan, menu dan keterkaitannya,
karakteristik antar muka dan struktur data.
3
Penulisan Program
Merepresentasikan rancangan sistem ke dalam program.
4
Pengujian
Tahap ini dilakukan untuk mengetahui apakah sistem sesuai dengan yang
diinginkan, juga digunakan untuk mengetahui kesalahan yang mungkin
F
SISTEMATIKA PENULISAN
Bab I
Pendahuluan
Bab II
Dasar Teori
Dalam dasar teori akan membahas tentang berbagai dasar yang
mempengaruhi dan mendasari pembuatan sistem segmentasi citra
dokumen sastra Jawa modern ini.
Bab III
Analisis dan Perancangan Sistem
Dalam bab ini akan membahas tentang analisis masalah untuk
mempermudah dalam perancangan sistem serta perancangan sistem
antara lain perancangan modul dan antarmuka.
Bab IV
Implementasi
Dalam bab implementasi membahas tentang representasi dari tahap
perancangan ke dalam program dan pembahasannya.
Bab V
Hasil dan Pembahasan
Dalam bab hasil dan pembahasan menguraikan dan membahas
hasil pengujian sistem.
Bab VI
Kesimpulan dan Saran
A
CITRA
Citra merupakan suatu gambar pada bidang dua dimensi (Munir, 2004).
Secara umum citra dapat dikelompokkan menjadi 2 , yaitu citra tampak seperti
foto keluarga, gambar burung dan citra tak tampak seperti data gambar dalam
file yang sering disebut citra digital. Dari antara kelompok citra tersebut,
hanya citra digital yang dapat diolah menggunakan komputer, sehingga yang
akan dibahas dalam tugas akhir ini hanya citra digital.
Citra digital tersusun atas kumpulan titik atau elemen-elemen gambar yang
disebut piksel (picture element). Piksel merupakan elemen terkecil dari sebuah
citra digital, dengan jumlah total piksel adalah M x N, dimana M merupakan
width (nilai tinggi citra digital) dan N merupakan height
(nilai lebar citra
digital). Setiap piksel memiliki nilai berupa angka digital yang
merepresentasikan informasi yang mewakili piksel tersebut.
Menurut Achmad dan Firdausy (2005), format nilai piksel ditentukan oleh
format citra digital antara lain:
1
Citra Biner
Citra biner merupakan citra yang hanya mempunyai dua nilai
derajat keabuan yaitu hitam dan putih. Setiap piksel pada citra biner
memiliki nilai 0 untuk warna hitam atau 1 untuk warna putih dan hanya
membutuhkan representasi 1 bit. Beberapa contoh citra biner antara lain,
citra logo instansi (yang hanya terdiri atas warna hitam dan putih), citra
kode barang yang tertera pada label barang, dan citra teks (hasil
pemindaian dokumen).
= 0 0 1 1
= 0 0 1 1
= 0 0 1 1
= 0 0 0 1
Gambar 1. Citra biner dan representasinya dalam data digital
2
Citra Skala Keabuan
Citra skala keabuan memberikan kemungkinan warna yang lebih
banyak daripada citra biner. Banyaknya kemungkinan nilai dan nilai
maksimumnya bergantung pada jumlah bit yang digunakan. Misalnya
untuk skala keabuan 8 bit, maka jumlah kemungkinan nilainya adalah 2
8=
256, dan nilai maksimumnya adalah 2
8-1 = 255. Format citra ini disebut
skala keabuan karena pada umumnya warna yang dipakai adalah antara
hitam sebagai warna minimal dan putih sebagai warna maksimalnya,
sehingga warna antaranya adalah abu-abu.
= 107 153 177 175
= 108 143 177 176
= 105 128 162 176
= 105 123 157 173
3
Citra Warna
Pada citra warna, setiap titik mempunyai warna yang spesifik yang
merupakan kombinasi dari 3 warna dasar, yaitu: merah, hijau dan biru.
Format citra seperti ini sering disebut sebagai citra RGB (red-green-blue).
Setiap warna dasar mempunyai intensitas sendiri dengan nilai maksimum
255 (8 bit), misalnya warna kuning merupakan kombinasi warna merah
dan hijau sehingga nilai RGB-nya adalah 255 255 0. Dengan demikian
setiap titik pada citra warna membutuhkan data 3 byte.
Jumlah kombinasi warna yang mungkin unutk format citra ini
adalah 2
24atau lebih dari 16 juta warna, dengan demikian bisa dianggap
mencakup semua warna yang ada.
= 183 168 235 156 131 212 151 115 205 157 101 200
= 146 139 207 130 115 198 139 110 203 149 102 204
= 124 122 195 112 104 190 123 103 202 136 99 204
= 128 131 208 108 104 198 110 98 200 122 93 201
Gambar 3. Citra warna dan representasinya dalam data digital
4
Citra Warna Berindeks
informasi setiap titik merupakan indeks dari suatu tabel yang berisi
informasi warna yang tersedia, yang disebut palet warna.
Palet warna merupakan bagian dari citra warna berindeks, sehingga
pada saat menyimpan citra ini ke dalam file, informasi palet warna juga
harus disertakan.
Gambar 4. Citra warna berindeks dan representasinya dalam data digital
B
CITRA DOKUMEN TEKS
Dokumen teks merupakan sebuah tulisan yang memuat informasi
(Anonim, 2006). Biasanya dokumen ditulis atau dicetak di atas kertas dan
informasinya ditulis menggunakan tinta baik menggunakan tangan ataupun
media elektronik seperti komputer.
Gambar 5. Citra dokumen teks
C
PENGOLAHAN CITRA
DIGITAL
Operasi-operasi yang dilakukan di dalam pengolahan citra banyak
ragamnya. Namun, secara umum, operasi pengolahan citra dapat
diklasifikasikan dalam beberapa jenis (Munir, 2004) sebagai berikut :
1
Perbaikan kualitas citra
Jenis operasi ini bertujuan untuk memperbaiki kualitas citra dengan cara
memanipulasi parameter-parameter citra. Dengan operasi ini, ciri-ciri
khusus yang terdapat di dalam citra lebih ditonjolkan.
2
Pemugaran citra
Operasi ini bertujuan menghilangkan/meminimumkan cacat pada citra.
Tujuan pemugaran citra hampir sama dengan operasi perbaikan citra.
Bedanya, pada pemugaran citra penyebab degradasi gambar diketahui.
3
Pemampatan citra
Jenis operasi ini dilakukan agar citra dapat direpresentasikan dalam bentuk
yang lebih kompak sehingga memerlukan memori yang lebih sedikit. Hal
penting yang harus diperhatikan dalam pemampatan adalah citra yang
telah dimampatkan harus tetap mempunyai kualitas gambar yang bagus.
4
Segmentasi citra
Jenis operasi ini bertujuan untuk memecah suatu citra ke dalam beberapa
segmen dengan suatu kriteria tertentu. Jenis operasi ini berkaitan erat
dengan pengenalan pola yang akan dibahas dalam tugas akhir ini.
5
Analisis citra
tertentu yang membantu dalam identifikasi objek. Proses segmentasi
kadangkala diperlukan untuk melokalisasi objek yang diinginkan dari
sekelilingnya.
6
Rekonstruksi citra
Jenis operasi ini bertujuan untuk membentuk ulang objek dari beberapa
citra hasil proyeksi. Operasi rekonstruksi citra banyak digunakan dalam
bidang medis.
Pengolahan citra pada dasarnya dilakukan dengan cara memodifikasi setiap
titik dalam citra tersebut sesuai keperluan. Menurut Achmad dan Firdausy
(2005), secara garis besar modifikasi tersebut dikelompokkan menjadi:
1.
Operasi titik, dimana setiap titik diolah secara tidak berhubungan terhadap
titik-titik yang lain.
2.
Operasi global, di mana karakteristik global (biasanya berupa sifat
statistik) dari citra digunakan untuk memodifikasi nilai setiap titik.
3.
Operasi temporal/berbasis bingkai, di mana sebuah citra diolah dengan
cara dikombinasikan dengan citra lain.
4.
Operasi geometri, di mana bentuk, ukuran, atau orientasi citra dimodifikasi
secara geometris.
5.
Operasi banyak titik bertetangga, di mana data dari titik-titik yang
bersebelahan dengan titik yang ditinjau ikut berperan dalam mengubah
nilai.
D
HISTOGRAM
Histogram merupakan salah satu alat bantu yang paling sederhana dan
sangat berguna dalam pengolahan citra (Achmad dan Firdausy, 2005).
Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai
intensitas piksel dari suatu citra atau bagian tertentu di dalam citra.
Misalkan citra digital memiliki L derajat keabuan, yaitu dari 0 sampai L-1
(pada citra dengan kuantitas derajat keabuan 8 bit, nilai derajat keabuan dari 0
sampai 255). Secara matematis histogram citra dihitung dengan rumus (Munir,
2004) :
1
,...,
2
,
1
,
0
,
=
−
=
i
L
n
n
h
i iDimana :
n
i= jumlah piksel yang memiliki derajat keabuan i
n = jumlah seluruh piksel di dalam citra
a b
Gambar 6. a) citra skala keabuan, b) histogram citra skala keabuan
E
BINARISASI
proses ini adalah menentukan nilai ambang yang akan berfungsi untuk
membagi citra menjadi dua bagian secara otomatis. Salah satu algoritma
pencarian nilai ambang adalah menggunakan algoritma K-Mean Clustering.
K-Mean Clustering merupakan suatu algoritma yang menggolongkan
suatu objek berdasarkan atribut atau ciri tertentu kedalam K kelompok
(Savakis, 1998). K merupakan banyaknya kelompok yang akan dibentuk dan
bernilai bulat. Dalam kasus binarisasi, kelompok yang akan dibuat sebanyak
dua kelompok yaitu kelompok objek dan kelompok latar belakang. Berikut ini
merupakan algoritma K-Mean Clustering (Teknomo, 2004) :
1
Menentukan jumlah kelompok yang akan dibuat.
2
Inisialisasi Mean (pusat) dari masing-masing kelompok.
3
Menghitung jarak setiap titik terhadap masing-masing pusat dan
mengelompokkan titik tersebut ke dalam kelompok yang memiliki jarak
paling minimum.
4
Menghitung kembali pusat masing-masing kelompok dengan cara
menghitung rata-rata nilai setiap kelompok.
5
Ulangi kembali langkah 3-4 jika masih ada objek yang berpindah
kelompok atau pusat lama tidak sama dengan pusat baru.
6
Nilai ambang diperoleh dengan menghitung rata-rata semua pusat.
Nilai biner suatu citra g(x,y), dimana f(x,y) menyatakan gray-level dari
suatu poin (x,y), dan T menyatakan suatu nilai ambang, didefinisikan sebagai
berikut :
⎩
⎨
⎧
≤
>
=
T
y
x
f
jika
T
y
x
f
jika
y
x
g
)
,
(
0
)
,
(
1
F
SEGMENTASI CITRA DOKUMEN
Segmentasi citra dokumen merupakan tahapan dalam proses pengolahan
citra dokumen tingkat piksel (Widiarti, 2006) dengan tujuan utama untuk
memperoleh citra-citra penyusun yang terdapat dalam citra dokumen masukan
dengan cara melakukan pembagian terhadap citra dokumen masukan sehingga
diperoleh beberapa wilayah berdasarkan kriteria tertentu. Hasil dari proses
segmentasi ini akan digunakan untuk proses yang lebih lanjut yang dapat
dilakukan terhadap suatu citra, yaitu pengenalan citra.
Ada beberapa metode yang dapat digunakan dalam segmentasi citra,
antara lain yaitu :
1
Profil Proyeksi
Metode profil proyeksi dibagi menjadi 2 yaitu profil proyeksi
vertikal dan profil proyeksi horizontal. Profil proyeksi vertikal adalah
banyaknya piksel hitam yang tegak lurus dengan sumbu y, yaitu:
[ ]
∑
[ ]
=
=
Mj
v
i
S
i
j
P
1
,
Sedangkan profil proyeksi horizontal adalah banyaknya piksel
hitam yang tegak lurus dengan sumbu x (Widiarti,2006), yaitu:
[ ]
∑
[ ]
=
=
Ni
h
j
S
i
j
P
1
,
Keterangan :
S =
Citra
M
= Lebar citra
N
= Tinggi citra
i
= Baris
i = 1,2,3...,N
j
= Kolom
j = 1,2,3...,M
Gambar 7. citra dengan proyeksi vertikal dan horizontal
2
Kode Rantai (Chain Code)
Kode rantai (chain code) adalah notasi untuk mengkodekan garis tepi
yang membentuk batas daerah (Munir, 2004). Pengkodean dengan chain
code lebih singkat dan jelas dibandingkan dengan notasi [(x
1,y
1),(x
2,y
2),..].
Kode rantai digambarkan untuk membentuk batas wilayah dimana piksel
putih berada di luar dan piksel hitam berada di dalam batas wilayah. Kode
rantai menspesifikasikan arah setiap piksel tepi di dalam garis tepi. Ada
dua kode arah yang dapat digunakan dalam kode rantai (Price, 1996) :
a
4 arah mata angin
a b
Gambar 8. a) 4 arah mata angin, b) kode rantai : 222110321033
b
8 arah mata angin
Arah yang digunakan adalah 8 arah mata angin, seperti yang
terlihat pada gambar 9. Karena menggunakan 8 arah mata angin, maka
dibutuhkan 3 bit untuk mengkodekan setiap arah.
a
b
Gambar 9. a) 8 arah mata angin, b) kode rantai : 01700754444422
A
ANALISA
Secara garis besar, proses segmentasi citra dokumen sastra jawa modern
membutuhkan
input berupa citra dokumen sastra jawa modern. Sebelum
menjadi
input dalam proses segmentasi, ada beberapa proses yang harus
dilakukan terlebih dahulu terhadap citra dokumen tersebut. Proses-proses
tersebut adalah :
1
Normalisasi orientasi, berfungsi untuk mengurangi kesalahan orientasi,
misalnya citra miring saat pembacaan data citra dokumen dengan scanner.
2
Binarisasi, berfungsi untuk membagi citra menjadi dua kelompok yaitu
kelompok objek yang dinyatakan dengan nilai biner 0 dan kelompok latar
yang dinyatakan dengan nilai biner 1.
3
Filling, berfungsi untuk menghapus sebanyak mungkin noise yang muncul
pada citra dokumen.
Proses normalisasi orientasi dan filling akan dilakukan secara manual dan
tidak akan dibahas lebih lanjut dalam tugas akhir ini.
Selanjutnya, untuk mengatasi input citra dokumen yang tidak biner, sistem
diharapkan mampu mengubah citra dokumen input menjadi citra dokumen
biner. Algoritma pencarian nilai ambang dalam binarisasi yang digunakan
adalah algoritma K-Mean Clustering.
Setelah citra dokumen sudah baik, artinya sudah melewati ketiga proses
diatas, maka citra dokumen tersebut siap menjadi input dari proses
segmentasi. Metode segmentasi yang digunakan ada 2 yaitu profil proyeksi
dan
chain code dengan 8 arah mata angin. Profil proyeksi digunakan untuk
membagi citra dokumen menjadi baris-baris dan kolom-kolom yang berisi
karakter. Kemudian chain code digunakan untuk mengkodekan tepi dari setiap
karakter.
Hasil yang diharapkan adalah memperoleh citra-citra karakter penyusun
citra dokumen beserta chain code dari masing-masing karakter yang terpisah
satu-sama lain.
B
PERANCANGAN
1
Perancangan Proses
a
Diagram Konteks (DAD level 0)
Gambar 10. Diagram konteks
penyusun citra dokumen beserta dengan chain code-nya
masing-masing.
b
DAD level 1
Gambar 11. DAD level 1
Proses pertama yang dilakukan adalah binarisasi terhadap citra
input. Proses binarisasi ini berfungsi untuk memisahkan citra objek
dengan citra latar belakang. Hasil dari proses binarisasi adalah sebuah
citra dokumen biner dengan nilai piksel 1 untuk citra latar belakang,
dan nilai piksel 0 untuk citra objek.
Citra dokumen biner tersebut kemudian menjadi input dari proses
segmentasi dan menghasilkan citra karakter penyusun citra dokumen
dan chain code.
c
DAD level 2 untuk proses binarisasi
Gambar 12. DAD level 2 untuk proses binarisasi
berupa citra dokumen sastra jawa modern. Kemudian dengan metode
K-Mean Clustering diperoleh suatu nilai ambang. Nilai ambang
tersebut akan menjadi input dalam proses selanjutnya yaitu ubah biner.
Dalam proses ubah biner, piksel-piksel yang bernilai lebih besar dari
nilai ambang akan menjadi 1 untuk menandakan citra latar belakang
dan piksel-piksel yang bernilai lebih kecil atau sama dengan nilai
ambang akan bernilai 0 untuk menandakan citra objek. Sehingga hasil
dari proses ini adalah sebuah citra dokumen biner yang
piksel-pikselnya bernilai 0 atau 1.
d
DAD level 2 untuk proses segmentasi
Dalam proses segmentasi terdapat beberapa proses. Proses pertama
adalah segmentasi menggunakan profil proyeksi vertikal. Proses ini
membutuhkan input berupa citra dokumen biner dari proses binarisasi.
Yang dilakukan dalam proses ini adalah menghitung banyaknya piksel
objek yang bernilai 0 dalam setiap1 baris piksel sampai dengan tinggi
citra dokumen sehingga menghasilkan histrogram vertikal.
Proses kedua adalah cari indeks baris. Input dari proses ini adalah
histrogram vertikal dari proyeksi vertikal. Yang dilakukan dalam
proses ini adalah mencari indeks baris sebagai penanda mulai dan
berakhirnya citra baris. Baris pertama yang memiliki nilai histrogram
vertikal 0 sebelum dan sesudah baris lain yang memiliki nilai
histogram vertikal lebih dari 0 serta baris yang memiliki nilai
histogram vertikal terendah dari 2 baris yang memiliki nilai histogram
vertikal tertinggi dalam histogram vertikal akan disimpan sebagai
indeks baris dalam file indeks baris.
Proses ketiga adalah segmentasi menggunakan profil proyeksi
horizontal. Proses ini membutuhkan input indeks baris yang diperoleh
dari
file indeks baris. Yang dilakukan dalam proses ini adalah
menghitung banyaknya piksel objek yang bernilai 0 dalam setiap 1
kolom piksel sampai dengan lebar citra dokumen sehingga
menghasilkan histogram horizontal.
pertama yang memiliki nilai histrogram horizontal 0 sebelum dan
sesudah kolom lain yang memiliki nilai histogram horizontal lebih dari
0 akan disimpan sebagai indeks kolom dalam file indeks kolom.
Proses kelima adalah potong karakter. Input dari proses ini adalah
indeks kolom dan indeks baris, kemudian citra dokumen dipotong
sesuai dengan indeks baris dan indeks kolom sehingga menghasilkan
citra karakter dan disimpan dalam file citra karakter.
Proses keenam adalah cari chain code. Input dari proses ini adalah
citra karakter. Titik pertama dari citra karakter yang bernilai 0 akan
disimpan sebagai suatu titik awal chain code, dan untuk titik
selanjutnya akan dikodekan sesuai dengan kode yang telah disepakati
dengan cara menelusuri sekeliling citra karakter yang bernilai 0.
Setelah
chain code diperoleh maka akan disimpan dalam file kode
rantai. Citra karakter dan chain code akan ditampilkan dilayar.
2
Perancangan Menu
Berikut merupakan perancangan menu sistem dan keterkaitannya :
Menu ambil citra berfungsi untuk membuka file citra dokumen
*.bmp.
Menu binarisasi berfungsi untuk mengubah citra dokumen input
menjadi citra dokumen biner.
Menu segmentasi berfungsi untuk memperoleh citra hasil
segmentasi profil proyeksi horizontal, profil proyeksi vertikal dan chain
code.
Menu hasil segmentasi baris berfungsi untuk menampilkan citra
dokumen hasil segmentasi profil proyeksi, hasil indeks baris dan jumlah
kolom yang diperoleh.
Menu hasil segmentasi kolom berfungsi untuk menampilkan citra
baris hasil segmentasi profil proyeksi dan hasil indeks kolom. Citra baris
ditampilkan per baris.
Menu
chain code berfungsi untuk menampilkan citra baris, citra
karakter hasil segmentasi chain code dan profil proyeksi serta chain code
dari masing-masing karakter. Citra karakter hasil ditampilkan per karakter.
Menu simpan chain code berfungsi untuk menyimpan chain code
yang diperoleh dari hasil segmentasi.
Menu pixel awal berfungsi untuk menampilkan nilai keabuan dari
citra dokumen masukan.
3
Perancangan Teknologi
Program yang digunakan untuk membuat aplikasi segmentasi citra
dokumen ini adalah Borland Delphi 7.
4
Perancangan Antar Muka
Tampilan utama memiliki beberapa pilihan menu. Pengaktifan
menu dilakukan secara bertahap. Menu yang pertama kali aktif adalah
menu ambil citra. Citra masukan akan ditampilkan pada jendela citra awal.
Setelah citra diinputkan, menu binarisasi akan aktif. Setelah proses
binarisasi dilakukan, menu segmentasi, pixel awal dan pixel biner akan
aktif. Citra hasil binarisasi dan segmentasi akan ditampilkan pada jendela
citra hasil. Perancangan antar muka untuk menu ambil citra, binarisasi dan
segmentasi sama dan disebut menu utama. Perancangan antar muka untuk
menu utama adalah sebagai berikut :
Menu hasil segmentasi baris menampilkan indeks baris yang telah
diperoleh dari proses proyeksi vertikal dalam segmentasi dan citra
dokumen hasil segmentasi. Indeks baris ditampilkan pada jendela indeks
baris dan citra hasil segmentasi ditampilkan pada jendela citra hasil
segmentasi. Perancangan antar muka untuk menu hasil segmentasi baris
adalah sebagai berikut :
Gambar 16. Rancangan antar muka menu hasil segmentasi baris
sama untuk setiap baris. Perancangan antar muka untuk menu hasil
segmentasi kolom adalah sebagai berikut :
Gambar 17. Rancangan antar muka menu hasil segmentasi kolom
Gambar 18. Rancangan antar muka menu chain code
Menu piksel awal berfungsi untuk menampilkan derajat keabuan
setiap piksel yang terdapat pada citra dokumen input. Perancangan antar
muka untuk menu pixel awal adalah sebagai berikut :
Menu piksel biner berfungsi untuk menampilkan nilai ambang dan
nilai biner yang diperoleh dari proses binarisasi. Perancangan antar muka
untuk menu pixel biner adalah sebagai berikut :
Gambar 20. Rancang antar muka menu piksel biner
5
Perancangan Struktur Data
Penyimpanan matriks perbatasan yang diperlukan untuk pencarian
chain code dan
file kode rantai menggunakan struktur data bertipe array
dua dimensi dan berukuran m x n, dimana dalam bahasa pemrograman
Delphi bentuk penyimpanan untuk matriks perbatasan adalah :
Tbatas = record
Titik : byte;
Penanda : integer;
end;
Matriks_batas : array[n,m] of Tbatas;
a
Matriks_batas
record pertama bernama titik bertipe byte dan
dipergunakan untuk menyimpan nilai apakah suatu titik merupakan
perbatasan. Jika titik merupakan perbatasan maka nilai yang disimpan
adalah 1, jika bukan maka nilai yang disimpan adalah 0.
b
Matriks_batas
record
kedua bernama penanda bertipe integer dan
dipergunakan untuk menyimpan nilai apakah suatu titik sudah
dikunjungi atau belum untuk keperluan pencarian chain code. Jika titik
belum pernah dikunjungi, maka nilai yang disimpan adalah 0, jika
sudah maka nilai yang disimpan adalah 1.
Penyimpanan untuk kode rantai adalah :
Tkode = record
Titik_awal, Chain_code : array of string;
huruf : array of array of byte;
end;
Kode_rantai : array[n,m] of Tkode;
Dengan m adalah jumlah baris, n adalah jumlah maksimum kolom dan
keterangan setiap selnya adalah sebagai berikut :
a
Kode_rantai record pertama bernama titik_awal bertipe array of string
dan dipergunakan untuk menyimpan titik awal suatu chain code.
b
Kode_rantai
record kedua bernama chain_code bertipe array of string
dan dipergunakan untuk menyimpan chain code.
A
IMPLEMENTASI ANTAR MUKA DAN MENU
Implementasi tampilan antar muka halaman judul adalah sebagai berikut :
Gambar 21. Form Judul
Implementasi antar muka dan menu utama adalah sebagai berikut :
Gambar 22. Form Utama
Implementasi tampilan antar muka dan menu hasil segmentasi baris adalah
sebagai berikut :
Gambar 23. Form Indeks baris
Implementasi tampilan antar muka dan menu hasil segmentasi kolom adalah
sebagai berikut :
Implementasi tampilan antar muka dan menu chain code adalah sebagai
berikut :
Gambar 25. Form Chain code
Implementasi tampilan antar muka dan menu piksel awal adalah sebagai
berikut :
Implementasi tampilan antar muka dan menu piksel biner adalah sebagai
berikut :
Gambar 27. Form Piksel biner
B
IMPLEMENTASI PROSES
1
Binarisasi
Modul binarisasi ini terdiri dari 2 submodul yaitu cari ambang dan
ubah biner. Algoritma pencarian ambang yang digunakan adalah algoritma
K-Mean Clustering. Setelah nilai ambang diperoleh, maka citra objek dan
citra latar belakang akan dipisahkan atau dibinerkan berdasarkan aturan
threshold.
a
Cari ambang
Fungsinya menentukan nilai ambang yang akan digunakan untuk
memisahkan citra objek dengan citra latar belakang. Inputnya adalah
citra dokumen (*.bmp). Outputnya adalah nilai ambang.
(1)
Buka citra dokumen input
(2)
Inisialisasi matriks_gambar sama dengan nilai piksel citra
dokumen input.
(3)
Inisialisasi nilai tengah 2 cluster M
1(nilai tengah cluster
pertama) dan M
2(nilai tengah cluster kedua) dengan 2 nilai
piksel pertama yang berbeda dari matriks_gambar.
(4)
Set i=0
(5)
Set j=0
(6)
Hitung jarak matriks_gambar[j,i] dengan M
1dan M
2berturut-turut D
1dan D
2. Jika D
1lebih kecil daripada D
2maka
matriks_gambar[j,i] akan menjadi anggota cluster pertama dan
sebaliknya. Jika D2 lebih kecil daripada D1 maka
matriks_gambar[j,i] akan menjadi anggota cluster kedua.
(7)
Tambahkan j dengan 1
(8)
Ulangi langkah ke (5)-(7) sampai dengan j=lebar citra-1
(9)
Tambahkan i dengan 1
(10)
Ulangi langkah (4)-(9) sampai dengan i=tinggi citra-1
(11)
Hitung rata-rata cluster pertama dan rata-rata cluster kedua.
Jika rata-rata cluster pertama sama dengan M
1dan rata-rata
cluster kedua sama dengan M
2, maka lanjut ke langkah (14).
Jika tidak maka ke langkah (12)
(12)
M
1= rata-rata cluster pertama dan M
2= rata-rata cluster kedua
(14)
Hitung nilai ambang dari rata-rata M
1dan M
2.
b
Ubah biner
Fungsinya membuat citra biner dari citra dokumen masukan
dimana citra objek bernilai 0 dan citra latar belakang bernilai 1.
Inputnya adalah citra dokumen (*.bmp) dan nilai ambang. Outputnya
adalah citra biner.
Algoritma :
(1)
Inisialisasi matriks_biner dengan baris = tinggi citra dokumen
dan kolom = lebar citra dokumen.
(2)
Set i=0
(3)
Set j=0
(4)
Jika matriks_gambar[j,i] lebih besar dari nilai ambang, maka
matriks_biner[j,i] akan menjadi 1. jika matriks_gambar[j,i]
lebih kecil atau sama dengan nilai ambang, maka
matriks_biner[j,i] akan menjadi 0.
(5)
Tambahkan j dengan 1
(6)
Ulangi (3)-(5) sampai dengan lebar citra-1
(7)
Tambahkan i dengan 1
(8)
Ulangi (2)-(7) sampai dengan tinggi citra-1
2
Segmentasi
Fungsinya adalah membuat histogram vertikal dari citra
dokumen.
Inputnya adalah citra dokumen biner. Outputnya adalah
histogram vertikal.
Algoritma :
(1)
Set i=0
(2)
Inisialisasi hitung_baris[i]=0
(3)
Set j=0
(4)
Jika matriks_biner[j,i] adalah objek maka hitung_baris[i]
ditambah 1
(5)
Tambahkan j dengan 1
(6)
Ulangi (4)-(5) sampai j sama dengan lebar citra-1
(7)
Tambahkan i dengan 1
(8)
Ulangi (2)-(7) sampai i sama dengan tinggi citra-1
b
Cari indeks baris
Fungsinya adalah mencari indeks-indeks baris citra. Inputnya
adalah histrogram vertikal. Outputnya adalah indeks batas atas dan
bawah dari setiap baris citra dokumen.
Algoritma:
(1)
Inisialisasi matriks_segment sama dengan matriks_biner
(2)
Set i=0
(3)
Jika hitung_baris[i]=0 jadikan semua nilai piksel
matriks_segment pada baris ke-i sama dengan objek
(5)
Ulangi (3)-(5) sampai i sama dengan tinggi citra-1
(6)
Inisialisasi maks1 = 0
(7)
Set i = 1
(8)
Jika hitung_baris[i] lebih besar dari hitung_baris[maks1] maka
maks1 = i dan lanjut langkah (8). Jika tidak maka lanjut
langkah (10).
(9)
Tambahkan i dengan 1
(10)
Ulangi langkah (8)-(9) sampai i sama dengan tinggi citra-1
(11)
Inisialisasi maks2 = maks1+1
(12)
Set i = maks1+1
(13)
Jika hitung_baris[i] lebih kecil dari hitung_baris[i+1] maka
maks2 = i+1 dan lanjut langkah (15), jika tidak lanjut langkah
(14)
(14)
Jika hitung_baris[maks2] lebih besar dari hitung baris
terbesar/3 maka lanjut langkah (17)
(15)
Tambahkan i dengan 1
(16)
Ulangi langkah (13)-(15) sampai i sama dengan tinggi citra-1
(17)
Set minim = maks1+1
(18)
Set i = maks1+1
(19)
Jika hitung_baris[i] lebih kecil daripada hitung_baris[minim],
maka minim=i
(20)
Tambahkan i dengan 1
(22)
Jika hitung_baris[maks2] lebih besar dari hitung baris
terbesar/2 dan hitung_baris[minim] lebih kecil dari hitung baris
terbesar/3 maka jadikan semua piksel matriks_segment pada
baris ke-minim sama dengan objek
(23)
maks1 = maks2
(24)
Ulangi langkah (11)-(23) sampai maks1 lebih besar atau sama
dengan dari tinggi citra-1
(25)
Set i=0
(26)
Inisialisasi hitung_baris2[i]=0
(27)
Set j=0
(28)
Jika matiks_segment[j,i] adalah objek maka hitung_baris2[i]
ditambah 1
(29)
Tambahkan j dengan 1
(30)
Ulangi (28)-(29) sampai j sama dengan lebar citra-1
(31)
Tambahkan i dengan 1
(32)
Ulangi (26)-(31) sampai i sama dengan tinggi citra-1
(33)
Set jumlah_baris=0
(34)
Set i=0
(36)
Jika hitung_baris2[i] tidak sama dengan lebar citra dan
hitung_baris2[i+1] sama dengan lebar citra maka i akan
disimpan dalam file indeks baris sebagai indeks batas
_bawah_baris[jumlah_baris] dan tambahkan jumlah_baris
dengan 1
(37)
Tambahkan i dengan 1
(38)
Ulangi (35)-(37) sampai i sama dengan tinggi citra-1
c
Profil proyeksi horizontal
Fungsinya adalah membuat histogram horizontal dari citra
baris.
Inputnya adalah indeks batas atas dan batas bawah baris.
Outputnya adalah histogram horizontal.
Algoritma :
(1)
Set i=0
(2)
Set j=0
(3)
Inisialisasi hitung_kolom[j]=0
(4)
Set k=batas_atas_baris [i]
(5)
Jika matriks_segment[j,i] adalah objek maka hitung_kolom[j]
ditambah 1
(6)
Tambahkan k dengan 1
(7)
Ulangi (5)-(6) sampai i sama dengan batas_bawah_baris[i]-1
(8)
Tambahkan j dengan 1
(11)
Tambahkan i dengan 1
(12)
Ulangi (2)-(11) sampai k sama dengan jumlah_baris-1
d
Cari indeks kolom
Fungsinya adalah mencari indeks-indeks kolom citra baris.
Inputnya adalah histrogram horizontal. Outputnya adalah indeks batas
atas dan bawah dari setiap citra karakter dari setiap baris citra.
Algoritma :
(1)
Set j=0
(2)
Jika hitung_kolom[j]=0 jadikan semua nilai piksel
matriks_segment pada kolom ke-j sama dengan objek
(3)
Tambahkan j dengan 1
(4)
Ulangi (2)-(3) sampai j sama dengan lebar citra-1
(5)
Inisialisasi jumlah_kolom[i]=0
(6)
Set j=0
(7)
Jika hitung_kolom[j] sama dengan 0 dan hitung_kolom[j+1]
tidak sama dengan 0, maka j akan disimpan dalam file indeks
kolom sebagai indeks batas_atas_kolom[jumlah_kolom[i],i]
(8)
Jika hitung_kolom[j] tidak sama dengan 0 dan
hitung_kolom[j+1] sama dengan 0, maka j akan disimpan
dalam
file indeks kolom sebagai indeks
batas_bawah_kolom[jumlah_kolom[i],i] dan jumlah_kolom[i]
ditambahkan dengan 1.
(10)
Ulangi langkah (7)-(9) sampai j sama dengan lebar citra-1
e
Potong karakter dan Chain code
Potong karakter berfungsi untuk membagi citra baris ke dalam
karakter-karakter.
Inputnya adalah file indeks kolom, file indeks baris
dan citra dokumen biner. Outputnya adalah citra karakter.
Chain code berfungsi untuk membuat chain code dari
masing-masing karakter. Inputnya adalah citra karakter. Outputnya adalah
chain code dari masing-masing karakter.
Algoritma :
(1)
Inisialisasi matriks_batas berdimensi dua dengan lebar = lebar
citra biner dan tinggi = tinggi citra biner.
Matriks_batas[n,m].titik bernilai piksel 0. Dengan n berkisar
antara 0 sampai lebar citra-1 dan m berkisar antara 0 sampai
tinggi citra-1.
(2)
Matriks_batas[n,m].penanda bernilai piksel 1. Dengan n
berkisar antara 0 sampai lebar citra-1 dan m berkisar antara 0
sampai tinggi citra-1
(3)
Set i=1
(4)
Set j=1
(5)
Jika piksel matriks_biner[j,i] adalah objek dan minimal satu
piksel 4 tetangganya adalah latar belakang, maka
matriks_batas[j,i].titik sama dengan 1
(7)
Ulangi (5)-(6) sampai j sama dengan lebar citra-2
(8)
Tambahkan i dengan 1
(9)
Ulangi (4)-(8) sampai i sama dengan tinggi citra-2
(10)
Set i=0
(11)
Set j=0
(12)
Chain=0 dan Chain2=1
(13)
Set k= batas_atas_baris[i]
(14)
Set l= batas_atas_kolom[j,i]
(15)
Jika matriks_batas[l,k].titik dan matriks_batas[l,k].penanda
sama dengan 1 (artinya piksel (k,l) merupakan perbatasan dan
belum pernah dikunjungi), maka k dan l akan disimpan sebagai
titik awal chain code dalam kode_rantai[j,i].titik_awal[chain],
matriks_batas[l,k].penanda akan berubah nilai menjadi 0
(artinya telah dikunjungi) dan kode_rantai[j,i].huruf[l,k] akan
berubah nilai menjadi 1 dilanjutkan langkah (16). Jika tidak,
dilanjutkan langkah (35)
(16)
x=k dan y=l
(17)
batas_x_atas=batas_x_bawah=x dan
batas_y_atas=batas_y_bawah=y
(18)
Cek titik awal chain code. Jika ada lanjutkan langkah (19). Jika
tidak lanjutkan langkah (33).
batas_y_atas>=y>=batas_y_bawah lanjut langkah (20). Jika
tidak, dilanjutkan langkah (33)
(20)
Jika x<batas_x_atas maka batas_x_atas=x
(21)
Jika x>batas_x_bawah maka batas_x_bawah=x
(22)
Jika y<batas_y_atas maka batas_y_atas=y
(23)
Jika y>batas_y_bawah maka batas_y_bawah=y
(24)
Cek banyaknya tetangga matriks_batas[x,y].titik yang
merupakan objek dan dinamakan B.
(25)
Jika B lebih dari 1 maka salah satu piksel akan menjadi x dan y
dan dikodekan sesuai dengan syarat yang ditentukan dan
ditambahkan dalam deretan string
kode_rantai[j,i].chain_code[chain], matriks_batas[x,y].penanda
sama dengan 0 dan kode_rantai[j,i].huruf[lx,y] sama dengan 1,
sedangkan piksel lainnya akan menjadi titik awal chain code
selanjutnya. Tambahkan chain2 dengan B-1, lanjut langkah
(28)
(26)
Jika B sama dengan 1 maka piksel tetangga tersebut akan
menjadi x dan y dan dikodekan sesuai dengan syarat yang
ditentukan dan ditambahkan dalam deretan string
kode_rantai[j,i].chain_code[chain], matriks_batas[x,y].penanda
sama dengan 0 dan kode_rantai[j,i].huruf[x,y] sama dengan 1,
lanjut langkah (28)
(28)
Jika x<batas_x_atas maka batas_x_atas=x
(29)
Jika x>batas_x_bawah maka batas_x_bawah=x
(30)
Jika y<batas_y_atas maka batas_y_atas=y
(31)
Jika y>batas_y_bawah maka batas_y_bawah=y
(32)
Ulangi langkah (24)-(27)
(33)
Tambahkan chain dengan 1
(34)
Ulangi langkah (18)-(33) sampai titik awal chain code tidak
ada atau sampai chain lebih besar atau sama dengan chain2
(35)
Tambahkan l dengan 1
(36)
Ulangi langkah (15)-(35) sampai l sama dengan
batas_bawah_kolom[i,j]
(37)
Tambahkan k dengan 1
(38)
Ulangi langkah (14)-(37) sampai k sama dengan
batas_bawah_baris[i]
(39)
Tambahkan j dengan 1
(40)
Ulangi langkah (12)-(40) sampai j sama dengan
jumlah_kolom[i]
(41)
Tambahkan i dengan 1
A
DATA MASUKAN
Data masukan untuk pengujian adalah citra dokumen sastra jawa modern
yang relatif bebas noise dan tidak miring. Terdapat 5 data citra dokumen yang
akan dijadikan input sistem. Karakteristik data citra dokumen masukan dapat
dilihat pada tabel berikut :
Tabel 1. Karakteristik citra dokumen masukan
No Nama
File
Dokumen
Ukuran Citra baris dan
Kolom
Besar
File
1.
Kolokodrat.bmp
2161 vs 1466
3100 KB
2.
Chino.bmp
2054 vs 1397
2810 KB
3.
Jinambar.bmp
2117 vs 1522
3152 KB
4.
Gandrung.bmp
2171 vs 1521
3233 KB
5.
Kebokanongo.bmp
2370 vs 1193
2770 KB
B
PERANGKAT KERAS DAN PERANGKAT LUNAK
Spesifikasi perangkat keras (Hardware) dan perangkat lunak (Software)
yang digunakan dalam implementasi dan pengujian sistem Segmentasi Citra
Dokumen teks Sastra Jawa Modern ini adalah : Ram 512 MB, Harddisk 40
GB, Intel(R) Celeron(R) CPU 2 GHz, Sistem Operasi Microsoft Windows XP
Professional, Program Borland Delphi 7
C
EKSEKUSI MODUL
Format ekstension citra masukan harus berupa file *.bmp. Setelah data
masukan diperoleh melalui menu ambil citra maka selanjutnya dilakukan
proses binarisasi terlebih dahulu, dengan tujuan memperoleh citra biner yang
akan digunakan sebagai masukan dalam proses segmentasi.
Dari hasil eksekusi modul binarisasi untuk data ke 1 diperoleh nilai
ambang 128. Artinya piksel dengan intensitas warna kurang dari atau sama
dengan 128 diganti dengan nilai 0 dan intensitas warna yang lebih dari 128
diganti dengan nilai 1.
Proses segmentasi dimulai dengan membuat histogram baris dengan tujuan
untuk mendapatkan batas-batas indeks baris teks. Contoh histogram baris pada
suatu cuplikan citra dokumen data 1 adalah sebagai berikut :
Gambar 30. Histogram baris pada cuplikan citra dokumen data 1
Hasil histogram baris tersebut kemudian digunakan untuk mendapatkan
batas-batas indeks baris. Contoh pemotongan baris dari histogram diatas :
Gambar 31. Hasil pemotongan histogram baris
Tabel 2. Hasil indeks baris
Baris
Indeks Baris
1 2 3
Batas atas
146 291 384
Batas bawah
239 384 478
Setelah diperoleh semua indeks baris dari citra dokumen, proses
segmentasi dilanjutkan dengan membuat histogram kolom untuk setiap baris
teks dengan tujuan untuk mendapatkan batas-batas indeks kolom. Contoh
histogram kolom pada suatu cuplikan citra dokumen data 1 adalah sebagai
berikut :
Gambar 32. Histogram kolom pada cuplikan citra dokumen data 1
Gambar 33. Hasil pemotongan histogram kolom
Dari pemotongan histogram kolom diatas, maka diperoleh tabel indeks
kolom sebagai berikut :
Tabel 3. Hasil indeks baris
Kolom ke-
Indeks Kolom
1
2
3 4 5 6 7 8 9
Batas atas
217 288 366
375 437 505 578 640 707
Batas bawah
275 309 364
428 492 575 629 694 765
Kolom ke-
Indeks Kolom
10
11
12 13 14 15 16 17
Batas atas
778 838 904
976 1037 1100 1163 1195
Batas bawah
829 892 965 1027 1096 1153 1184 1218
Contoh pemotongan baris kolom pada suatu citra baris berdasarkan
batas-batas indeks baris dan kolom yang telah diperoleh adalah sebagai berikut :
Citra dokumen segmentasi merupakan hasil dari profil proyeksi vertikal
dan horizontal. Berikut merupakan citra dokumen hasil segmentasi data 1.
Gambar 35. Citra dokumen hasil proses segmentasi data 1
chain code dan citra hasil chain code pada suatu cuplikan citra dokumen data
1 adalah sebagai berikut :
(a)
(b)
Gambar 36. (a) Citra hasil chain code, (b) Chain code
Pencarian chain code ini dilakukan pada semua karakter, sehingga setiap 1
kolom atau 1 karakter memiliki chain code tersendiri. Berikut merupakan
cuplikan hasil chain code dari citra dokumen untuk data 1 :
Tabel 4. Cuplikan hasil Chain code citra dokumen data 1
..HASIL CHAIN CODE/KODE RANTAI ..Baris 1
..Kolom 1
(171,245),000070707777111100100007077776666666566566566554444432121 2122122122132334445456555656566656656444433122122122212222334354545 6556566566566655454422321221212222233444454555666666670066644334323 2221212121120101000070707007121010
..Kolom 2
(172,295),000007766671211076656645454444453323322212 (183,292),000776771100666555445444344233222114
... ..Kolom 25
(2001,596),00766666656666667670112221200000077555455565676777677665 444442322233235656676654443431221222222222222222222322322010 ..Kolom 26
(2019,616),74576676767667600222322233223 (2020,622),56767676507676002222322332330
..Sumber Citra Î D:\Gambar Delphi\Buat segment\Kolokodrat.bmp
D
ANALISIS OUTPUT
Dari citra dokumen masukan yang kemudian dikenai proses binarisasi dan
segmentasi, diperoleh hasil output berupa citra karakter penyusun citra
dokumen. Analisis output ini berfungsi untuk menganalisis waktu serta besar
file hasil proses binarisasi dan segmentasi serta membandingkan banyaknya
citra karakter penyusun hasil proses segmentasi dengan banyaknya citra
karakter penyusun yang sebenarnya, sehingga dapat diperoleh rata-rata
prosentase keberhasilan atau keakuratan sistem.
Waktu yang diperlukan untuk melakukan proses binarisasi dan segmentasi
untuk setiap data citra dokumen dengan spesifikasi perangkat keras
(hardware) dan perangkat lunak (software) yang telah disebutkan diatas dapat
dilihat dalam tabel berikut :
Tabel 5. Waktu Proses binarisasi dan segmentasi
Waktu Proses
Data
Binarisasi Segmentasi
Jumlah Waktu
proses
1
0 : 0 : 10 : 188
0 : 0 : 18 : 188
0 : 0 : 28 : 376
2
0 : 0 : 09 : 875
0 : 0 : 16 : 469
0 : 0 : 26 : 344
3
0 : 0 : 10 : 047
0 : 0 : 20 : 984
0 : 0 : 31 : 031
4
0 : 0 : 10 : 594
0 : 0 : 17 : 968
0 : 0 : 28 : 562
5
0 : 0 : 11 : 015
0 : 0 : 15 : 360
0 : 0 : 26 : 375
Rata-rata
0 : 0 : 10 : 344
0 : 0 : 17 : 797
0 : 0 : 28 : 143
Besar
file
hasil proses binarisasi dan segmentasi dapat dilihat pada tabel
berikut ini :
Tabel 6. Besar file hasil binarisasi dan segmentasi
Besar
file
Hasil
Data
Binarisasi Segmentasi
1
389 KB
124 KB
2
354 KB
114 KB
3
397 KB
116 KB
4
408 KB
117 KB
5
352 KB
132 KB
Untuk citra dokumen data 1 diperoleh tabel data analisis output segmentasi
citra dokumen sebagai berikut :
Tabel 7. Analisis output Segmentasi Citra Dokumen data 1
Banyak
Karakter
Baris
Citra Hasil
Benar Keterangan
1 17 17 17
-
2 20 20 20
-
3 25 26 24
Ada 1 karakter terpisah jadi 2 kolom
4 25 26 24
Ada 1 karakter terpisah jadi 2 kolom
5 23 23 23
Banyak
Karakter
Baris
Citra Hasil
Benar Keterangan
9 26 26 26
-
10 26 26 26
-
11 25 26 24
Ada 1 karakter terpisah jadi 2 kolom
12 25 25 25
-
13 27 27 27
-
14 24 24 24
-
15 25 25 25
-
16 25 25 25
-
17 23 22 21
Ada 2 karakter tergabung jadi 1 kolom
18
25
25
22
Ada 1 karakter terpisah jadi 2 kolom
Ada 2 karakter tergabung jadi 1 kolom
19
36
34
32
Ada 2 karakter tergabung jadi 1 kolom
sebanyak 2 kolom
20 26 25 24
Ada 2 karakter tergabung jadi 1 kolom
497 499 483
Dari hasil analisis output pada tabel 7, diperoleh 497 karakter dalam citra
dokumen. Melalui proses segmentasi citra dokumen diperoleh 499 karakter
secara keseluruhan dan 483 karakter yang tersegmentasi secara benar dan
utuh. Sehingga dari hasil tersebut dapat dihitung prosentase derajat
keberhasilan segmentasi citra dokumen yaitu sebesar 97,18% yang diperoleh
dari (483/497) x 100%.
Tabel 8. Analisis output Segmentasi Citra Dokumen data 2
Banyak
Karakter
Baris
Citra Hasil
Benar Keterangan
1 16 16 16
-
2 13 13 13
-
3 21 21 21
-
4
26
23
21
Ada 3 karakter tergabung jadi 1 kolom
Ada 2 karakter tergabung jadi 1 kolom
5 25 24 23
Ada 2 karakter tergabung jadi 1 kolom
6 23 22 21
Ada 2 karakter tergabung jadi 1 kolom
7 24 24 24
-
8 23 23 23
-
9 27 26 25
Ada 2 karakter tergabung jadi 1 kolom
10 24 23 22
Ada 2 karakter tergabung jadi 1 kolom
11 27 26 25
Ada 2 karakter tergabung jadi 1 kolom
12 26 26 26
-
13 26 27 25
Ada 1 karakter terpisah jadi 2 kolom
14 25 25 25
-
15 25 25 25
-
16 28 28 28
-
17
24
21
18
Ada 2 karakter tergabung jadi 1 kolom
sebanyak 3 kolom
18
24
24
21
Ada 1 karakter terpisah jadi 2 kolom
Ada 2 karakter tergabung jadi 1 kolom
19 0 1 0
Bukan karakter
Banyak
Karakter
Baris
Citra Hasil
Benar Keterangan
21
12
9
6
Ada 2 karakter tergabung jadi 1 kolom
sebanyak 3 kolom
475 461 440
Dari hasil analisis output pada tabel 8, diperoleh 475 karakter dalam citra
dokumen. Melalui proses segmentasi citra dokumen diperoleh 461 karakter
secara keseluruhan dan 440 karakter yang tersegmentasi secara benar dan
utuh. Sehingga dari hasil tersebut dapat dihitung prosentase derajat<