Segmentasi dan pengenalan citra not balok.
SEGM
Diajuk M
P
PROGR
FAK
UN
i
GMENTASI DAN PENGENALAN
CITRA NOT BALOK
SKRIPSI
jukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Oleh :
Audris Evan Utomo 095314052
RAM STUDI TEKNIK INFORMATIKA
KULTAS SAINS DAN TEKNOLOGI
NIVERSITAS SANATA DHARMA
YOGYAKARTA
(2)
IMAGE SEGM
Presented To O
Info
INFORMAT
FACULT
SA
ii
MENTATION AND RECOGNATION
MUSICAL NOTES
A THESIS
ed as Partial Fulfillment of The Requirements o Obtain The Sarjana Komputer Degree nformatics Engineering Study Program
By :
Audris Evan Utomo 095314052
ATICS ENGINEERING STUDY PROGRAM
LTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2013
(3)
(4)
(5)
(6)
(7)
vii
Abstrak
Penelitian ini memiliki fokus penelitian pada citra not balok. Cara kerja yang ditawarkan adalah melakukan segmentasi dengan proyeksi vertikal-horizontal pada citra partitur. Lalu kemudian dikenai operasi konvolusi untuk mendapatkan garis yang diidentifikasi sebagai tangkai. Setelah itu dilakukan pengenalan dengan menggunakan penyusuran pixel untuk menangkap bagian-bagian lain dalam not balok tersebut. Penelitian ini menggunakan 50 partitur yang dibuat dengan menggunakan Encore.
Hasil yang dihasilkan dari penelitian kali ini adalah sebesar 90.233% dalam proses pengenalan baik dengan menggunakan precision-recall. Hasil juga memiliki nilai max sebesar 100 % dan nilai presentase min adalah sebesar 56.53 %.
Saran untuk penelitian berikutnya terutama untuk yang memiliki topik pemrosesan citra pada not balok adalah menemukan metode preprocessing yang tepat agar gambar partitur berupa digital maupun cetak dapat diproses. Selain itu metode yang dapat membaca nilai tanda diam, dan metode yang dapat membaca tanda-tanda baca seperti kres dan mol
(8)
viii
Abstract
This research have a focus on the image of musical notes. Manner of works that offered is performing segmentation with vertical-horizontal projection on the image of scores, then is operation convolution to get a line which was identified as a stalk. The recognition by using of pixel tracing to get other part of the musical notes. This research uses 50 scores created using Encore.
The result of this research is 90.233% for recognition process using precision-recall. The result also have max value to 100% and min value to 56.53%
Suggestion for next research especially for topic of image processing of musical notes is to found the right preprocessing method to make a image of scores in digital or printed can be processed. In additional the method that can read the signs reading, like sharps and mol.
(9)
ix
KATA PENGANTAR
Puji syukur dan terima kasih kepada Tuhan Yang Maha Esa atas berkat yang diberikan kepada saya dalam proses penyusunan sampai dengan penyelesaian skripsi ini.
Skripsi ini disusun untuk memperoleh gelar sarjana komputer di Jurusan Teknik Informatika, Fakultas Sains dan Teknologi, Universitas Sanata Dharma, Yogyakarta. Skripsi ini juga disusun sebagai sumbangan sedikit pengetahuan, sehingga saya dapat memberikan sedikitnya kontribusi pada perkembangan ilmu pengetahuan untuk berikutnya.
Ucapan terima kasih saya atas dukungan dan doa yang ditujukan kepada : 1. Paulina Heruningsih Prima Rosa, S.Si, M.Sc. selaku Dekan Fakultas
Sains dan Teknologi, Universitas Sanata Dharma.
2. Ridowati Gunawan, S.Kom, M.T., selaku Ketua Program Studi Teknik Informatika, Universitas Sanata Dharma.
3. Sri Hartati Wijono, S.Si, M.Kom, selaku pembimbing skripsi, dan Wakil Ketua Program Studi Teknik Informatika, Universitas Sanata Dharma.
4. Eko Hari Parmadi S.Si., M.Kom., selaku dosen penguji skripsi. 5. Alb. Agung Hadhiatma S.T., M.T., selaku dosen penguji skripsi. 6. Orang tua, dan kakak dan adik beserta keluarga tercinta
(10)
(11)
xi
DAFTAR ISI
Halaman Judul ... i
Halaman Judul ... ii
Halaman Persetujuan ... iii
Halaman Pengesahan ... iv
PERNYATAAN KEASLIAN HASIL KARYA ... v
PERNYATAAN PERSETUJUAN PUBLIKASI ... vi
Abstrak ... vii
Abstract ... viii
KATA PENGANTAR ... ix
DAFTAR ISI ... xi
DAFTAR GAMBAR ... xvi
DAFTAR TABEL ... xix
BAB I ... 1
PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Rumusan Masalah ... 4
1.3. Manfaat ... 4
1.4. Batasan Masalah ... 5
1.5. Sistematika Penulisan ... 5
BAB II ... 7
(12)
xii
2.1. Image Processing ... 7
2.2. Feature Extraction ... 8
2.3. Citra Biner ... 8
2.4. Proyeksi Citra ... 9
2.5. Konvolusi ... 12
2.6. Not Balok ... 13
2.7. Precision-Recall ... 16
Bab III ... 17
METODOLOGI PENELITIAN ... 17
3.1. Perancangan Data Input ... 17
3.1.1. Tahap pembuatan file ... 17
3.1.2. Tahap penghapusan objek asing ... 19
3.2. Perancangan Sistem ... 20
3.2.1. DFD level 0 / Diagram konteks : ... 20
3.2.2. DFD level 1: ... 21
3.2.3. DFD level 2: ... 21
3.3. Desain Proses ... 23
3.3.1. Proses 1. Tranformasi menjadi citra biner ... 24
3.3.2. Proses 2.1. Proyeksi horizontal ... 25
(13)
xiii
3.3.4. Proses 3.2. Mencari index max ... 27
3.3.5. Proses 4.1. Penghapusan garis ... 28
3.3.6. Proses 4.2. Proyeksi vertikal ... 29
3.3.7. Proses 4.3. Segmentasi vertikal ... 30
3.3.8. Proses 4.4. Hapus kunci, penutup dan jenis ketukan ... 32
3.3.9. Proses 5.1. Deteksi garis lurus(tangkai not) ... 32
3.3.10. Proses 5.2. Pengenalan jenis bagian ... 35
3.3.11. Proses 5.3. Penentuan posisi garis ... 37
3.3.12. Proses 5.4. Pencarian nada ... 39
3.3.13. Proses 5.5. Pencarian nilai ... 41
3.3.14. Proses 6. Membunyikan nada ... 45
3.4. Perancangan Pengujian ... 45
3.4.1. Pembuatan jawaban ... 45
3.4.2. Tranformasi nada dan nilai menjadi jawaban ... 46
3.4.3. Pengujian dengan precision-recall ... 47
3.5. Perancangan Interface ... 48
BAB IV ... 49
IMPLEMENTASI ... 49
4.1. Implementasi Sistem ... 49
(14)
xiv
4.1.2. Proses 2.1. Proyeksi horizontal ... 51
4.1.3. Proses 2.2. Segmentasi horizontal ... 51
4.1.4. Proses 3.2. Mencari index max ... 52
4.1.5. Proses 4.1. Penghapusan garis ... 53
4.1.6. Proses 4.2. proyeksi vertikal ... 53
4.1.7. Proses 4.3. Segmentasi vertikal ... 54
4.1.8. Proses 4.4. Hapus kunci, penutup dan jenis ketukan ... 54
4.1.9. Proses 5.1. Deteksi garis lurus(tangkai not) ... 55
4.1.10. Proses 5.2. Pengenalan jenis bagian ... 56
4.1.11. Proses 5.3. Penentuan posisi garis ... 57
4.1.12. Proses 5.4. Pencarian nada ... 58
4.1.13. Proses 5.5. Pencarian nilai ... 59
4.1.14 Proses 6. Membunyikan nada... 62
4.2. Implementasi Interface ... 63
Bab V ... 64
Hasil dan Pengujian ... 64
5.1. Data Input ... 64
5.2. Code Pengujian Sistem ... 67
5.3. Hasil Pengujian Sistem ... 68
(15)
xv
5.3.2. Hasil Segmentasi Vertikal ... 70
5.3.3. Hasil Pengenalan : ... 71
5.3.4. Hasil Pengujian : ... 71
5.4. Analisis Hasil ... 82
Bab VI ... 85
Kesimpulan dan Saran ... 85
6.1. Kesimpulan ... 85
6.2. Saran ... 86
DAFTAR PUSTAKA ... 87
(16)
xvi
DAFTAR GAMBAR
Gambar 2.1.Contoh citra biner ... 9
Gambar 2.2Contoh histogram horizontal-vertical ... 9
Gambar 2.3. Contoh citra potongan partitur ... 10
Gambar 2.4.Hasil proyeksi vertikal(bawah) dan horizontal (kanan) ... 10
Gambar 2.5.Proses segmentasi ... 11
Gambar 2.6. Hasil segmentasi didapatkan 2 objek gambar ... 11
Gambar 2.7.Contoh citra not balok ... 12
Gambar 2.8.Hasil operasi konvolusi Gambar 2.7. ... 13
Gambar 2.9.(a) Kunci G, (b) Kunci F, (c) Kunci C ... 14
Gambar 2.10.Posisi nada pada kunci G dan F ... 14
Gambar 2.11.Nama bagian not ... 15
Gambar 2.12Nilai-nilai dari suatu not balok ... 15
Gambar 2.13.Ilustrasi precision-recall ... 16
Gambar 3.1.Contoh pembuatan partitur dengan Encore ... 18
Gambar 3.2.Contoh hasil pembuatan partitur ... 19
Gambar 3.3.Contoh hasil penghapusan ... 20
Gambar 3.4. DFD level 0 ... 20
Gambar 3.5. DFD level 1 ... 21
Gambar 3.6. DFD level 2 proses 2 ... 21
Gambar 3.7. DFD level 2 proses 3 ... 22
(17)
xvii
Gambar 3.9. DFD level 2 proses5 ... 23
Gambar 3.10. Ilustrasi tranformasi menjadi citra biner ... 24
Gambar 3.11. Potongan citra (kiri) dan hasil proyeksi horizontal (kanan) ... 25
Gambar 3.12. Hasil segmentasi mendapatkan 2 objek (atas dan bawah) ... 26
Gambar 3.13. Posisi-posisi max [0 – 4] ... 27
Gambar 3.14. Potongan citra baris ... 28
Gambar 3.15. Hasil penghapusan garis ... 28
Gambar 3.16. Citra (atas) dan hasil proyeksi vertikal (bawah) ... 30
Gambar 3.17. Hasil segmentasi vertikal ... 31
Gambar 3.18. Penghapusan kunci,dan jenis ketukan ... 32
Gambar 3.19.Contoh citra not balok ... 34
Gambar 3.20.Hasil operasi konvolusi Gambar 2.7. ... 34
Gambar 3.21. Contoh gambar-gambar nada ... 35
Gambar 3.22. Contoh gambar-gambar tanda diam ... 36
Gambar 3.23. Contoh garis birama ... 36
Gambar 3.24. Garis di depan ... 37
Gambar 3.25. Garis di belakang ... 38
Gambar 3.26. Garis di tengah ... 38
Gambar 3.27. Contoh gambar not ... 39
Gambar 3.28. Nada 1/4 ... 41
Gambar 3.29. Nada 1/2 ... 41
Gambar 3.30. Nada 1/8 ... 41
(18)
xviii
Gambar 3.32.Rancangan interface ... 48
Gambar 4.1.Hasil implementasi interface ... 61
Gambar 4.2. JFileChooser ... 61
Gambar 5.1. Partitur file 17.png ... 68
Gambar 5.2.Hasil proyeksi horizontal file 17.png ... 69
Gambar 5.3.Hasil segmentasi baris I ... 69
Gambar 5.4.Hasil segmentasi baris II ... 69
Gambar 5.5.Hasil proyeksi vertikal baris I file 17.png ... 70
Gambar 5.6.Beberapa contoh bagian pada baris II file 17.png ... 70
Gambar 5.7.Partitur 01.png ... 83
Gambar 5.8.Partitur 44.png ... 83
(19)
xix
DAFTAR TABEL
Tabel 5.1.Tabel file pengujian ... 64
Tabel 5.2.Tabel hasil pengujian semua file pengujian ... 71
Tabel 5.3.Rata-rata hasil pengujian ... 74
(20)
1
BAB I
PENDAHULUAN
Pada bab ini akan menjelaskan mengenai latar belakang penelitian beserta tujuan dan masalah yang akan diteliti.
1.1. Latar Belakang
Seiring dengan perkembangannya, akhir-akhir ini terdapat banyak sekali data dengan berbagai bentuk. Sesuai dengan pengertian data yang adalah keterangan atau bahan yang benar dan nyata yang dapat menjadi bahan analisis, data-data digital tersebut dapat menjadi bahan untuk dianalisa dan menciptakan suatu informasi. Jika data-data tersebut hanya diam dalam komputer dan tidak dianalisa untuk menjadi informasi hanya akan menjadi data mentah, atau sampah (junk) data yang tidak dapat berguna. Agar data-data tersebut dapat menghasilkan sesuatu, maka data itu harus dianalisis kemudian diolah untuk kemudian menghasilkan sebuah informasi.
Begitu juga dengan sebuah gambar / citra akan menjadi kurang berarti jika hanya untuk dilihat atau dipajang. Agar sebuah gambar / citra menjadi lebih memiliki nilai, gambar / citra tersebut harus diolah agar dapat menghasilkan informasi yang dibutuhkan. Ilmu yang mempelajari mengenai hal tersebut adalah pengolahan citra. Dalam suatu objek citra juga memiliki ciri-ciri khusus, sebagai contoh adalah huruf A dalam bentuk citra, yang membedakan huruf A dengan huruf yang lain adalah
(21)
sudut-sudut yang terdapat dalam huruf A tersebut yang membentuk segitiga.
Pada penelitian kali ini akan menggunakan Metode Proyeksi Vertikal-Horizontal. Proyeksi Vertikal-Horizontal akan memberikan gambaran pixel dari suatu citra dalam bentuk histogram. Proyeksi Vertikal-Horizontal memberikan gambaran pixel dengan menjumlahkan pixel-pixel tersebut secara horizontal maupun vertikal. Hasil penjumlahan tersebut akan digambarkan dengan menggunakan histogram sesuai dengan level dari jumlah pixel-pixel yang telah dihitung sebelumnya. Metode ini banyak digunakan untuk citra yang berbentuk tulisan. Dalam penggunaannya untuk memproses citra dokumen teks, metode ini digunakan untuk menentukan batasan-batasan antar huruf pada suatu tulisan. Setelah menemukan batasan-batasan antar huruf akan dilakukan segmentasi atau pemotongan, agar dapat mendapatkan huruf-huruf yang terdapat pada citra dokumen teks tersebut.
Partitur musik sebagian besar menggunakan notasi not balok. Dimana notasi-notasi tersebut tersusun sedemikian rupa dalam posisi-posisi tertentu didalam baris-baris dalam sebuah partitur yang menunjukan tinggi rendahnya suatu nada. Selain memiliki posisi-posisi tertentu not balok juga memiliki bentuk-bentuk khusus untuk menunjukan nilai ketukan dari not tersebut. Selain itu not balok juga memiliki batas-batas pemisahan yang cukup jelas, yaitu not balok selalu tegak, sehingga mudah dikenali batasan antar not-nya. Batasan-batasan tersebut biasanya memiliki
(22)
sedikit pixel maka dari itu untuk membagi not balok menjadi bagian-bagian not dapat menggunakan Proyeksi Vertikal-Horizontal, setelah diproyeksikan citra partitur akan disegmentasi. Hasil proses segmentasi adalah objek-objek not dalam citra partitur tersebut.
Pada penelitannya yang berjudul “I d e n t i fi c a t i o n o f M u s i c a l N o t e s i n S h e e t M u s i c I m a g e s U s i n g C o l o r s” (Angela, Maria. 2006) ingin ditunjukkan metode identifikasi not balok dengan menggunakan pewarnaan pada staves, yang sebelumnya dilakukan segmentasi dengan menggunakan proyeksi profile (proyeksi horizontal-vertikal). Hasil yang didapatkan dari penelitian tersebut adalah ketepatan identifikasi sebesar 96.3768% untuk salah satu contoh partitur yang digunakan.
Pada sebuah artikel mengenai “Playing Notes by Image Processing” (Soriano, 2010) ide yang diberikan dalam mengidentifikasi not balok adalah dengan mencocokkan not dengan menggunakan template. Template
yang digunakan adalah sebuah image kepala not, lalu template tersebut digabungkan dengan partitur yang diproses yang akan menunjukan titik-titik posisi kepala-kepala not yang terdapat dalam partitur tersebut.
Penelitian ini diharapkan dapat memberikan gambaran cara kerja pengolahan citra untuk membaca dan mengidentifikasi partitur not balok, selain itu juga akan diberikan gambaran ketepatannya dalam membaca dan mengidentifikasi partitur not balok. Hasil pembacaan partitur not balok
(23)
kemudian akan dikonversikan menjadi suara, sehingga dapat mendengar nada-nada partitur not balok tersebut.
Banyak orang yang lebih suka membaca not angka daripada not balok. Oleh karena itu penelitian ini cukup penting, karena hasil penelitian ini dapat digunakan untuk membuat alat yang dapat membaca not balok (OMR, Optical Music Recognition) dengan menggunakan metode diatas, sehingga membantu orang dalam mempelajari not balok dan mendengarkan musik yang ditulis dengan not balok.
1.2. Rumusan Masalah
Rumusan masalah yang digunakan dalam penelitian ini adalah :
• Bagaimana cara kerja Pemrosesan Citra dalam mengenali citra partitur not balok.
• Mengukur tingkat ketepatan cara kerja Pemrosesan Citra dalam mengenali citra partitur not balok (nada dan nilai).
1.3. Manfaat
Manfaat dari penelitian ini adalah :
1. Membantu orang dalam mempelajari partitur not balok.
(24)
1.4. Batasan Masalah
Batasan-batasan yang digunakan untuk membatasi permasalahan yang digunakan dalam penelitian ini adalah sebagai berikut :
1. Partitur-partitur yang digunakan ditulis dalam kunci G.
2. Partitur yang digunakan ditulis dengan tangga nada naturel (do=c). 3. Data partitur yang digunakan, ditulis dan dicetak kembali secara digital
menggunakan Encore.
4. Partitur-partitur yang digunakan hanya memiliki satu nada dalam satu satuan ketukan.
5. Jumlah contoh partitur yang digunakan adalah tidak lebih dari 100 partitur dari lagu yang berbeda-beda.
6. Hanya dapat membaca nada yang ada, dan tidak dapat membaca tanda-tanda baca dalam partitur (tanda-tanda diam, hiasan, kres dan mol).
7. Dalam implementasinya menggunakan Java dan Matlab, dengan JMatLink sebagai library untuk menghubungkan keduanya.
8. Menggunakan operasi konvolusi dengan menggunakan kernel [-1 1 -1]
1.5. Sistematika Penulisan
Secara umum isi dokument ini tersusun sesuai dengan sistematika yang dijelaskan sebagai berikut :
1. BAB 1 : Pendahuluan
Pada bab ini berisi latar belakang dan masalah mengapa diadakan penelitian ini dengan batasan-batasan masalah pada penelitian ini.
(25)
2. BAB 2 : Landasan Teori
Pada bab ini dijelaskan mengenai teori-teori apa saja yang digunakan untuk mendukung penelitian ini.
3. BAB 3 : Metodologi Penelitian
Bab ini berisi langkah-langkah kerja dan metode-metode yang digunakan dalam penelitian.
4. BAB 4 : Implementasi
Bab ini berisi mengenai implementasi dalam program, untuk langkah kerja dan metode yang telah disusun pada bab 3.
5. BAB 5 : Hasil dan Pengujian
Bab ini berisi hasil pengujian yang dilakukan terhadap sistem, beserta analisis terhadap hasil tersebut.
6. BAB 6 : Kesimpulan dan Saran
Bab ini berisi kesimpulan terhadap penelitian ini, dan saran untuk pengembangan penelitian berikutnya.
(26)
7
BAB II
LANDASAN TEORI
Pada bab ini akan dijelaskan mengenai teori-teori yang dapat mendukung penelitian, diantaranya image processing, proyeksi, konvolusi, dan feature extraction.
2.1. Image Processing
Secara umum image processing menunjuk pada pemrosesan gambar 2 dimensi menggunakan komputer. Citra digital merupakan sebuah larik (array) yang berisi nilai-nilai real maupun kompleks yang direpresentasikan dengan deret bit tertentu. Suatu citra dapat didefinisikan sebagai sebuah fungsi f(x,y) berukuran M garis dan N kolom yang dimana x dan y merupakan koordinat dan f merupakan amplitudo pada koordinat (x,y) yang dinamakan intensitas atau tingkat keabuan dari citra pada titik koordinat tersebut (Putra, 2010, Pengolahan Citra Digital, hal. 19). Citra dapat ditulis dengan matrix sebagai berikut :
(27)
2.2. Feature Extraction
Ekstraksi fitur(Feature Extraction) merupakan bagian fundamental dari analisis citra. Fitur adalah karakteristik unik dari suatu objek citra. Karakteristik fitur yang baik memiliki syarat seperti berikut :
1. Dapat membedakan suatu objek dengan yang lainnya.
2. Memperhatikan kompleksitas komputasi dalam memperoleh fitur. Semakin rendah tingkat kompleksitas komputasi maka akan semakin baik.
3. Tidak terikat dalam arti bersifat invarian terhadap berbagai transformasi. 4. Jumlahnya sedikit, karena fitur yang jumlahnya sedikit akan menghemat
waktu komputasi dan ruang penyimpanan untuk proses berikutnya. Ekstraksi Fitur yang digunakan dalam citra terdapat 3 ekstraksi fitur yaitu : - Ekstraksi bentuk (shape)
- Ekstraksi warna (color) - Ekstraksi tekstur (texture)
2.3. Citra Biner
Citra biner merupakan citra yang hanya memiliki 2 kemungkinan nilai pixel, 1 dan 0. Nilai 1 merupakan warna putih sedangkan nilai 0 adalah warna hitam. Citra biner biasanya disebut citra B&W (Black and White) atau citra monokrom. Untuk menyimpan data 1 pixel hanya dibutuhkan memori sebesar 1 bit.
(28)
Citra biner sering muncul sebagai hasil segmentasi, pengambangan, morfologi atau dithering
Gambar 2.1.Contoh citra biner
2.4. Proyeksi Citra
Proyeksi citra merupakan teknik pemrosesan citra dimana jumlah level pixel dari sebuah citra dihitung sepanjang baris (lebar) citra tersebut untuk mendapatkan proyeksi horizontal dan sepanjang kolom (tinggi) citra tersebut untuk mendapatkan proyeksi vertikal. Proyeksi tersebut digambarkan dalam bentuk histogram. Tinggi histogram akan menunjukkan banyaknya pixel pada baris atau kolom tertentu.
Gambar 2.2Contoh histogram horizontal-vertical (sumber : Burger. (2008). Digital Image Processing.)
(29)
Dengan rumus perhitungan sebagai berikut :
∑
=
= M
j
v i S i j
P 1 ] , [ ] [
∑
= = N jh i S i j
P 1 ] , [ ] [
Berikut merupakan penjelasan mengenai cara kerja proyeksi beserta segmentasi terhadap citra biner potongan partitur not balok.
Gambar 2.3. Contoh citra potongan partitur
Gambar 2.4.Hasil proyeksi vertikal(bawah) dan horizontal (kanan)
Untuk membentuk matrix citra seperti diatas bukan hanya membuat citra biner, namun citra tersebut harus dinegasikan, agar objek diwakili
(30)
dengan angka 1 dan background diwakili angka 0 Hasil proyeksi vertikal digunakan untuk melakukan proses segmentasi, yang dimana akan melakukan pemotongan dengan nilai ambang adalah 5 (jumlah garis).
Gambar 2.5.Proses segmentasi
(31)
2.5. Konvolusi
Konvolusi merupakan sebuah operasi sentral pada pengolahan citra. Proses konvolusi dapat dijelaskan sebagai berikut. Kernel atau matrix konvolusi dikenai operasi perkalian lalu kemudian dikenai operasi penjumlahan pada setiap pixel dan menghasilkan nilai pixel baru. Proses konvolusi dirumuskan sebagai berikut :
,= +− 1,+ − 1(, )
ୀଵ
ୀଵ
Dimana O(i,j) merupakan nilai pixel baru, U merupakan citra input, dan K merupakan kernel yang digunakan. Kernel sangat penting untuk memiliki posisi central, atau dapat juga berupa matrix 2 x 2.
Berikut merupakan contoh operasi konvolusi untuk mendeteksi sebuah garis lurus dari citra not balok seperti contoh gambar 2.7. dan matrix konvolusi yang digunakan adalah matrix 1 x 3.
−1 1 −1
(32)
Perhitungan konvolusinya dijelaskan sebagai berikut : O(0,1) = 0 * -1 + 0 * 1 + 0 * -1 = 0
O(0,2) = 0 * -1 + 0 * 1 + 0 * -1 = 0 …
…
O(12,3) = 0 * -1 + 0 * 1 + 0 * -1 = 0
Sehingga dihasilkan citra baru yang hanya menyisakan sebuah garis lurus.
Gambar 2.8.Hasil operasi konvolusi Gambar 2.7.
2.6. Not Balok
Dalam musik tinggi-rendah, dan panjang-pendeknya nada dapat ditunjukan dengan tanda yang disebut not. Not berfungsi sebagai huruf dalam musik, dimana jika dibunyikan akan terdengar sebagai kalimat-kalimat musik, sama seperti halnya huruf alphabet jika dibunyikan akan
(33)
terdengar kata-kata dan kalimat-kalimat. Jenis-jenis penulisan not balok (titinada) dapat ditulis dalam beberapa kunci yaitu G, F, C.
(a) (b) (c)
Gambar 2.9.(a) Kunci G, (b) Kunci F, (c) Kunci C
Not balok ditulis dalam sebuah garis-garis paranada. Yang dimana nadanya ditentukan oleh kunci. Pada kunci G nada g’ diletakan pada garis ke-2 dari bawah. Pada kunci F, nada f diletakan pada garis ke-2 dari atas.
Gambar 2.10.Posisi nada pada kunci G dan F
Sebuah not terdiri atas beberapa bagian yaitu kepala, tongkat dan bendera. Nada g’
(34)
Gambar 2.11.Nama bagian not
Sebuah not terdiri atas nilai sebagai berikut (untuk ketukan berbasis 4) :
Gambar 2.12Nilai-nilai dari suatu not balok
Nilai sebuah not atau tanda istirahat menentukan berapa lama not berbunyi atau istirahat. Selain terpengaruh oleh nilai, lamanya not berbunyi juga dipengaruhi oleh metronome. Untuk metronome 60 yang dimana artinya terdapat 60 ketukan dalam 1 menit, not bernilai ¼ memiliki jumlah ketukan sebanyak 1 ketukan. Begitu juga not bernilai 1/8 memiliki jumlah ketukan sebanyak ½ ketukan dan seterusnya.
(35)
2.7. Precision-Recall
Precision merupakan bagian yang dikenali sistem dari yang relevan, sedangkan recall merupakan sebagian dokumen yang relevan dari yang dikenali sistem. Keduanya merupakan ukuran kepemahaman dan relevansi. Biasanya pengukuran kesuksesan precision-recall digunakan pada pengenalan pola dan pemerolehan informasi.
Gambar 2.13.Ilustrasi precision-recall
Jika dirumuskan maka cara untuk menghitung precision-recall adalah sebagai berikut.
= ∩
= ∩
relevan dikenali
R P
(36)
17
Bab III
METODOLOGI PENELITIAN
3.1. Perancangan Data Input
Data input yang digunakan merupakan file image / citra partitur not balok yang berekstensi *.png. File yang akan digunakan adalah sebanyak 50 partitur. Partitur not balok tersebut didapatkan dari 2 buku yaitu “Menjadi Organis 1” dan “SPECIAL SONG for kids Sunday school”. Untuk membuat partitur tersebut menjadi bentuk file yang siap untuk dikenai pemrosesan citra, partitur tersebut melewati tahap pembuatan file, dan penghapusan objek yang tidak diperlukan. Tahap-tahap tersebut dijelaskan sebagai berikut :
3.1.1. Tahap pembuatan file
Untuk membuat file image partitur, diperlukan beberapa tools yaitu Encore 5 dan ImagePrinter. Encore merupakan tools yang digunakan untuk membuat partitur, dan ImagePrinter merupakan tools yang digunakan untuk mencetak partitur menjadi sebuah file image dengan ekstensi yang ditentukan.
Buku “Menjadi Organis 1” merupakan buku yang berisi partitur lagu yang sudah ditulis dalam bentuk not balok. Jadi dalam pembuatannya hanya perlu memindahkan not balok yang ada dibuku ke dalam Encore, dengan menghilangkan atau tidak
(37)
mengikut sertakan tanda baca seperti kres, mol, garis lengkung (frasering), dll. Sedangkan untuk buku “SPECIAL SONG for kids Sunday school” yang berisi partitur lagu yang ditulis dengan not angka, untuk mendapatkan partitur not balok, harus terlebih dahulu merubah not angka menjadi not balok. Dimana semua not angka dibaca sebagai do = c atau dalam not balok sering disebut dengan tangga nada naturel (tanpa kres dan mol).
Setelah dibuat dengan menggunakan Encore, lalu partitur dicetak dengan menggunakan tools ImagePrinter. Yang akan menyimpan file image partitur hasil cetakan Encore.
(38)
Gambar 3.2.Contoh hasil pembuatan partitur
3.1.2. Tahap penghapusan objek asing
Pada penelitian kali ini yang digunakan adalah murni partitur not balok tanpa ada objek-objek asing diluar not balok. Karena hasil cetakan encore dan imageprinter masih mengandung
(39)
objek-objek asin tersebut a MSPaint. objek-obje
3.2. Perancangan Sist
Rancangan s diagram aliran data
3.2.1. DFD level 0
User
sing seperti nama composer, judul (title), maka ob t akan dihapus secara manual dengan mengguna nt. Sehingga didapatkan file partitur yang tidak me
bjek asing.
Gambar 3.3.Contoh hasil penghapusan
istem
n sistem untuk membaca partitur dapat dijabark ata sebagai berikut :
l 0 / Diagram konteks :
Gambar 3.4. DFD level 0
Sistem Pembaca partitur Citra partitur not balok, satuan
waktu (metronome)
Suara
objek-objek unakan tools mengandung
arkan dalam
(40)
3.2.2. DFD level 1:
Gambar 3.5. DFD level 1
3.2.3. DFD level 2:
3.2.3.1. Proses 2. Mendapatkan baris partitur
Gambar 3.6. DFD level 2 proses 2
Citra baris 2.1
Proyeksi horizontal Citra biner partitur
Hasil proyeksi horizontal 2.2
Segmentasi horizontal 1.
Tranformasi menjadi citra biner
2. Mendapatkan
baris partitur
3.
Mencari posisi garis
4. Mendapatkan bagian not balok
5. Mengenali bagian not balok Citra partitur
Citra biner partitur
Citra baris Citra baris Posisi garis Bagian not balok Posisi garis Jenis bagian, Nilai dan nada not User 6. Membunyikan nada suara Metronome
(41)
3.2.3.2. Proses 3. Mencari posisi garis
Gambar 3.7. DFD level 2 proses 3
3.2.3.3. Proses 4. Mendapat bagian not balok
Gambar 3.8. DFD level 2 proses 4
3.1
Proyeksi horizontal Citra baris
Hasil Proyeksi 3.2
Mencari index bernilai Posisi garis
Citra baris 4.1
Penghapusan Garis Posisi garis
Citra baris tanpa garis
4.3
Segmentasi vertikal 4.2
Proyeksi vertikal Hasil proyeksi vertical baris
Hasil pemotongan vertikal
4.4
Hapus kunci, penutup dan jenis ketukan
(42)
3.2.3.3. Proses 5. Mengenali bagian not balok
Gambar 3.9. DFD level 2 proses5
3.3. Desain Proses
Berdasarkan DFD yang telah dirancang pada sub bab sebelumnya, pada sub bab ini akan dijelaskan proses-proses yang ada pada DFD.
5.1 Deteksi Garis lurus (tangkai not)
5.2 Pengenalan jenis
bagian
5.4 Pencarian nada
Bagian not balok
Posisi garis lurus
Jenis bagian 5.5 Pencarian Nilai Posisi garis nada nilai 5.3 Penentuan posisi garis Posisi garis lurus
Perkiraan Posisi
Jenis bagian
Posisi garis
(43)
3.3.1. Proses 1. Tranformasi menjadi citra biner
Proses ini adalah untuk membuat citra biner dari citra partitur yang dimasukan oleh user agar lebih mudah untuk dilakukan pemrosesan lebih lanjut.
3.3.1.1. Ilustrasi
Gambar 3.10. Ilustrasi tranformasi menjadi citra biner
3.3.1.2. Algoritma
Cara kerja dari proses ini dijelaskan dengan psuedocode berikut: 1. Merubah citra warna menjadi citra keabuan
2. Mencari threshold citra keabuan 3. Untuk setiap pixel
(44)
a. jika nilai keabuan > threshold maka nilai biner pixel tersebut = 1
b. Jika tidak maka nilai biner pixel tersebut = 0 4. Semua nilai citra biner dibalik 0 => 1 dan 1 => 0
3.3.2. Proses 2.1. Proyeksi horizontal
Proses ini adalah untuk membuat histogram proyeksi secara horizontal. Proses proyeksi horizontal juga dilakukan pada proses 3.1. Secara umum proyeksi horizontal dikerjakan dengan menjumlahkan pixel secara horizontal.
3.3.2.1. Ilustrasi
Gambar 3.11. Potongan citra (kiri) dan hasil proyeksi horizontal (kanan)
3.3.2.2. Algoritma
Cara kerja dari proses ini dijelaskan dengan psuedocode berikut :
(45)
3.3.3. Proses 2.2. Segmentasi horizontal
Proses ini adalah untuk memotong citra sesuai dengan hasil proyeksi horizontal, dan dengan ambang batas. Pada kasus citra partitur not balok proses ini digunakan untuk mendapatkan baris-baris not balok.
3.3.3.1. Ilustrasi
Gambar 3.12. Hasil segmentasi mendapatkan 2 objek (atas dan bawah)
3.3.3.2. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut :
1. cari index pertama dari hasil proyeksi > thres masukan dalam variable indexAwal
2. cari index berikutnya dari hasil proyeksi < thres masukan dalam variable indexAkhir
3. lakukan copy array dari i = 0 sampai width image, j = indexAwal sampai indexAkhir – 1 :
(46)
citra baris baru[j-indexAwal][i] = citra biner partitur[j][i]; 4. citra baris baru ditambahkan dalam array citra baris. 5. lakukan proses 1-3, untuk index sampai height image.
3.3.4. Proses 3.2. Mencari index max
Proses ini adalah untuk mencari posisi garis dengan mengacu pada nilai max pada hasil proyeksi horizontal, karena posisi-posisi garis memiliki intensitas pixel yang paling banyak secara proyeksi horizontal.
3.3.4.1. Ilustrasi
Gambar 3.13. Posisi-posisi max [0 – 4]
3.3.4.2. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut : 1. cari nilai max dari hasil proyeksi horizontal. 2. i 0;
3. Untuk setiap index hasil proyeksi : a. Jika nilai[index] == max
b. Maka posisi garis[i] index; i++; [0
[1 [2 [3 [4
(47)
3.3.5. Proses 4.1. Penghapusan garis
Proses ini untuk menghilangkan garis-garis paranada, karena akan mempermudah mengenali objek dan melakukan segmentasi secara vertikal pada proses berikutnya.
3.3.5.1. Ilustrasi
Gambar 3.14. Potongan citra baris
Untuk setiap titik sebagai titik tengah pada posisi garis (proses
3.2.), yang memiliki pola seperti matrix
0 1 0
akan diubah menjadi 0.
Sehingga semua garis akan dapat dihapus.
(48)
3.3.5.2. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut :
1. currentPos posisiGaris[0] % nilaiAbsolut(posisiGaris[0] – posisiGaris[1])
2. jarakAntarGaris nilaiAbsolut(posisiGaris[0] – posisiGaris[1])
3. untuk semua pixel baris currentPos pada citra baris (citra baris[currentPos][*]) lakukan :
a. jika pixel citrabaris[currentPos+1][*] dan citrabaris[currentPos-1][*] == 0 maka nilai pixel citrabaris[currentPos][*] = 0;
4. currentPos += jarakAntarGaris;
5. lakukan tahap no 3-4 selama currentPos < image’s height
3.3.6. Proses 4.2. Proyeksi vertikal
Proses ini adalah untuk membuat histogram proyeksi secara vertikal. Secara umum proyeksi vertikal dikerjakan dengan menjumlahkan pixel secara vertikal.
(49)
3.3.6.1. Ilustrasi
Gambar 3.16. Citra (atas) dan hasil proyeksi vertikal (bawah)
3.3.6.2. Algoritma
Cara kerja dari proses ini dijelaskan dengan psuedocode berikut :
1. [] = ∑ୀ ′௦௧ []
3.3.7. Proses 4.3. Segmentasi vertikal
Proses ini adalah untuk memotong citra sesuai dengan hasil proyeksi vertikal, dan dengan ambang batas tertentu. Proses ini adalah untuk mendapatkan bagian-bagian not balok.
(50)
3.3.7.1. Ilustrasi
Gambar 3.17. Hasil segmentasi vertikal
3.3.7.2. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut :
1. cari index pertama dari hasil proyeksi > thres masukan dalam variable indexAwal
2. cari index berikutnya dari hasil proyeksi < thres masukan dalam variable indexAkhir
3. lakukan copy array dari i = 0 sampai height image, j = indexAwal sampai indexAkhir – 1 :
citra bagian baru[i] [j-indexAwal] = citra biner partitur[i][j]; 4. citra bagian baru ditambahkan dalam array citra bagian.
(51)
5. laku
3.3.8. Proses 4.4. H
Proses ketukan, kare C. Sedangka penutup. 3.3.8.1. Ilustr Gambar 3.3.8.2. Algo Cara ke 1. hapu 2. jika
pert 3. jika
terak
3.3.9. Proses 5.1. D
Proses Proses ini m noise setelah
kukan proses 1-3, untuk index sampai width imag
. Hapus kunci, penutup dan jenis ketukan
es ini adalah menghilangkan kunci, penutup arena semua dianggap ketukan */4 dan bermain p kan penutup merupakan sebuah garis diakhir, seb
strasi
ar 3.18. Penghapusan kunci,dan jenis ketukan
lgoritma
kerja proses ini dijelaskan sebagai berikut : apus bagian pertama setiap baris
ka baris merupakan baris pertama maka hap ertama berikutnya
ka baris merupakan baris terakhir maka hapus rakhir dalam baris tersebut.
. Deteksi garis lurus(tangkai not)
es ini bertujuan mencari posisi sebuah garis luru menggunakan operasi konvolusi dan juga meng lah dikenai operasi konvolusi.
age.
p dan jenis n pada kunci ebagai tanda
apus bagian
us 2 bagian
urus vertikal. enghilangkan
(52)
3.3.9.1. Mendapatkan matrix konvolusi deteksi garis lurus.
Pada penelitian ini untuk mendapatkan matrix konvolusi deteksi garis lurus, adalah sebagai berikut :
1. Tentukan dimensi matrix. Karena titik-titik penyusun garis lurus memiliki susunan matrix 0 1 0 maka dapat ditentukan bahwa matrixnya akan berdimensi 1 x 3
2. Karena titik tersebut tidak memiliki pixel baik di kanan maupun disebelah kiri, maka jika terdapat pixel harus dapat merubah nilai tengah. Contoh perhitungan kemungkinan I :
0 1 1∗ ! = 0
!+= 0
!= −
Contoh perhitungan kemungkinan II :
1 1 0∗ ! = 0
!+= 0
!= −
Dari kedua persamaan diatas jika diambil suatu nilai konstanta untuk y adalah 1, maka z dan x adalah -1. Sehingga didapatkanlah matrix −1 1 −1.
(53)
3.3.9.2. Ilustrasi
Gambar 3.19.Contoh citra not balok
Contoh diatas dikenai dengan operasi konvolusi [1 1 -1]. Maka akan menghasilkan garis-garis lurus.
Gambar 3.20.Hasil operasi konvolusi gambar 3.19.
3.3.9.3. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut :
1. kenai citra bagian not balok dengan operasi konvolusi menggunakan matrix konvolusi 1 x 3.
(54)
2. lakukan penghilangan noise untuk citra bagian not balok, jika terdapat matrix berikut dalam citra tersebut maka akan dianggap noise dan akan dihapus.
0 0 0
0 1 0
0 0 0
3. lakukan proyeksi vertical untuk mendapatkan posisi garis lurus.
4. Untuk setiap hasil proyeksi > 0, maka akan disimpan sebagai posisi garis lurus.
3.3.10. Proses 5.2. Pengenalan jenis bagian
Proses ini adalah proses untuk mengenali bagian not balok tersebut merupakan nada, garis birama, atau tanda diam.
3.3.10.1. Ilustrasi
(55)
Gambar 3.22. Contoh gambar-gambar tanda diam
Gambar 3.23. Contoh garis birama
3.3.10.2. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut : 1. Jika jumlah garis lurus == 1 maka :
a. Jika lebar citra == maka
jenis bagian = ”batas birama” end b. Jika tidak :
jenis bagian = ”nada” end 2. Jika jumlah garis lurus > 1 maka :
jenis bagian = ”nada” end 3. Jika jumlah garis lurus == 0 maka :
(56)
b. hitung tinggi citra sesungguhnya.
c. Jika bagian memiliki tinggi == ||posisi garis[0] – posisi garis[1]|| maka
jenis bagian = “nada” end
d. First posisi pertama hasil proyeksi bernilai > 0 e. Last posisi terakhir hasil proyeksi bernilai > 0
f. Jika tinggi < ||posisi garis[0] – posisi garis[1]|| dan first != posisi garis[1] dan last != posisi garis[2] maka
jenis bagian = “titik” end g. jika tidak maka
jenis bagian = “jeda” end
3.3.11. Proses 5.3. Penentuan posisi garis
Proses ini adalah proses untuk menentukan posisi garis berada pada belakang, depan atau tengah dari citra. Proses ini akan membantu dalam penentuan posisi kepala.
3.3.11.1. Ilustrasi
(57)
Gambar 3.25. Garis di belakang
Gambar 3.26. Garis di tengah
3.3.11.2. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut: 1. Jika jumlah jenis bagian == “nada” maka :
a. Jika garis lurus > 1 maka :
- Jika posisi garis pertama < (lebar citra – garis terakhir) maka
Perkiraan posisi = “depan” - Jika tidak maka :
Perkiraan posisi = “belakang”
b. Jika tidak maka jika garis lurus == 1 maka - Jika posisi garis lebih dekat dengan 0, maka
(58)
- Jika posisi garis lebih dekat dengan lebar citra, maka Perkiraan posisi = “belakang”
- Jika posisi garis lebih dekat dengan lebar citra / 2 (posisi tengah), maka
Perkiraan posisi = “tengah” 2. Jika tidak maka end
3.3.12. Proses 5.4. Pencarian nada
Proses ini adalah proses untuk menentukan nada dari citra bagian not balok. Karena akan dibunyikan maka nada harus diubah menjadi angka yang dimana, nada g = 67, a = 69, b = 71, c’ = 72, d’ = 74, e’ = 76, f’ = 77, begitu seterusnya untuk masing-masing nada ditambah atau dikurangi 12 untuk setiap oktafnya.
3.3.12.1. Ilustrasi
Gambar 3.27. Contoh gambar not
Pada Gambar 3.27. terdapat 4 buah nada, yang masing-masing merupakan nada c, G, A, dan B.
(59)
3.3.12.2. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut : 1. Jika jenis bagian == “nada” maka
a. Jika jumlah garis lurus > 1 maka :
- jika perkiraan posisi == “tengah” atau “belakang” Untuk setiap posisi garis lurus telusuri sampai dapat posisi pixel paling bawah.
- Jika perkiraan posisi == “depan”
Untuk setiap posisi garis lurus telusuri sampai dapat posisi pixel paling atas.
b. Jika tidak maka :
Untuk posisi pixel kolom ke-0 telusuri sampai dapat posisi pixel paling atas.
c. Beda nada= pembulatan kebawah((posisi pixel – posisi garis[3]) / (||posisi garis[0] – posisi garis[1]||/2))
d. Nilai nada = {0, 2, 4, 5, 7, 9, 10}
e. Nada = nilai nada[beda nada % 12] + pembulatan kebawah(beda nada / 12) * 12
f. Nada += 67.
(60)
3.3.13. Proses 5.5. Pencarian nilai
Proses ini adalah proses untuk menentukan nilai dari citra bagian not balok. Citra yang akan dikenai proses pencarian nilai hanya citra bagian yang dikenali sebagai not saja.
3.3.13.1. Ilustrasi
Gambar 3.28. Nada 1/4
Gambar 3.29. Nada 1/2
(61)
3.3.13.2. Algoritma
Cara kerja proses ini dijelaskan sebagai berikut : 1. Jika jenis bagian == “titik” maka :
- X Nilai bagian sebelumnya - X X * 3 / 4
- Nilai bagian sebelumnya X - end
2. Jika jenis bagian != “nada” maka end 3. Jika jumlah garis lurus == 0 maka :
Nilai = 1 end
4. Jika jumlah garis lurus == 1 maka :
a. Jika perkiraan posisi == “belakang” maka
- Cek pada citra bagian koordinat y = posisi kepala, x = tengah citra, apakah terdapat pixel (citra(x,y) == 1) jika iya maka :
Nilai = ¼ end - Jika tidak maka : Nilai = ½ end
b. Jika perkiraan posisi == “tengah ” maka - Posisi bendera posisi garis lurus + 1
- Jumlah bendera jumlah kumpulan pixel pada posisi bendera
(62)
c. Jika perkiraan posisi == “depan” maka
- Cek pada citra bagian koordinat y = posisi kepala, x = tengah citra, apakah terdapat pixel (citra(x,y) == 1) jika iya maka :
• Posisi bendera posisi garis lurus – 1
• Jumlah bendera jumlah kumpulan pixel pada posisi bendera
• Jumlah bendera = Jumlah bendera – 1 // karena 1 kumpulan pixel merupakan kepala not
• Nilai = ½ jumlah bendera + 2 end - Jika tidak maka :
Nilai = ½ end
5. Jika jumlah garis lurus > 1 maka :
a. Untuk i = 0 sampai jumlah garis lurus – 1 lakukan proses b sampai d
b. Untuk garis lurus pertama :
- Posisi bendera posisi garis lurus + 1
- Jumlah bendera jumlah kumpulan pixel pada posisi bendera
- Jika perkiraan posisi == “depan” maka :
• Jumlah bendera = Jumlah bendera – 1 - Nilai[i] = ½ jumlah bendera + 2
(63)
c. Untuk garis lurus terakhir :
- Posisi bendera posisi garis lurus + 1
- Jumlah bendera jumlah kumpulan pixel pada posisi bendera
- Jika perkiraan posisi == “belakang” maka :
• Jumlah bendera = Jumlah bendera – 1 - Nilai[i] = ½ jumlah bendera + 2
d. Untuk garis lurus di tengah (i != 0 && i != jumlah garis lurus – 1) :
- Posisi bendera1 posisi garis lurus + 1 - Posisi bendera2 posisi garis lurus – 1
- Jumlah bendera1 jumlah kumpulan pixel pada posisi bendera1
- Jumlah bendera2 jumlah kumpulan pixel pada posisi bendera2
- Jika perkiraan posisi == “depan” maka : Jumlah bendera1 = Jumlah bendera1 – 1 - Jika perkiraan posisi == “belakang” maka :
Jumlah bendera2 = Jumlah bendera2 – 1
- Jika Jumlah bendera1 > Jumlah bendera2 maka : Jumlah bendera = jumlah bendera1
(64)
Jumlah bendera = jumlah bendera2 - Nilai[i] = ½ jumlah bendera + 2
e. end
3.3.14. Proses 6. Membunyikan nada
Proses ini merupakan proses untuk membunyikan nada-nada yang telah dibaca. Algoritma untuk proses ini adalah sebagai berikut :
1. Jika jenis bagian == “jeda” maka
a. Bunyikan sebuah nada dengan volume 0 selama (0.25 * 60 / metronome * 4) detik
2. Jika jenis bagian == “nada” maka
a. Bunyikan nada dengan volume 60 selama (nilai * 60 / metronome * 4) detik
3.4. Perancangan Pengujian
3.4.1. Pembuatan jawaban
Jawaban dibuat secara manual, dengan menggunakan notepad dan disimpan dalam ekstensi *.txt. Jawaban dibuat dengan format sebagai berikut :
(65)
1. Semua nada akan ditulis dengan format
HurufNada/Oktaf/Nilai. Huruf nada merupakan huruf yang digunakan untuk melambangkan sebuah nada. Oktaf merupakan tinggi oktaf dari nada tersebut, yang dimana c’ 2. sampai b’ dianggap sebagai oktaf ke-0. Nilai merupakan
nilai nada tersebut. Contoh penulisan untuk beberapa nada :
= d/0/0.5 = f/1/1
Gambar 3.31. Contoh nada dan jawaban
3. Untuk batas birama akan ditulis “\n” atau spasi(Enter) 4. Untuk jeda akan ditulis “jeda”
3.4.2. Tranformasi nada dan nilai menjadi jawaban
Algortima untuk merubah nada dan nilai pada masing-masing bagian menjadi format seperti diatas dijelaskan sebagai berikut :
1. HurufNada = {c,d,e,f,g,a,b} 2. NilaiNada = {0,2,4,5,7,9,11}
3. Jika jenis bagian == “batas birama” maka : stringBagian = “\n” end
(66)
stringBagian = “jeda” end 5. Jika jenis bagian == “nada” maka :
- index = search Index (nada%12) pada nilaiNada. - hurufNada = HurufNada[index]
- Oktaf = bulatKeBawah((nada – 60)/12) - Nilai = nilai
- stringBagian = hurufNada+“/”+Oktaf+“/”+Nilai
3.4.3. Pengujian dengan precision-recall
Pengujian hasil dilakukan dengan metode precision-recall untuk masing-masing partitur, yang dimana terdapat 50 partitur untuk dilakukan pengujian. Pengujian akan menghasilkan 50 persentase precision-recall, kemudian akan dirata-rata dan akan menghasilkan average precision-recall. Proses / algoritma pengujian yang akan dilakukan adalah sebagai berikut :
1. jawaban = jawaban yang dibuat
2. hasilSistem = hasil jawaban pembacaan sistem
3. jawaban dan hasilSistem displit berdasarkan spasi(“ ”). 4. Benar = 0
5. Setiap splithasilSitem dicocokan dengan setiap splitJawaban.
a. Jika cocok maka : Benar += 1
(67)
6. Precision = Benar / Jumlah splithasilSistem 7. Recall = Benar / jumlah splitJawaban
3.5. Perancangan Interface
Interface yang digunakan merupakan interface sederhana yang dapat memenuhi input user berupa metronome dan citra partitur. Diperlukan tombol browse untuk membuka pilihan file citra partitur. Selain itu, diperlukan tombol play yang dapat membunyikan nada-nada yang dibaca oleh sistem.
(68)
49
BAB IV
IMPLEMENTASI
Pada bab 4 berisi implementasi sistem, pengujian dan interface. Implementasi ini menggunakan bahasa pemrograman Java dan sedikit bagian menggunakan Matlab. Untuk menjalankan program Matlab di Java digunakan JMatLink. Implementasi sistem merupakan implementasi inti pembacaan citra partitur musik, implementasi pengujian berisi code-code sederhana untuk membantu pengujian agar menjadi lebih cepat, implementasi interface merupakan hasil implementasi antarmuka untuk sistem pembacaan partitur yang dibuat.
4.1. Implementasi Sistem
Pada beberapa proses menggunakan bantuan Matlab, dengan menggunakan JMatLink. Secara umum penggunaan JMatLink adalah sebagai berikut :
1. JMatLink jmat = new JMatLink();
2. Long t = jmat.engOpenSingleUse();// untuk memulai koneksi dengan matlab
3. jmat.engEvalString(“// perintah matlab”);
4. jmat.engClose(t); // untuk mengakhiri koneksi dengan matlab Implementasi sistem berisi code-code dengan menggunakan java dan beberapa akan digabung dengan Matlab. Implementasi ini merupakan
(69)
implementasi perancangan sistem yang telah dibuat pada bab sebelumnya. Implementasi berikut merupakan implementasi sistem :
4.1.1. Proses 1. Transformasi menjadi citra biner
Transformasi akan diimplementasikan dengan menggunakan java yang dihubungkan dengan matlab. Proses transformasi ini menggunakan beberapa function yang disediakan matlab seperti im2bw() untuk merubah sebuah citra menjadi citra biner. Selain itu untuk membaca file menggunakan function imread(). Setelah mendapatkan citra biner, data dari matlab akan disalin kedalam bentuk array 2 dimensi pada java. Proses ini diimplementasikan pada method ImS.bacaFile().
(70)
4.1.2. Proses 2.1. Proyeksi horizontal
Proyeksi horizontal diimplementasikan dengan menggunakan java, dan diimplementasikan pada method ImS.getHorizontal(). Berikut merupakan code implementasi :
4.1.3. Proses 2.2. Segmentasi horizontal
Segmentasi horizontal diimplementasikan pada method
ImS.potongHorizontal(). Segmentasi horizontal akan menghasilkan citra baris-baris dari partitur yang dimasukan.
(71)
4.1.4. Proses 3.2. Mencari index max
Proses ini diimplementasikan pada method ImS.posisiGaris(). Berikut merupakan implementasi untuk proses mencari index max :
(72)
4.1.5. Proses 4.1. Penghapusan garis
Proses ini diimplementasikan pada method ImS.hapusGaris(). Berikut merupakan code implementasi proses penghapusan garis :
4.1.6. Proses 4.2. proyeksi vertikal
Proses ini diimplementasikan pada method ImS.getVertical(). Berikut merupakan code implementasi proyeksi vertikal :
(73)
4.1.7. Proses 4.3. Segmentasi vertikal
Proses ini diimplementasikan pada method ImS.potongVertical(). Berikut merupakan code implementasi segmentasi vertikal :
4.1.8. Proses 4.4. Hapus kunci, penutup dan jenis ketukan
Proses ini diimplementasikan pada method All.baris2Bagian(). Berikut merupakan code implementasi hapus kunci, penutup dan jenis ketukan :
(74)
4.1.9. Proses 5.1. Deteksi garis lurus(tangkai not)
Proses ini diimplementasikan pada function detectGaris() yang diimplementasikan menggunakan Matlab. Berikut merupakan code implementasi deteksi garis lurus(tangkai not) :
(75)
4.1.10. Proses 5.2. Pengenalan jenis bagian
Proses ini diimplementasikan dalam method kenaliBagian(), isNada(), dan isTitik() berikut merupakan implementasi code :
isNada() :
(76)
4.1.11. Proses 5.3. Penentuan posisi garis
Proses ini diimplementasikan dalam method posisiTangkai() untuk jumlah garis lurus(tangkai) == 1, sedangkan posisiTangkai() untuk jumlah garis lurus(tangkai) > 1 berikut merupakan implementasi code :
(77)
4.1.12. Proses 5.4. Pencarian nada
Proses pencarian nada diimplementasikan pada method posisiKepala dan getNada(), berikut code implementasi proses pencarian nada :
(78)
4.1.13. Proses 5.5. Pencarian nilai
Proses ini diimplementasikan secara terpisah-pisah pada method kenali(), kenaliBagian(), hitungBendera(), dan getNilai(). Cara kerja proses ini dijelaskan sebagai berikut :
• Untuk jenis bagian == “titik” :
(79)
• Untuk jumlah garis lurus == 1 :
(80)
• Untuk jumlah garis lurus (tangkai) > 1 :
Method getNilai() digunakan pada kondisi jumlah garis lurus(tangkai) == 1, dan jumlah garis lurus(tangkai) == 1.
(81)
4.1.14 Proses 6. Membunyikan nada
Proses ini diimplementasikan dengan menggunakan MIDI, dan dalam method play(). Untuk tanda jeda tetap akan dibunyikan sebuah nada default tetapi dengan keras suara dibuat menjadi 0, sehingga tidak terdengar.
(82)
4.2. Implementasi Interface
Implementasi interface adalah sebagai berikut
Gambar 4.1.Hasil implementasi interface
Ketika tombol browse diklik maka akan muncul dialog pencarian file sebagai berikut :
Gambar 4.2. JFileChooser
Setelah file dipilih kemudian user harus menekan tombol process
untuk memproses citra, setelah selesai, maka tombol play akan dibuka. Metronome jika tidak diisi maka akan bernilai default 60. Jika user menekan tombol play maka akan terdengar suara nada sesuai hasil pembacaan file.
(83)
64
Bab V
Hasil dan Pengujian
5.1. Data Input
Data input yang digunakan merupakan file image / citra partitur not balok yang berekstensi *.png. File yang akan digunakan adalah sebanyak 50 partitur. Partitur not balok tersebut didapatkan dari 2 buku yaitu “Menjadi Organis 1” dan “SPECIAL SONG for kids Sunday school”. Untuk membuat partitur tersebut menjadi bentuk file yang siap untuk dikenai pemrosesan citra, partitur tersebut melewati tahap pembuatan file, dan penghapusan objek yang tidak diperlukan. Citra partitur diberi nama 01.png sampai 50.png.
Tabel 5.1.Tabel file pengujian
Nama File Ukuran dimensi citra Ukuran file
01.png 2480 x 904 56.9 KB
02.png 2343 x 798 54.5 KB
03.png 2422 x 1023 66.4 KB
04.png 2373 x 887 54.9 KB
05.png 2314 x 827 49.8 KB
06.png 2302 x 678 45.7 KB
07.png 2480 x 1505 106 KB
08.png 2480 x 1410 86.4 KB
(84)
10.png 2313 x 1410 89.8 KB
11.png 2480 x 1534 98 KB
12.png 2480 x 1434 91.3 KB
13.png 2480 x 1059 69.8 KB
14.png 2480 x 1558 85 KB
15.png 2480 x 1048 58 KB
16.png 2480 x 715 39.9 KB
17.png 2480 x 607 36.2 KB
18.png 2480 x 1416 79.6 KB
19.png 2480 x 623 37.1 KB
20.png 2480 x 576 34.6 KB
21.png 2480 x 685 38.6 KB
22.png 2352 x 573 32.1 KB
23.png 2321 x 576 33.1 KB
24.png 2480 x 617 37.4 KB
25.png 2480 x 307 18.2 KB
26.png 2480 x 1315 74.4 KB
27.png 2480 x 738 41.1 KB
28.png 2480 x 1362 78.1 KB
29.png 2480 x 1416 84 KB
30.png 2480 x 637 35.7 KB
(85)
32.png 2480 x 1416 76.2 KB
33.png 2480 x 643 38.2 KB
34.png 2480 x 619 35.2 KB
35.png 2480 x 738 40.8 KB
36.png 2480 x 322 18.8 KB
37.png 2480 x 328 18.7 KB
38.png 2480 x 299 18.7 KB
39.png 2480 x 340 19.1 KB
40.png 2480 x 542 32.2 KB
41.png 2480 x 316 19.2 KB
42.png 2480 x 1035 63.6 KB
43.png 2480 x 340 18.4 KB
44.png 2480 x 578 32.3 KB
45.png 2480 x 1083 67 KB
46.png 2480 x 593 37.1 KB
47.png 2480 x 931 54.1 KB
48.png 2480 x 613 34 KB
49.png 2480 x 613 34.5 KB
(86)
5.2. Code Pengujian Sistem
Untuk membantu dalam melakukan pengujian precision-recall, maka digunakan sebuah program sederhana sebagai berikut :
(87)
5.3. Hasil Pengujian
Hasil pengujia
5.3.1. Hasil Seg
Pada baris-ba
an Sistem
jian sistem dijelaskan dengan tahapan sebagai beri
egmentasi Horizontal
ada proses pertama yaitu segmentasi horizontal d baris (staves) partitur. Contoh pada file 17.png
Gambar 5.1. Partitur file 17.png
erikut :
(88)
Has Gambar Sete segmen didapatk Ga Ga Sete segmen didapatk
asil proyeksi horizontal gambar adalah sebagai be
ar 5.2.Hasil proyeksi horizontal file 17.png
etelah dilakukan proyeksi horizontal, akan entasi berdasarkan hasil proyeksi horizontal.
atkan baris-baris (staves).
Gambar 5.3.Hasil segmentasi baris I
Gambar 5.4.Hasil segmentasi baris II
etelah dilakukan proyeksi horizontal, akan entasi berdasarkan hasil proyeksi horizontal.
atkan baris-baris (staves) pada partitur tersebut.
berikut :
n dilakukan l. Sehingga
n dilakukan l. Sehingga
(89)
5.3.2. Hasil Segmentasi Vertikal
Pada proses kedua yaitu segmentasi vertikal didapatkan bagian-bagian (staves) partitur. Sebagai contoh pada baris II file 17.png pada Gambar 5.4. baris tersebut diproyeksikan secara vertikal setelah sebelumnya dihilangkan garis-garisnya terlebih dahulu, sehingga didapatkan histogram proyeksi vertikal.
Gambar 5.5.Hasil proyeksi vertikal baris I file 17.png
Setelah dilakukan proyeksi vertikal, akan dilakukan segmentasi berdasarkan hasil proyeksi vertikal. Sehingga didapatkan bagian-bagian not balok. Karena baris ini merupakan baris terakhir maka akan dikenai proses penghapusan bagian pertama dan 2 bagian terakhir sehingga didapatkan bagian-bagian not balok yang telah dihilangkan beberapa bagian.
…
(90)
5.3.3. Hasil Pengenalan :
Proses berikut setelah segmentasi vertikal, adalah proses pengenalan untuk menjadi nada, nilai, dan jenis. Nada, nilai dan jenis akan dikonversikan sesuai dengan format (dijelaskan pada subbab 3.4). Sebagai contoh hasil pengenalan yang dikenali sistem pada file 17.png adalah sebagai berikut :
5.3.4. Hasil Pengujian :
Hasil pengujian hasil pengenalan sistem dengan jawaban yang dibuat, disajikan dalam tabel dibawah ini untuk masing-masing file.
Tabel 5.2.Tabel hasil pengujian semua file pengujian
Nama File Jumlah split hasil sistem Jumlah split hasil manual Total jawaban yang benar
Precision Recall
01.png 25 25 25 100 100
02.png 42 42 42 100 100
jeda e/0/0.0625
g/0/0.25 g/0/0.25 g/0/0.375 e/0/0.0625
f/0/0.125 g/0/0.0625 f/0/0.0625 e/0/0.125 d/0/0.5
d/0/0.125 d/0/0.0625 d/0/0.0625 e/0/0.125 f/0/0.375 f/0/0.0625 a/0/0.125 a/0/0.0625 g/0/0.0625 f/0/0.125 e/0/0.25 jeda
g/0/0.0625
c/1/0.25 g/0/0.25 c/1/0.375 g/0/0.0625
(91)
03.png 41 41 41 100 100
04.png 26 26 26 100 100
05.png 26 26 26 100 100
06.png 28 28 28 100 100
07.png 78 78 78 100 100
08.png 28 28 28 100 100
09.png 49 50 50 98 98
10.png 52 52 52 100 100
11.png 50 50 50 100 100
12.png 42 43 43 97.67442 97.67442
13.png 35 35 35 100 100
14.png 47 53 53 88.67925 88.67925
15.png 31 45 45 68.88889 68.88889
16.png 28 28 28 100 100
17.png 20 33 33 60.60606 60.60606
18.png 59 59 59 100 100
19.png 29 38 38 76.31579 76.31579
20.png 33 35 35 94.28571 94.28571
21.png 23 24 24 95.83333 95.83333
22.png 18 21 21 85.71429 85.71429
23.png 23 29 29 79.31035 79.31035
(92)
25.png 14 16 16 87.5 87.5
26.png 51 55 55 92.72727 92.72727
27.png 24 25 25 96 96
28.png 44 50 50 88 88
29.png 42 63 63 66.66667 66.66667
30.png 24 25 25 96 96
31.png 70 74 74 94.59459 94.59459
32.png 29 33 33 87.87878 87.87878
33.png 29 34 34 85.29411 85.29411
34.png 23 24 24 95.83333 95.83333
35.png 27 27 27 100 100
36.png 13 15 15 86.66666 86.66666
37.png 14 14 14 100 100
38.png 13 18 18 72.22222 72.22222
39.png 12 14 14 85.71429 85.71429
40.png 27 27 27 100 100
41.png 13 18 18 72.22222 72.22222
42.png 40 48 48 83.33333 83.33333
43.png 11 11 11 100 100
44.png 13 23 23 56.52174 56.52174
45.png 50 59 59 84.74577 84.74577
(93)
47.png 31 33 33 93.93939 93.93939
48.png 21 22 22 95.45454 95.45454
49.png 23 23 23 100 100
50.png 46 46 46 100 100
Hasil pengujian semua file citra partitur dicari rata-ratanya. Hasil pengujian rata-rata disajikan sebagai berikut.
Tabel 5.3.Rata-rata hasil pengujian
Precision Recall
Rata-rata 90.233 % 90.233 %
Pada pengujian terdapat beberapa error dalam pengenalan. Error yang terjadi adalah sebagai berikut.
Tabel 5.4.Error hasil uji
File Bagian ke-
Dikenali
sebagai
Jawaban
09.png 29 jeda c/1/1.0
12.png 22 jeda e/1/1.0
14.png 1 f/0/0.0625 f/0/0.125
14.png 3 a/0/0.0625 a/0/0.125
(94)
14.png 30 f/0/0.0625 f/0/0.125
14.png 45 d/0/0.0625 d/0/0.125
14.png 47 f/0/0.0625 f/0/0.125
15.png 3 g/0/0.0625 g/0/0.125
15.png 4 g/0/0.0625 g/0/0.125
15.png 7 e/0/0.0625 e/0/0.125
15.png 9 g/0/0.0625 g/0/0.125
15.png 10 g/0/0.0625 g/0/0.125
15.png 14 g/0/0.0625 g/0/0.125
15.png 20 g/0/0.0625 g/0/0.125
15.png 21 g/0/0.0625 g/0/0.125
15.png 24 d/0/0.0625 d/0/0.125
15.png 27 f/0/0.0625 f/0/0.125
15.png 28 f/0/0.0625 f/0/0.125
15.png 34 f/0/0.0625 f/0/0.125
15.png 35 f/0/0.0625 f/0/0.125
15.png 42 a/0/0.0625 a/0/0.125
17.png 2 e/0/0.0625 e/0/0.125
17.png 6 e/0/0.0625 e/0/0.125
17.png 8 g/0/0.0625 g/0/0.125
17.png 9 f/0/0.0625 f/0/0.125
(95)
17.png 14 d/0/0.0625 d/0/0.125
17.png 17 f/0/0.0625 f/0/0.125
17.png 19 a/0/0.0625 a/0/0.125
17.png 20 g/0/0.0625 g/0/0.125
17.png 24 g/0/0.0625 g/0/0.125
17.png 28 g/0/0.0625 g/0/0.125
17.png 30 b/0/0.0625 b/0/0.125
17.png 31 a/0/0.0625 a/0/0.125
19.png 2 c/0/0.03125 c/0/0.0625
19.png 4 c/0/0.0625 c/0/0.125
19.png 10 f/0/0.0625 f/0/0.125
19.png 13 e/0/0.0625 e/0/0.125
19.png 16 e/0/0.0625 e/0/0.125
19.png 20 c/0/0.0625 c/0/0.125
19.png 23 c/0/0.0625 c/0/0.125
19.png 29 f/0/0.0625 f/0/0.125
19.png 35 e/0/0.0625 e/0/0.125
20.png 1 g/0/0.0625 g/0/0.125
20.png 11 e/0/0.0625 e/0/0.125
21.png 21 c/0/0.0625 c/0/0.125
22.png 5 g/0/0.0625 g/0/0.125
(96)
22.png 19 d/0/0.0625 d/0/0.125
23.png 1 g/0/0.0625 g/0/0.125
23.png 12 g/0/0.0625 g/0/0.125
23.png 17 c/0/0.0625 c/0/0.125
23.png 21 d/0/0.0625 d/0/0.125
23.png 26 c/0/0.0625 c/0/0.125
23.png 27 d/0/0.0625 d/0/0.125
24.png 1 c/0/0.0625 c/0/0.125
24.png 3 e/0/0.0625 e/0/0.125
24.png 4 d/0/0.0625 d/0/0.125
24.png 5 c/0/0.0625 c/0/0.125
24.png 6 a/-1/0.0625 a/-1/0.125
24.png 9 g/0/0.0625 g/0/0.125
24.png 13 g/0/0.0625 g/0/0.125
24.png 14 e/0/0.0625 e/0/0.125
24.png 21 e/0/0.0625 e/0/0.125
24.png 23 d/0/0.0625 d/0/0.125
24.png 26 c/0/0.0625 c/0/0.125
24.png 28 e/0/0.0625 e/0/0.125
24.png 30 c/0/0.0625 c/0/0.125
24.png 31 a/-1/0.0625 a/-1/0.125
(97)
25.png 6 e/0/0.0625 e/0/0.125
26.png 35 g/0/0.0625 g/0/0.125
26.png 41 c/0/0.0625 c/0/0.125
26.png 46 g/0/0.0625 g/0/0.125
26.png 54 d/0/0.0625 d/0/0.125
27.png 1 e/0/0.0625 e/0/0.125
28.png 3 f/0/0.0625 f/0/0.125
28.png 4 g/0/0.0625 g/0/0.125
28.png 15 g/0/0.0625 g/0/0.125
28.png 16 a/0/0.0625 a/0/0.125
28.png 28 f/0/0.0625 f/0/0.125
28.png 29 g/0/0.0625 g/0/0.125
29.png 2 d/0/0.0625 d/0/0.125
29.png 4 c/0/0.0625 c/0/0.125
29.png 10 e/0/0.0625 e/0/0.125
29.png 12 f/0/0.0625 f/0/0.125
29.png 13 e/0/0.0625 e/0/0.125
29.png 18 f/0/0.0625 f/0/0.125
29.png 20 e/0/0.0625 e/0/0.125
29.png 26 g/0/0.0625 g/0/0.125
29.png 28 a/0/0.0625 a/0/0.125
(98)
29.png 34 c/0/0.0625 c/0/0.125
29.png 35 d/0/0.0625 d/0/0.125
29.png 36 e/0/0.0625 e/0/0.125
29.png 37 f/0/0.0625 f/0/0.125
29.png 42 d/0/0.0625 d/0/0.125
29.png 44 f/0/0.0625 f/0/0.125
29.png 45 g/0/0.0625 g/0/0.125
29.png 50 e/0/0.0625 e/0/0.125
29.png 51 f/0/0.0625 f/0/0.125
29.png 52 g/0/0.0625 g/0/0.125
29.png 53 a/0/0.0625 a/0/0.125
30.png 25 Jeda c/1/1.0
31.png 5 c/0/0.0625 c/0/0.125
31.png 20 g/0/0.0625 g/0/0.125
31.png 24 a/0/0.0625 a/0/0.125
31.png 35 c/0/0.0625 c/0/0.125
32.png 2 c/0/0.0625 c/0/0.125
32.png 12 g/0/0.0625 g/0/0.125
32.png 15 g/0/0.0625 g/0/0.125
32.png 16 f/0/0.0625 f/0/0.125
33.png 4 e/0/0.0625 e/0/0.125
(99)
33.png 21 f/0/0.0625 f/0/0.125 33.png 31 g/-1/0.0625 g/-1/0.125 33.png 32 a/-1/0.0625 a/-1/0.125
34.png 24 jeda c/1/1.0
36.png 5 a/0/0.0625 a/0/0.125
36.png 7 a/0/0.0625 a/0/0.125
38.png 8 b/0/0.0625 b/0/0.125
38.png 11 g/0/0.0625 g/0/0.125
38.png 12 g/0/0.0625 g/0/0.125
38.png 15 f/0/0.0625 f/0/0.125
38.png 16 e/0/0.0625 e/0/0.125
39.png 5 e/0/0.0625 e/0/0.125
39.png 7 e/0/0.0625 e/0/0.125
41.png 4 e/0/0.0625 e/0/0.125
41.png 13 a/0/0.0625 a/0/0.125
41.png 14 g/0/0.0625 g/0/0.125
41.png 15 f/0/0.0625 f/0/0.125
41.png 16 e/0/0.0625 e/0/0.125
42.png 2 d/0/0.0625 d/0/0.125
42.png 8 a/0/0.0625 a/0/0.125
42.png 14 g/0/0.0625 g/0/0.125
(100)
42.png 26 d/0/0.0625 d/0/0.125
42.png 32 a/0/0.0625 a/0/0.125
42.png 38 g/0/0.0625 g/0/0.125
42.png 44 d/0/0.0625 d/0/0.125
44.png 1 c/0/0.0625 c/0/0.125
44.png 2 c/0/0.0625 c/0/0.125
44.png 3 c/0/0.0625 c/0/0.125
44.png 9 c/0/0.0625 c/0/0.125
44.png 10 d/0/0.0625 d/0/0.125
44.png 14 e/0/0.0625 e/0/0.125
44.png 15 e/0/0.0625 e/0/0.125
44.png 19 d/0/0.0625 d/0/0.125
44.png 20 d/0/0.0625 d/0/0.125
44.png 21 e/0/0.0625 e/0/0.125
45.png 6 g/0/0.0625 g/0/0.125
45.png 10 f/0/0.0625 f/0/0.125
45.png 14 g/0/0.0625 g/0/0.125
45.png 22 g/0/0.0625 g/0/0.125
45.png 33 g/0/0.0625 g/0/0.125
45.png 37 f/0/0.0625 f/0/0.125
45.png 41 d/0/0.0625 d/0/0.125
(1)
85
Bab VI
Kesimpulan dan Saran
6.1. Kesimpulan
Dari hasil penelitian ini, dengan menggunakan metode proyeksi untuk melakukan segmentasi, dan operasi konvolusi dan penelusuran pixel, maka dapat ditarik kesimpulan sebagai berikut :
1. Penelitian ini menghasilkan presentase keberhasilan dalam membaca partitur not balok adalah sebesar 90.23 %. Dengan presentase maximum sebesar 100% dan presentase minimum adalah 56.53%. Rata-rata prosentase cukup besar, sehingga cara kerja yang dirancang dapat dinyatakan cukup baik.
2. Penelitian ini memberikan gambaran cara kerja dalam membaca paritur not balok untuk dikonversi menjadi suara, cara kerja yang ditawarkan adalah sebagai berikut.
a. Pertama lakukan segmentasi dengan proyeksi vertikal-horizontal untuk mendapatkan bagian-bagian (nada, garis birama, dll).
b. Untuk mengenali bagian-bagian tersebut dilakukan proses pendeteksian garis lurus dengan menggunakan operasi konvolusi.
c. Untuk menentukan nada dilakukan penelusuran titik pada garis lurus yang berhasil dideteksi
(2)
d. Penentuan nilai yang juga melakukan penelusuran titik pada +1 maupun -1 dari posisi garis lurus tersebut untuk mendapatkan kelompok-kelompok pixel yang akan dihitung berapa nilainya. Untuk
keterangan secara menyeluruh dapat dilihat pada bab 3.
6.2. Saran
Saran yang diberikan untuk penelitian lebih lanjut atau penelitian berikutnya dalam mengenali not balok adalah sebagai berikut :
1. Metode preprocessing yang digunakan untuk membuat data scan partitur menjadi sesuai dengan yang dikeluarkan oleh Encore. Hal ini agar siapa pun yang memiliki gambar partitur berupa digital maupun cetak.
2. Karena dalam menghitung bendera kurang tepat dengan menggunakan penyusuran pixel, diperlukan metode lain untuk menghitung jumlah bendera.
3. Menentukan acord dengan menggunakan pengenalan pola, sesuai dengan nada yang dihasilkan.
4. Metode yang dapat membaca nilai tanda diam, metode yang dapat menentukan tanda-tanda baca seperti kres dan mol
5. Metode yang dapat membedakan kunci yang digunakan pada not balok tersebut.
(3)
DAFTAR PUSTAKA
Angela, Maria. 2006. Identification of Musical Notes in Sheet Music Images Using Colors. ICS 2006 University of the Philippines Los Ba nos.
Burger, Wilhelm & Burge, Mark J.. 2008. Digital Image Processing an Algorithmic Introduction Using Java. New-York : Springer-Verlag.
Guyon, Isabelle, Gunn, Steve & Nikravesh, Massoud & Zadeh, Lotfi A.. 2006. Feature Extraction Foundation and Application. Heidelberg : Springer-Verlag.
Putra, Darma. 2010. Pengolahan Citra Digital. Yogyakarta : ANDI.
Soriano. 2010. Playing Notes by Image Processing.
Sukohardi, Al.. 2009. TEORI MUSIK UMUM. Yogyakarta : PUSAT MUSIK LITURGI.
Theodoridis, Sergios & Koutroumbas, Konstantinos. (2009). Pattern Recognition 4th Edition. Oxford : Elsevier Inc.
(4)
Dengan ini saya penelitian kali ini yaitu lainnya disertakan dala jawabannya pada folder
LAMPIRAN
aya lampirkan contoh gambar partitur yang diguna tu gambar dengan nama file “01.png”. Untuk par alam CD pada folder “Partitur”, demikian pu er “Jawaban Partitur”.
nakan dalam partitur yang pula dengan
(5)
vii
Abstrak
Penelitian ini memiliki fokus penelitian pada citra not balok. Cara kerja yang ditawarkan adalah melakukan segmentasi dengan proyeksi vertikal-horizontal pada citra partitur. Lalu kemudian dikenai operasi konvolusi untuk mendapatkan garis yang diidentifikasi sebagai tangkai. Setelah itu dilakukan pengenalan dengan menggunakan penyusuran pixel untuk menangkap bagian-bagian lain dalam not balok tersebut. Penelitian ini menggunakan 50 partitur yang dibuat dengan menggunakan Encore.
Hasil yang dihasilkan dari penelitian kali ini adalah sebesar 90.233% dalam proses pengenalan baik dengan menggunakan precision-recall. Hasil juga memiliki nilai max sebesar 100 % dan nilai presentase min adalah sebesar 56.53 %.
Saran untuk penelitian berikutnya terutama untuk yang memiliki topik pemrosesan citra pada not balok adalah menemukan metode preprocessing yang tepat agar gambar partitur berupa digital maupun cetak dapat diproses. Selain itu metode yang dapat membaca nilai tanda diam, dan metode yang dapat membaca tanda-tanda baca seperti kres dan mol
(6)
viii
Abstract
This research have a focus on the image of musical notes. Manner of works that offered is performing segmentation with vertical-horizontal projection on the image of scores, then is operation convolution to get a line which was identified as a stalk. The recognition by using of pixel tracing to get other part of the musical notes. This research uses 50 scores created using Encore.
The result of this research is 90.233% for recognition process using precision-recall. The result also have max value to 100% and min value to 56.53%
Suggestion for next research especially for topic of image processing of musical notes is to found the right preprocessing method to make a image of scores in digital or printed can be processed. In additional the method that can read the signs reading, like sharps and mol.