KLASIFIKASI TUMOR OTAK CT SCAN DENGAN ZONING MENGGUNAKAN LEARNING VECTOR QUANTIZATION
TESIS
OLEH
FITRIA PRIYULIDA NIM 167034005
FAKULTAS TEKNIK
UNIVERSITAS SUMATERA UTARA MEDAN
2018
KLASIFIKASI TUMOR OTAK CT SCAN DENGAN ZONING MENGGUNAKAN LEARNING VECTOR QUANTIZATION
TESIS
Untuk Memperoleh Gelar Magister Teknik Dalam Program Studi Magister Teknik Elektro Pada Fakultas Teknik Universitas Sumatera Utara
OLEH :
FITRIA PRIYULIDA 167034005
FAKULTAS TEKNIK
UNIVERSITAS SUMATERA UTARA MEDAN
2018
Telah diuji pada
Tanggal : 23 Agustus 2018
PANITIA PENGUJI TESIS
Ketua : Dr.Ir. Fahmi, M.Sc.IPM
Anggota : 1. Suherman, ST.M.Comp. Ph.D
2. Emerson P Sinulingga, ST.M.Sc. Ph.D
3. Dr. Ali Hanafiah Rambe, ST.MT
ABSTRAK
Klasifikasi tumor otak memiliki peranan penting pada bidang aplikasi biomedik dalam hal diagnosa rekam gambar medik. Pentingnya mengidentifikasi tumor otak telah meningkat beberapa tahun belakangan ini. Hal ini dilihat dari banyaknya aplikasi yang dapat melakukan pemrosesan hasil citra medis dari peralatan medis seperti neural networks dan artificial intelligence meskipun sudah demikian berbagai inovasi dan pengembangan pada tumor otak CT Scan masih terus dilakukan dengan berbagai metode. penelitian ini membahas tentang klasifikasi tumor otak CT Scan dengan mengkombinasikan Zoning dengan Learning Vector Quantization (LVQ).
Hasil matriks dari Zoning digunakan sebagai input pada metode Learning Vector Quantization (LVQ). Hasil penelitian dengan pengujian LVQ pada 10 otak normal dan 10 otak suspected memberikan tingkat keberhasilan 90% dan untuk otak normal diperoleh tingkat keberhasilan sebesar 80%.
Kata kunci : Otak normal, Suspected, Zoning, Learning Vector Quantization.
ABSTRACT
Image classification is increasingly important in medical field to diagnose recorded images. Brain tumour identification has been increasingly important area, mainly by using CT scan. Neural network and artificial intelligence methods dominate the processing algorithms; however, new methods are expected to emerge. This paper discusses brain tumour image classification by zoning combination using learning vector quantization (LVQ). The matrix results of the zoning are used as the LVQ inputs. As results from the assessment of the twenty normal and abnormal brain images, identification has been successfully carried out by 80% and 90%
subsequently for suspected and normal brain.
Keywords : Normal Brain, Suspected, Zoning, Learning Vector Quantization.
KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan yang Maha Kuasa karena atas berkat dan rahmat-Nya, sehingga penulis diberikan kemampuan untuk dapat menyelesaikan Tesis yang berjudul “Klasifikasi Tumor Otak CT Scan Dengan
Zoning Menggunakan Learning Vector Quantization”.Tesis ini merupakan salah satu syarat untuk memperoleh gelar magister pada Program Studi Magister Magister Teknik Elektro, Fakultas Teknik, Universitas Sumatera Utara. Penulis menyampaikan rasa bangga dan terimakasih sebesar- besarnya kepada orangtua saya, Ibunda Puspita Rahayu dan Ayahanda Yatiman, yang menyayangi saya, telah membesarkan, mendidik dan mendoakan saya. Dan juga rasa sayang kepada kakak dan adik saya.
Dalam kesempatan ini juga, saya mengucapakan terima kasih banyak kepada:
1. Bapak Prof. Dr Runtung Sitepu,SH., M.Hum., selaku Rektor Universitas Sumatera Utara Medan, yang telah memberikan kesempatan dan fasilitas kepada penulis untuk mengikuti dan menyelesaikan program studi Magister Teknik Elektro pada Fakultas Teknik Universitas Sumatera Utara Medan.
2. Ibu Seri Maulina,M.Si.Ph.D, selaku dekan Fakultas Teknik Elektro,
Universitas Sumatera Utara Medan, yang telah memberikan kesempatan dan
fasilitas kepada penulis untuk mengikuti dan menyelesaikan program studi
Magister Teknik Elektro pada Fakultas Teknik Universitas Sumatera Utara
Medan.
3. Bapak Suherman, Ph.D, selaku ketua Program Studi Magister Teknik Elektro, Fakultas Teknik, Universitas Sumatera Utara, yang telah memberikan arahan dan bantuan bagi penulis untuk menyelesaikan Magister Teknik Elektro pada Fakultas Teknik Universitas Sumatera Utara Medan.
4. Bapak Dr.Fahmi,ST.,MSc.,Ph.D, selaku dosen pembimbing I dan Bapak Suherman, Ph.D, sebagai pembimbing II, Bapak Emerson P.Sinulingga, ST.M.Sc.Ph.D, Bapak
Dr. Ali Hanafiah R, ST.MT,sebagai Komisi Pembanding yang meluangkan waktunya untuk berdiskusi, memberikan masukan, bimbingan dan motivasi selama penulisan Tesis ini.
5. Seluruh mahasiswa, dosen, dan civitas akademika Program Studi Magister Teknik Elektro, Fakultas Teknik, Universitas Sumatera Utara.
Dengan Keterbatasan Pengalaman penulis menyadari bahwa Tesis ini jauh dari sempurna baik dari segi materi maupun cara penyajiannya. Oleh karena itu, penulis siap menerima saran dan kritik dari pembaca untuk menyempurnakan Tesis ini.
Medan, 06 Agustus 2018
Penulis
DAFTAR RIWAYAT HIDUP
Saya yang bertanda tangan dibawah ini,
Nama : Fitria Priyulida
Tempat/Tanggal Lahir : PS. Langkat/27 April 1992 Jenis Kelamin : Perempuan
Agama : Islam
Bangsa : Indonesia
Alamat : PS. Langkat AFD 3 Desa Banjar Jaya Kecamatan PD.Tualang Kabupaten Langkat – Sumatera Utara
Menerangkan dengan sesungguhnya riwayat hidup sebagai berikut:
PENDIDIKAN:
1. Tamatan SD Negeri No. 054903 Kebun Balok, Langkat Tahun 2004
2. Tamatan SMP Swasta Tenera, Langkat Tahun 2007
3. Tamatan SMA Swasta Persiapan 2 PD. Tualang, Langkat Tahun 2010 4. Tamatan Pendidikan Teknik Elektro Universitas Negeri Medan Tahun 2014
PEKERJAAN:
Dosen Teknik Elektromedik Universitas Sari Mutiara Indonesia Medan.
Medan, 23 Agustus 2018 Penulis,
Fitria Priyulida
DAFTAR ISI
ABSTRAK ... i
ABSTRAC ... ii
KATA PENGANTAR ... iii
DAFTAR RIWAYAT HIDUP ... v
DAFTAR ISI ... vi
DAFTAR GAMBAR ... viii
DAFTAR TABEL... ix
BAB 1 PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Rumusan Masalah ... 3
1.3. Batasan Masalah ... 3
1.4. Tujuan Penelitian ... 4
1.5. Manfaat penelitian ... 4
BAB 2 TINJAUAN PUSTAKA ... 5
2.1. Tumor Otak ... 5
2.2. Computed Tomography ... 5
2.3. Definisi Pengolahan Citra ... 7
2.4. Pembentukan Matriks Biner (Binarization) ... 8
2.5. Ekstraksi Fitur (Feature Extraction)... 8
2.6. Metode Zoning ... 9
2.7. Pengertian LVQ (Learning Vektor Quantitation) ... 10
2.8. Training Dan Testing ... 12
BAB 3 METODOLOGI PENELITIAN ... 14
3.1. Tahapan Pelaksanaan Penelitian ... 14
3.2. Input Citra Otak ... 15
3.3. Preprocessing ... 15
3.4. Feature Extraction (Ekstraksi Ciri)... 16
3.5. Klasifikasi... 18
3.6. Proses Pelatihan... 19
3.7. Pengujian Sistem Dan Analisis ROC ... 19
BAB 4 HASIL DAN PEMBAHASAN ... 21
4.1. Persiapan Citra ... 21
4.2. Spesifkasi Pesawat CT-Scan yang digunakan ... 21
4.3. Proprocessing... 21
4.4. Proses Pelatihan... 22
4.5. Proses Pengujian Citra ... 22
4.6. Hasil Klasifikasi Menggunakan Metode Zoning Dengan Metode LVQ ... 29
BAB 5 PENUTUP ... 30
5.1. Kesimpulan... 30
5.2. Saran ... 30
DAFTAR PUSTAKA ... 31
LAMPIRAN
DAFTAR GAMBAR
Nomor Judul Halaman
2.1. Tumor Otak CT Scan ... 6
2.2. Otak Normal CT Scan ... 6
2.3. Proses Zoning ... 9
2.4. Arsitektur Jaringan LVQ ... 10
3.1. Diagram Tahapan Penelitian ... 14
3.2. Gambar Citra Binerisasi ... 15
3.3. Diagram Ekstraksi Fitur... 16
3.4. Hasil Zoning Citra ... 17
3.5. Nilai ekstraksi fitur dengan zoning ... 18
4.1. Proses Pembentukan Citra Biner ... 22
4.2. Proses Pelatihan Citra Otak ... 23
4.3. Proses Pengujian Citra Otak ... 27
DAFTAR TABEL
Nomor Judul Halaman
3.1. Tabel Kontigensi... 20
4.1. Data Latih ... 23
4.2. Hasil Pengujian Citra ... 28
4.3. Tabel Kontingensi Metode LVQ ... 29
BAB 1 PENDAHULUAN 1.1. Latar Belakang
Perkembangan sistem teknologi pada dunia medis sekarang semakin berkembang pesat. Hal ini dilihat dari banyaknya aplikasi yang dapat melakukan pemrosesan hasil citra medis dari peralatan medis seperti Computed Temography (CT), Magnetic Resonance Imaging (MRI), Positron Emission Temography (PET) dan sistem x-ray [1]. Pada dunia medis CT scan selalu digunakan untuk mendukung diagnosis suatu penyakit yang dapat menampilkan jaringan tubuh tanpa harus melalui proses pembedahan.
Klasifikasi tumor otak memiliki peranan penting pada bidang aplikasi biomedik dalam hal diagnosa rekam gambar medik. Pentingnya mengidentifikasi tumor otak telah meningkat beberapa tahun blakangan ini. Terlihat dengan meningkatnya bidang analisa seperti neural networks dan artificial intelligence dengan menggunakan berbagai metode. Klasifikasi tumor otak dikembangkan untuk membantu tenaga medis dalam mendiagnosa penyakit. Dalam klasifikasi terdapat beberapa proses yang perlu dilakukan, yakni preprocessing, feature extraction, dan classification. Preprocessing merupakan bagian untuk memproses citra sebelum dilakukan ekstraksi fitur untuk menentukan sebuah area ataupun objek. Proses ini terdiri dari penyaringan, normalisasi dan identifikasi objek sebelum tahap ekstraksi.
feature extraction merupakan sebuah tahapan untuk mengambil nilai inti (fitur) pada
citra CT-Scan untuk mendapatkan obyek yang akan dikenali atau dibedakan dengan
obyek lainnya [2]. Adapun beberapa fitur ekstrasi diantaranya menggunakan Gray Level Co-Occurrence Matrix (GLCM) dengan ukuran matrik 64 x 64 pixel[3], dengan Discrete Wavelet Transform menerapkan analisis komponen utama Principle Component Analysis (PCA) [4], Zoning [5].
Dari beberapa fitur ekstrasi untuk mengenali fitur diatas, penulis menggunakan ekstraksi ciri zoning. Metode ekstraksi ciri Zoning dikenal sebagai metode yang sangat sederhana, adapun kelebihan yang dimiliki zoning yaitu kompleksitasnya rendah dan memiliki perhitungan yang cepat dalam mengekstrak suatu karakter.
Klasifikasi merupakan proses untuk menentukan fungsi yang dapat membedakan konsep dengan tujuan untuk memperkirakan kelas yang tidak diketahui dari suatu objek [6]. Salah satu metode yang dapat digunakan dalam pengklasifikasian adalah Learning Vector Quantization (LVQ). LVQ merupakan sebuah metode klasifikasi yang dapat melakukan pelatihan pada lapisan-lapisan yang terawasi versi dari model kohonen yang memiliki algoritma pembelajaran yang sederhana yang terdiri dari satu lapisan input dan output [7].
Berikut beberapa penelitian yang pernah dilakukan sebelumnya yang
membahas tentang tumor otak diantaranya, Klasifikasi Berbasis Jaringan Lunak di
Otak CT Scan Berbasis Wavelet Dominant Gray level Run Length Fitur Tekstur
Dalam penelitian ini didapat akurasi otak normal dan otak teridentifkasi tumor
sebesar 98.00% [8]. Klasifikasi tumor otak berdasarkan Set Fitur Statistik
menggunakan Support Vector Machine dengan akurasi sebesar 68,1% [9].
Dari beberapa penelitian tersebut menjadi dasar bagi penulis untuk menggunakan ekstraksi ciri dengan metode zoning dan klasifikasi akan memanfaatkan teknik Learning Vector Quantization (LVQ). Untuk setiap data sampel yang telah melalui proses prapengolahan citra akan dilakukan ekstraksi fitur dan penentuan letak tumor.
1.2 Perumusan Masalah
Permasalahan dalam penelitian ini secara detail dirumuskan sebagai berikut:
a. Bagaimana menentukan letak tumor otak dengan zoning ?
b. Bagaimana tingkat akurasi mendeteksi daerah otak yang terdeteksi tumor dengan menggunakan zoning dan LVQ ?
c. Bagaimana hasil dari kombinasi antara zoning dan LVQ ? 1.3 Batasan Masalah
Dalam penelitian ini penulis melakukan beberapa batasan permasalahan, mengingat waktu dalam penelitian sangat singkat. Maka disini penulis membatasi antara lain :
a. Aplikasi yang dibuat tidak dapat mengklasifikasikan tumor jinak atau ganas b. Data yang digunakan adalah data yang tersimpan pada medical record RSUP
H.Adam Malik pada pasien berumur 40 sampai dengan 60 tahun dengan jenis
kelamin laki – laki 60% dan perempuan 40%.
1.4 Tujuan Penelitian
Tujuan yang ingin dicapai oleh peneliti adalah sebagai berikut :
a. Menghasilkan Computer Aided System sehingga mampu membantu tenaga radiologis untuk mengklasifikasikan jenis tumor otak yang diderita pasien secara cepat dan akurat.
b. Menghasilkan aplikasi yang dapat menentukan letak tumor otak dari citra CT Scan.
c. Mendapatkan hasil analisis dari rancangan sistem.
1.5 Manfaat Penelitian
Manfaat yang diperoleh dari penelitian ini adalah sebagai berikut :
a. Dapat membantu tenaga radiologis untuk diagnosis jenis tumor otak yang diderita pasien secara cepat dan akurat.
b. Menjadi salah satu referensi bagi peneliti yang fokus pada teknologi computer vision di bidang kedokteran.
BAB 2
TINJAUAN PUSTAKA
2.1. Tumor Otak
Tumor otak merupakan suatu masa yang tumbuh secara tidak terkendali dan bersifat menekan jaringan normal lainnya. Tumor otak dapat di Klasifikasi atas tumor otak jinak (benigna) dan tumor otak ganas (maligna). Secara klinis sukar membedakan antara tumor otak yang jinak atau yang ganas, karena gejala yang timbul ditentukan pula oleh lokasi tumor, kecepatan tumbuhnya dan efek masa tumor ke jaringan otak [10].
Diagnose awal dilakukan dengan memperoleh data riwayat kesehatan keluarga pasien dan pemeriksaan fisik. Setelah itu dilakukan pemeriksaan, neurologis untuk mengetahui status mental, memori, fungsi syaraf carnial, kekuatan otot dan respon terhadap rasa sakit. Langkah selanjutnya dilakukan pemeriksaan radiologis melalui CT-Scan ataupun MRI (Magnetic Resonance Imaging).
2.2. Computed Tomography
Computed Tomography (CT) Scan merupakan sebuah alat yang digunakan
untuk memeriksa pasien tanpa melakukan pembedahan langsung namun
menggunakan pancaran sinar-X dan computer untuk menghasilkan citra otak dalam
potongan aksial [11]. Jumlah potongan yang dihasil oleh CT-Scan ditentukan oleh
spesifikasi CT-Scan yang digunakan. untuk meningkatkan kualitas citra dalam
pemeriksaan radiologis pasien terkadang diinjeksi dengan zat kontras agar dapat meningkatkan kualitas citra dari organ yang diinginkan. Ukuran gambar yang terdapat pada CT-Scan berkisar antara skala -1024 Sampai +3071 pada skala housfield unit. Hounsfiled sendiri merupakan pengukuran densitas dari jaringan yang terdapat pada Gambar 2.1.
Gambar 2.1 Tumor Otak CT Scan [12].
Gambar 2.2 Otak Normal CT Scan
2.3. Definisi Pengolahan Citra
Pengolahan citra adalah sebuah proses untuk mengolah dan menganalisis citra sehingga menghasilkan citra sesuai dengan persepsi citra dan kebutuhan yang akan digunakan dengan menggunakan bantuan komputer. Citra dapat diartikan sebagai fungsi yang memiliki dua dimensi f(x,y), dimana x dan y adalah suatu kordinat dan f pada setiap titik (x,y) menyatakan intensitas, tingkat kecerahan dan derajat keabuan (grayscale) pada gambar.
Citra digital merupakan ilmu yang mempelajari tentang suatu matriks yang didalamnya terdapat elemen gambar yang dapat memberikan informasi dalam bentuk diskrit. Citra digital bersifat kontinu seperti pada x-ray dan monitor televisi. Dengan demikian perlu dilakukan proses konversi untuk mendapatkan informasi dari citra digital yang dibutuhkan. Untuk mendapatkan informasi fitur pada gambar dapat menggunakan berbagai aplikasi salah satunya computer vision yang telah dikembangkan dalam proses mengambil informasi gambar berupa fitur yang sudah diekstraksi secara otomatis dari gambar itu sendiri. Proses ini sering digunakan untuk menggabungkan beberapa teknologi seperti pengolahan citra dan sinyal, pengenalan pola dan multimedia, serta interaksi antara manusia dengan komputer. Proses ini sering disebut dengan istilah CBIR (Content-Based Image) dalam bidang pengolahan citra [13].
Beberapa tahapan yang terdapat dalam proses CBIR diantaranya:
1. Preprosesing bertujuan untuk menentukan sebuah objek yang akan
digunakan pada tahap ekstrasi.
2. Ekstraksi Fitur merupakan suatu proses untuk mendapatkan fitur baru berupa pola, bentuk, dan tekstur.
2.4. Pembentukan Matriks Biner (Binarization)
Pada tahap ini akan membentuk citra menjadi hitam putih dengan mengkonversi citra gray-level ke citra biner. Proses ini akan mengambil nilai rata-rata dari nilai setiap RGB, dimana jika nilai piksel yang dihasilkan lebih besar dari nilai threshold akan menghasilkan warna putih, dan jika nilai piksel yang dihasilkan kurang dari nilai threshold maka akan menghasilkan warna hitam [14].
Proses Thresholding digunakan untuk menentukan tingkat derajat keabuan pada citra dan menentukan nilai ambang batas. Proses untuk menentukan nilai ambang ini menggunakan Persamaan 2.1 sebagai berikut:
………...(2.1)
Keterangan :
T = Nilai threshold
fmaks = Nilai piksel maksimum fmin = Nilai piksel minimum
2.5 Ekstraksi Fitur (Feature Extraction)
Ekstraksi fitur merupakan proses untuk menentukan pola dengan
mendapatkan nilai pada karakter citra untuk membentuk nilai fitur. Pengklasifikasian
menggunakan nilai fitur untuk mengenali unit input dengan unit output sehingga dapat membedakan pengklasifikasian dengan mudah [15].
2.6 Metode Zoning
Metode zoning merupakan salah satu metode dari fitur ekstraksi yang dapat membagi karakter menjadi N x M zona dari setiap zona dilakukan perhitungan nilai fitur sehingga membentuk nilai fitur pada zona M x N. Dalam proses klasifikasi dan pengenalan metode zoning menghasilkan ekstraksi fitur yang baik dan efisien.
Zoning dapat digunakan untuk menghitung jumlah nilai pixel putih pada suatu zona tertentu nilai yang didapat dari proses zoning tersebut akan dijadikan nilai untuk input vektor. Hasil dari proses zoning adalah fitur vektor yang dapat dimasukkan ke tahap pengklasifikasian [16].
Gambar. 2.3 Proses Zoning
2.7. Pengertian LVQ (Learning Vektor Quantitation)
LVQ merupakan sebuah metode klasifikasi yang dapat melakukan pelatihan pada lapisan-lapisan yang terawasi pada lapisan kompetitif. Lapisan ini mampu melakukan klasifikasi secara otomatis terhadap vektor input yang diberikan.
Beberapa vektor input yang memiliki jarak bobot berdekatan maka bobot akan menghubungkan lapisan input dengan lapisan kompetitip. Lapisan kompetitif menghasilkan sebuah kelas yang dihubungkan pada lapisan output dengan fungsi aktivasi. Arsitektur dari jaringan LVQ dengan beberapa unit lapisan input dan unit pada lapisan output dapat dilihat pada Gambar 2.4 [17].
Gambar 2.4 Arsitektur Jaringan LVQ [17].
Keterangan :
W
1,Wn = Data nilai inisialisasi
||X-W1||, ||X-W2|| = Vektor bobot
N = Data input
X
1,X
2,X
3,…Xn = Nilai input
E
1,E
2= Lapisan output
D
1,D
2= Output
Pada Gambar 2.4 menjelaskan bahwa nilai X
1sampai X
2merupakan nilai inputan dimana nilai ini yang akan digunakan untuk proses training dan proses testing. Dengan (W
1dan W
2) sebagai vektor bobot yang dapat menghubungkan setiap lapisan input dengan lapisan output. W
1dan Wn digunakan untuk mendapatkan jarak bobot terkecil dari vektor bobot yang didapatkan dari perhitungan nilai input. Untuk E
1dan E
2sebagai lapisan output untuk mewakili dari beberapa kelas. sedangkan D
1dan D
2sebagai nilai output pada lapisan output yang akan dipergunakan untuk proses pengujian.
Beberapa kelebihan dari LVQ adalah:
1. Menghasilkan nilai erorr yang sangat kecil.
2. Pada tahap klasifikasi dapat meringkas data set yang besar menjadi vektor kecil.
3. Dapat melakukan pembaharuan secara bertahap terhadap model yang
dihasilkan.
Sedangkan untuk kekurangan LVQ adalah:
1. Untuk menentukan jarak pada semua atribut harus menggunakan perhitungan yang akurat
2. Perhitungan inisialisasi dan parameter sangat diperlukan dalam menentukan akurasi pada model LVQ
3. Sulitnya menentukan jumlah vektor pada masalah baru
Sebelum masuk kedalam proses klasifikasi menggunakan metode LVQ terlebih dahulu dilakukan proses training proses ini digunakan untuk mempermudah proses pencarian kelas sehingga dapat dilakukan pengenalan pola input berdasarkan output yang diperoleh. LVQ dapat melakukan pengenalan pola input jika jarak antara vektor bobot dengan vektor input berdekatan.
2.8.
Training Dan TestingPada LVQ terdapat dua tahapan pelatihan dan pengujian sebagai berikut algoritma pelatihan dan pengujian jaringan saraf tiruan LQV yang digunakan untuk proses pelatihan dan pengujian adalah sebagai berikut:
1) Menetapkan bobot awal dari nilai input X
1sampai Xn, menuju lapisan output yang mewakili seluruh kelas, maksimum epoch (MaxEpoch), Parameter learning rate (α), Pengurangan learning rate (Decα), error minimum (Eps).
2) Memasukkan : a. Data input : x(m,n)
b. Data target : T(1,n)
3) Menentukan nilai awal epoch = 0 ; Err = 1 4) Jalankan jika (epoch < MaxEpoch) dan (α > Eps)
a. Epoch = Epoch + 1
b. Masukkan untuk i = 1 sampai n
i. Tentukan J hingga ||X-Wj|| minimum
ii. Ulangi Wj dengan ketetapan pada persamaan berikut:
Jika T = Cj maka:
W
j= W
j+ α [X – W
j]……….(2.2) Jika T ≠ C
jmaka:
W
j= W
j– α [X – W
j]……….(2.3) T digunakan sebagai target pengenalan pada bobot Cj dengan jarak terkecil pada bobot ke j [18].
Keterangan:
T = Bobot input pembelajaran
X = Nilai input vektor latih (X
1,X
2,X
3,…Xn) Cj = Output j
||X – Wj|| = Jarak bobot antara vektor output dengan vektor input
Pada tahap pelatihan hasil perhitungan LVQ digunakan untuk mendapatkan
nilai bobot yang akan disimpan dan digunakan dalam tahap pengujian. Pada tahap
pengujian, data input baru diklasifikasikan dengan cara menjumlahkan nilai pada
setiap bobot input dan memilih jarak terdekat pada kedua bobot yang sudah
tersimpan. Nilai pada jarak bobot terdekat akan menggantikan kelas pada citra
masukan.
BAB 3
METODOLOGI PENELITIAN
3.1. Tahapan Pelaksanaan Penelitian
Pada bab ini akan membahas metode zoning dan learning vektor quantization (LVQ) dengan melalui beberapa tahap untuk membuat sistem yang dibangun.
Aplikasi ini akan menggunakan citra potongan axial sebagai masukan kemudian citra akan melalui tahap preprocessing, feature extraction, dan classification. Tahapan tersebut ditunjukan pada Gambar 3.1.
Gambar 3.1 Diagram Tahapan Penelitian Input Citra Otak
Preprocessing Ekstraksi Fitur
Zoning Klasifikasi
LVQ Hasil Klasifikasi Citra Otak CT Scan
Normal Suspected
Analisis Dokter Hasil Klasifikasi Citra Otak CT Scan
Normal Suspected
Selesai
iMulaii
3.2.
Input Citra OtakProses input citra dilakukan sebelum proses klasifikasi citra. Data citra yang digunakan pada penelitian ini adalah data citra otak potongan axial yang didapat dari RSUP H.Adam Malik. Citra yang digunakan berupa citra grayscale berukuran 512x512.
3.3. Preprocessing
Pada tahapan preprocessing dilakukan beberapa tahapan untuk menentukan proses selanjutnya, tahapan preprocessing terdiri dari proses grayscale dan binerization. Pada tahapan binerization citra diubah kedalam bentuk grayscale selanjutnya akan dilakukan thresholding dimana citra grayscale akan diubah ke dalam bentuk biner yang bernilai 1 dan 0 (Putih dan hitam). Dalam tahapan ini digunakan nilai ambang untuk menentukan nilai biner pada setiap citra. Jika nilai yang dihasilkan diatas nilai ambang maka nilai pixel diubah menjadi warna putih, jika nilai yang dihasilkan kurang dari ambang maka nilai pixel akan diubah menjadi warna hitam. Hal ini ditunjukkan oleh Gambar 3.2.
a. Citra Original Tumor Otak b. Citra Binerisasi Tumor Otak
Gambar 3.2 Gambar Citra Binerisasi
Citra dibagi menjadi 8 kolom dan 8 baris
Menghitung jumlah piksel putih setiap zona
Nilai fitur = nilai zona, rata-rata zona Mencari zona dengan piksel putih tertinggi
Nilai fitur tiap zona = jumlah piksel zona/jumlah piksel putih
3.4. Feature Extraction (Ekstraksi Ciri)Pada proses selanjutnya setelah melalui proses preprocessing maka dilakukan tahap ekstraksi ciri dengan menggunakan metode zoning untuk mendapatkan nilai fitur yang baik pada citra tumor otak. Selanjutnya nilai fitur yang didapatkan dari metode tersebut akan diklasifikasikan menggunakan metode LVQ (learning vektor quantization).
Zoning merupakan salah satu metode yang dapat membagi beberapa wilayah, dimana setiap wilayah akan menghasilkan nilai fitur dengan menghitung jumlah pixel putih tertinggi. Pada tahap ini citra yang berukuran 512 x 512 akan dibagi menjadi 8 kolom dan 8 baris sehingga mendapatkan 64 zona dan terdapat 64 nilai fitur didalamnya. Berikut proses dari fitur ekstraksi dapat dilihat pada Gambar 3.3, sementara pembagian zona dapat dilihat pada Gambar 3.4.
Gambar 3.3 Diagram Ekstraksi Fitur
8 kolom
Z1 Z2 Z3 Z4 Z5 Z6 Z7 Z8
Z9 Z10 Z11 Z12 Z13 Z14 Z15 Z16
Z17 Z18 Z19 Z20 Z21 Z22 Z23 Z24
Z25 Z26 Z27 Z28 Z29 Z30 Z31 Z32
Z33 Z34 Z35 Z36 Z37 Z38 Z39 Z40
Z41 Z42 Z43 Z44 Z45 Z46 Z47 Z48
Z49 Z50 Z51 Z52 Z53 Z54 Z55 Z56
Z57 Z58 Z59 Z60 Z61 Z62 Z63 Z64
Gambar 3.4 Hasil Zoning Citra
Langkah- Langkah dari metode zoning pada citra tumor otak CT Scan antara lain:
1. Menghitung jumlah pixel putih setiap zona dari Z1 sampai Z512.
2. Menentukan zona yang memiliki jumlah pixel putih paling tinggi.
3. Menghitung nilai fitur setiap zona dari Z1 sampai Z512.
Dengan menggunakan rumus :
Nilai Fitur Zn =
dimana 1 ≤ n ≤ 512
8 Baris
Nilai fitur ditentukan dengan perhitungan jumlah pixel putih dari satu zona dengan zona yang didapatkan dari proses no 2. berikut perhitungan metode zoning adalah :
1. Nilai pixel putih pada setiap zona Z4=40, Z12=30, Z40=70, Z53=50
2. Terdapat jumlah pixel putih paling tinggi pada zona Z40 = 70 3. Data fitur pada setiap zona diantaranya:
Z1 = 40/70 = 0.57 Z12 = 30/70 = 0.42 Z40 = 70/70 = 1 Z53 = 50/70 = 0.71 Z60 = 20/70 = 0.28
Untuk Proses ekstraksi fitur digunakan zoning yang menghasilkan 64 nilai fitur dimana nilai tersebut akan digunakan sebagai nilai input pada tahap selanjutnya yaitu proses klasifikasi menggunakan LVQ dan dapat dilihat pada Gambar 3.5.
1 0 1 1 0
Z1 Z12 Z40 Z53 Z60 64
Gambar 3.5 Data ekstraksi fitur dengan zoning 3.5. Klasifikasi
Klasifikasi merupakan proses untuk melatih dan menguji data fitur yang
didapatkan dengan proses ekstraksi fitur menggunakan metode zoning dan
diklasifikasikan dengan Learning Vektor Quantization (LVQ). Pada tahapan
klasifikasi terdapat dua proses yaitu proses training dan proses testing. Dimana
proses training digunakan untuk melatih memorisasi pada Learning Vector Quantization (LVQ) sedangkan Proses testing merupakan pengujian nilai fitur yang belum pernah dilatih.
3.6. Proses Pelatihan
Pada tahap pelatihan algoritma LVQ akan memproses nilai input dengan menerima vektor masukan sebanyak 64 fitur pada kelas fitur, selanjutnya vektor akan menghitung jarak semua vektor yang mewakili kelas.
3.7 Pengujian Sistem dan Analisis ROC
Proses pengujian menggunakan LVQ yang telah dilatih untuk mengenali data uji yang tidak pernah dilatih. Proses pengujian sama dengan proses pelatihan dimana klasifikasi menghitung nilai pada setiap bobot input dan memilih jarak terdekat antara kedua bobot. Ketika LVQ diuji dengan menggunakan data pelatihan, Pengujian dilakukan untuk melihat bagaimana pengembangan memorisasi pada LVQ setelah melalui proses training.
Hasil dari proses pengujian terhadap sample, akan disesuaikan pada tabel
kontingensi untuk mendapatkan sensitivity, specificity dan accuracy tabel kontingensi
dapat dilihat pada Tabel 3.1 . Peluang keberhasilan dari perhitungan memiliki empat
kemungkinan, berikut empat kemungkinan tersebut sebagai berikut:
1. Jika dokter mendiagnosa citra otak sebagi tumor dan citra otak tersebut diklasifikasikan postif teridentifikasi tumor maka dihitung true positive (TP).
2. Jika dokter mendiagnosa citra otak sebagai tumor dan citra otak tersebut diklasifikasikan negatif teridentifikasi tumor maka dihitung false negative (FN).
3. Jika dokter mendiagnosa otak normal dan citra otak tersebut diklasifikasikan negatif dihitung true negative (TN).
4. Jika dokter mendiagnosa citra otak normal dan citra otak tersebut diklasifikasikan positif tumor dihitung false positive (FP).
Tabel 3.1. Tabel Kontingensi
P N
Y TP (True Positive) FP (False Positive) N FN (False Negative) TN (True Negative)
Total P N
Dimana:
TPR =
= Recall ... (3.2)
FPR =
... (3.3)
Precision =
... (3.4)
Accuracy =
... (3.5)
Sensitivity
... (3.6)
BAB 4
HASIL DAN PEMBAHASAN
4.1. Persiapan Citra
Pada bab ini membahas tentang proses pengklasifikasian citra otak yang berjumlah 40 gambar. Pada proses training digunakan 10 otak yang teridentifikasi tumor dan 10 otak normal untuk proses latih terdiri dari 10 otak yang teridentifikasi tumor dan 10 normal. Data citra otak CT Scan didapatkan dari medical record RSUP H.Adam Malik pada pasien berumur 40 tahun sampai 60 tahun. Pada tahap ini, bertujuan untuk menampilkan hasil dari proses pengujian pada learning vektor quantization. Penulis membangun aplikasi ini menggunakan pemograman pada java.
4.2. Spesifikasi Pesawat CT-Scan Yang Digunakan
Adapun Spesifikasi pesawat CT-Scan yang digunakan ialah sebagai berikut:
- Merk : GE LightSpeed 16 Slice CT - Rotation : 0.5 Second
- Slice Thiknee : 5 mm - Kv : 120 Kv 4.3. Preprocessing
Proses awal yang dilakukan dalam klasifikasi tumor otak ini melalui tahapan
preprocessing dimana citra akan dikonversikan kedalam bentuk hitam putih sebelum
dilakukan proses binerisasi secara keseluruhan. Dalam penelitian ini menggunakan nilai threshold sebesar 128 penentuan nilai threshold ini digunakan untuk mendapatkan nilai keabuan pada citra tumor otak. Hasil dari proses tahapan ini dapat dilihat pada Gambar 4.1.
(a) Citra asli (b) Citra biner Gambar 4.1 Proses Pembentukan Citra Biner
Setelah citra biner didapatkan, tahap selanjutnya adalah ekstraksi fitur dengan menggunakan metode zoning. Selain untuk menentukan nilai fitur motode zoning ini juga digunakan untuk menentukan letak dari tumor. Untuk mendapatkan hasil dari nilai citra tumor otak CT scan maka dilakukan pembagian dari beberapa zona dengan ukuran yang sama. Tujuan dari tahapan ekstraksi fitur ini untuk menemukan kumpulan dari ciri-ciri yang terdapat pada karakter citra otak.
4.4. Proses Pelatihan
Proses pelatihan citra menggunakan data berupa 20 citra otak CT scan yang
terdiri dari 10 citra normal dan 10 citra suspected. Citra otak CT scan yang digunakan
berukuran 512 x 512 yang disimpan dalam hard disk lokal serta proses klasifikasi
menggunakan jaringan syaraf tiruan LVQ (Learning Vector Quantization). Pelatihan dapat dilihat pada Gambar 4.2 sedangkan data latih dari citra otak CT scan dapat dilihat pada Tabel 4.1.
Gambar 4.2 Proses pelatihan citra tumor otak Tabel 4.1. Data Latih
No Citra Otak Nilai Bobot
Jenis Otak 1
0.076161
Normal
2
2.304818
Normal
Tabel 4.1. Data Latih (Sambungan)
Citra Otak Nilai Bobot Jenis Otak
2.2668598
Normal
1.456988
Normal
2.9700592
Normal
1.6688762
Normal
1.6688761
Normal
2.9700592
Normal
Tabel 4.1. Data Latih (Sambungan)
Citra Otak Nilai Bobot Jenis Otak
2.769984
Normal
1.6688762
Normal
2.9779766
Suspected
2.9736168
Suspected
2.9230187
Suspected
Tabel 4.1. Data Latih (Sambungan)
Citra Otak Nilai Bobot Jenis Otak
2.800454
Suspected
3.2186778
Suspected
1.8768171
Suspected
2.3506687
Suspected
1.9752706
Suspected
3.0961044
Suspected
2.006145
Suspected
Dari Tabel.4.1, nilai bobot pada setiap data latih sudah dapat dilihat. Nilai bobot merupakan nilai akhir yang digunakan dalam proses pengujian dimana nilai bobot ini didapat dari proses perhitungan LVQ.
4.5. Proses Pengujian Citra
Pada tahap pengujian digunakan data input citra sebanyak 20 citra otak terdiri atas 10 citra otak normal dan 10 citra otak Suspected. Tampilan aplikasi dari klasifikasi tumor otak dengan zoning menggunakan learning vector quatization dapat dilihat pada Gambar 4.3, dan hasil pengujian dapat dilihat pada Tabel 4.2.
Gambar 4.3 Proses Pengujian Citra
Tabel 4.2 Hasil Pengujian Citra
No Nama Citra Bobot 1 Bobot 2 Inputan *
Hasil Pengujian
Keterangan Posisi
1 Data-5.png 3.489579 2.9736168 Suspected Suspected TP Kanan 2 Data-9.png 3.7573445 3.2186778 Suspected Suspected TP Kanan 3 Data-2.png 3.4895792 2.9779766 Suspected Suspected TP Kanan 4 Data-12.png 3.0037804 2.6869104 Normal Suspected FN Normal 5 Data-13.png 2.304818 2.9392818 Normal Normal TN Normal 7 Data-7.png 3.07729601 1.8768171 Suspected Suspected TP Kanan 9 Data-19.png 2.2668598 2.9678066 Normal Normal TN Normal 10 Data-11.png 2.305248 2.9393818 Normal Normal TN Normal 11 Data-13.png 2.304818 2.93938118 Normal Normal TN Normal 12 Data-8.png 3.4555268 2.9230187 Suspected Suspected TP Kiri 13 Data-18.png 2.9360542 2.8076556 Normal Suspected FN Normal 14 Data-4.png 3.5838966 2.800454 Suspected Suspected TP Kanan 15 Data-1.png 3.043977 2.006145 Suspected Suspected TP Kanan 16 Data-6.png 3.0350804 2.3506687 Suspected Suspected TP Kiri 17 Data-10.png 2.3829138 3.0961044 Suspected Normal FP Normal 18 Data-3.png 2.8869388 1.9752706 Suspected Suspected TP Kanan 19 Data-14.png 2.769984 2.9166098 Normal Normal TN Normal 20 Data-15.png 2.2493293 2.9494078 Normal Normal TN Normal
*Catatan : Dari Tabel 4.3, data input dapat dilihat pada lampiran 1. Inputan
merupakan data yang dipakai pada saat proses pengujian maupun
pelatihan, inputan ini didapat dari hasil diagnosa dokter. Inputan yang ada
pada data penelitian ini adalah suspected dan normal. dimana suspected
menunjukkan kondisi citra otak untuk kategori teridentifikasi tumor otak
dan normal menunjukkan citra untuk kategori tidak terdeteksi tumor.
Dari Tabel 4.3, nilai inputan pada data-12 menunjukkan kondisi citra untuk kategori normal namun pada sistem menunjukkan suspected, hal ini dikarenakan metode Learning Vector Quantization peka terhadap nilai bobot yang terinput. Jika data pada nilai input berubah maka nilai bobot juga akan berubah.
4.6. Hasil Klasifikasi Menggunakan Metode LVQ
Hasil dari uji data pada aplikasi klasifikasi tumor otak dengan metode learning vector quantization dengan rata - rata hasil klasifikasi 85 % sehingga hasil dari akurasi menggunakan learning vector quantization dapat dihitung dengan cara sederhana menggunakan Persamaan 4.1.
Untuk mendapatkan hasil yang akurat maka perlu dilakukan analisis ROC pada hasil klasifikasi berdasarkan metode LVQ, hasil untuk metode LVQ ditunjukkan pada Tabel 4.3.
Tabel 4.3 Tabel Kontingensi Metode LVQ Parameter Klasifikasi Klasifikasi LVQ
TP 9
TN 8
FP 2
FN 1
Sensitivity % 90
Specificity % 80
Accuray % 85
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
1. Kombinasi dari algoritma Zoning dengan Learning Vector Quantization dapat meningkatkan kecepatan pada komputasi dan dapat mengklasifikasikan otak normal maupun otak abnormal dengan rata - rata akurasi 85 %.
2. Pengenalan data citra secara optimal dapat dicapai dengan metode Learning Vector Quantization yang memiliki perhitungan yang cepat dalam pengenalan suatu karakter yang sesuai sehingga tidak terjadi kesalahan pada saat pengujian data.
5.2. Saran
1. Membandingkan metode Learning Vector Quantization dengan metode Support Vector Machine sehinggah dapat menghasilkan metode terbaik untuk pengklasifikasian citra otak.
2. Penggunaan metode Zoning dan Learning Vector Quantization dapat
diterapkan pada penelitian selanjutnya dengan menambahkan metode PCA
untuk menentukan luas dari citra otak abnormal.
DAFTAR PUSTAKA
[1]. Pham N. H Tra, Nguyen T.Hai, Tran T Mai, “Image Segmentation for Detection of Benign and Malignant Tumors, IEEE, 2016.
[2]. Padma Nanthagopal, A.,Sukanesh Rajamony,R,„A region-based segmentation of tumour from brain CT images using Nonlinear Support Vector Machine classifier‟, J. Med. Eng. Technol., 2012, pp. 271–277.
[3]. Vinny Marita,
“Identifikasi Tumor Otak Menggunakan Jaringan Syaraf Tiruan Propagasi Balik pada Citra CT-Scan Otak”, Prisma Fisika, 2014, pp.
117-121.[4]. Abhishek Bargaje, Ameya Kulkarni, Shubham Lagad, Brain Tumor detection and classification using Adaptive boosting, International Research Journal of Engineering and Technology (IRJET) 2017, pp.1961-1965.
[5]. Kartar, S., Renu, D. & Rajneesh, R.
“Handwritten Gurumukhi Character Recognition Using Zoning Density and Background Directional Distribution Features. International Journal of Computer Science and Information Technologies, 2011 pp:1036-1041.
[6]. Eka Miranda, Mediana Aryuni, E. Irwansyah “A Survey of Medical Image Classification Techniques”, International Conference on Information Management and Technology,2016
[7]. Azara, M., Fatayer, T., & Halees, A.E. “Arabic Text Classification Using Learning Vector Quantization”, The 8th International Conference on Informatics and System (INFOS2012).
[8]. Padma A, Sukanesh R. 2013. Based Classification of Soft Tissues in Brain CT Image Using Wavelat Based Dominant Gray level Run Legnth Texture Feature. Middle-East Jornal of Scientific Research , Madurai,India.
[9]. Mohana Priya K, Kavitha S, Bharathi B “Brain Tumor Types Grades Classification based on Statistical Feature Set Using Support Vektor
Machine”. International Conference on Intelligent Systems and
Control, 2016
[10]. R.Lavanyadevi, M.Machakowsalya. “Brain Tumor Classification and Segmentation in MRI Images Using PNN”, ICEICE, 2017, pp.1-6.
[11]. Kartar, S., Renu, D. & Rajneesh, R.
“Handwritten Gurumukhi Character Recognition Using Zoning Density and Background Directional Distribution Features. International Journal of Computer Science and Information Technologies, 2011 pp:1036-1041.
[12].
Padma Nanthagopal, A.,Sukanesh Rajamony,R,„A region-based of tumour from brain CT images using Nonlinear Support Vector Machine classifier‟, J. Med. Eng. Technol., 2013, pp. 271–277.[13]. Choras, R.S. 2007. Image Feature Extraction Techniques and Their
Applications for CBIR and Biometrics Systems. International Journal of Biology and Biomedical Engineering. Vol.1, No.1 : 6-16
[14] Sunil Kumar Khatri. “Recognizing Images Of Handwritten Digits Using Learning Vector Quantization Artificial Neural Network”, International Conference on Reliability, Infocom Technologies and Optimization, 2016.
[15]. Kartar, S., Renu, D. & Rajneesh, R. 2011. Handwritten Gurumukhi Character Recognition Using Zoning Density and Background Directional Distribution Features. International Journal of Computer Science and Information Technologies, 2011.
[16]. Gatos, B., Kesidis,A.L, & Papandreou, A.2011. Adaptive zoning features for character and word recognition. Di dalam: 11
thInternational Conference on Document Analysis and Recognition; Beijing, 18-21 Sep 2011. Washington DC: IEEE Computer Society 2: 1160-1164.
[17]. Sunil Kumar Khatri. “Recognizing Images Of Handwritten Digits Using Learning Vector Quantization Artificial Neural Network”, International Conference on Reliability, Infocom Technologies and Optimization, 2015.
[18]. S. Kusumadewi, Komputasi dan Sistem cerdas, 2004th ed., vol. 1, GRAHA ILMU, 2004, p. 408.
[19]. Nicolas B, Karayiannis 1997.“ A Methdolog for Constructing Fuzzy
Algoritms for Learning Vector Quantization”, IEEE Transactions On
Neural Networks.
2.1 Code Program Metode Zoning Ekstraksi Fitur
package zoning_lvm;import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
class Zoning {
//jadi (ZONA^2) zona private final int ZONA = 8;
private final int THRESHOLD = 128;
private final double THRESHOLDZONING = 0.5;
int[] getWhiteColor(BufferedImage img) { //deklarasi array untuk return
int[] hasilFinal = new int[ZONA*ZONA];
//copy buffered image
ColorModel cm = img.getColorModel();
boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
WritableRaster raster = img.copyData(null);
BufferedImage hasil = new BufferedImage(cm, raster, isAlphaPremultiplied, null);
//ambil panjang dan lebar zona
int panjangZona = img.getWidth() / ZONA;
int lebarZona = img.getHeight() / ZONA;
//perulangan untuk hitung freq nilai 1 / 0 int nilai1 = 0;
int indexPanjang = 0;
int indexLebar = 0;
int batasPanjang = indexPanjang + panjangZona;
int batasLebar = indexLebar + lebarZona;
for(int zoning = 0; zoning < ZONA * ZONA; zoning++){
//perulangan per zona
for(int i = indexPanjang; i < batasPanjang; i++){
for(int j = indexLebar; j < batasLebar; j++){
//ambil nilai rgb dari sebuah pixel
Color pixelAsli = new Color(img.getRGB(i, j));
//ambil RGB
int red = (int)(pixelAsli.getRed()*0.299);
int green = (int)(pixelAsli.getGreen()*0.587);
int blue = (int)(pixelAsli.getBlue()*0.114);
int nilaiRGB = red+green+blue;
if(nilaiRGB == 254){
nilai1++;
} } }
//isi nilai
hasilFinal[zoning] = nilai1;
//kalau dah lebih dari panjang if(batasPanjang >= img.getWidth()){
//reset panjang indexPanjang = 0;
batasPanjang = indexPanjang + panjangZona;
//increase lebar
indexLebar = batasLebar;
batasLebar += lebarZona;
//reset dan set variabel nilai1 = 0;
} else{
//reset dan set variabel nilai1 = 0;
indexPanjang = batasPanjang;
batasPanjang += panjangZona;
} }
return hasilFinal;
}
BufferedImage bitImage(BufferedImage img) { //copy buffered image
ColorModel cm = img.getColorModel();
boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
WritableRaster raster = img.copyData(null);
BufferedImage hasil = new BufferedImage(cm, raster, isAlphaPremultiplied, null);
for(int i = 0; i < img.getWidth(); i++){
for(int j = 0; j < img.getHeight(); j++){
//ambil nilai rgb dari sebuah pixel
Color pixelAsli = new Color(img.getRGB(i, j));
int red = (int)(pixelAsli.getRed()*0.299);
int green = (int)(pixelAsli.getGreen()*0.587);
int blue = (int)(pixelAsli.getBlue()*0.114);
int nilaiRGB = red+green+blue;
//thresholdnya 128 dulu ya int nilaiBit;
if(nilaiRGB >= THRESHOLD){
nilaiBit = 255;
} else {
nilaiBit = 0;
}
Color newColor = new Color(nilaiBit, nilaiBit, nilaiBit);
hasil.setRGB(i, j, newColor.getRGB());
} }
return hasil;
}
int[] hitung(BufferedImage imgBit) { //deklarasi array untuk return int[] hasil;
hasil = getWhiteColor(imgBit);
//cari max
int maksimal = cariMax(hasil);
//hitung ulang nilai hasil
for(int i = 0; i < hasil.length; i++){
double flag = (double) hasil[i] / maksimal;
System.out.println("Zona "+(i+1)+" = "+hasil[i]);
//threshold 0.5
if(flag >= THRESHOLDZONING){
hasil[i] = 1;
} else {
hasil[i] = 0;
} }
return hasil;
}
private int cariMax(int[] hasil) { int max = hasil[0];
for(int i = 1; i < hasil.length; i++){
if(max < hasil[i]){
max = hasil[i];
} }
return max;
}
BufferedImage setZona(BufferedImage img) { //copy buffered image
ColorModel cm = img.getColorModel();
boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
WritableRaster raster = img.copyData(null);
BufferedImage hasil = new BufferedImage(cm, raster, isAlphaPremultiplied, null);
//ambil panjang dan lebar zona
int panjangZona = img.getWidth() / ZONA;
int lebarZona = img.getHeight() / ZONA;
int indexPanjang = 0;
int indexLebar = 0;
int nilaiBit;
int batasPanjang = indexPanjang + panjangZona;
int batasLebar = indexLebar + lebarZona;
for(int zoning = 0; zoning < ZONA * ZONA; zoning++){
//perulangan per zona
for(int i = indexPanjang; i < batasPanjang; i++){
for(int j = indexLebar; j < batasLebar; j++){
// System.out.println(i + " "+ j);
if(i == batasPanjang - 1 || j == batasLebar - 1){
nilaiBit = 255;
} else{
//ambil nilai rgb dari sebuah pixel
Color pixelAsli = new Color(img.getRGB(i, j));
int red = (int)(pixelAsli.getRed()*0.299);
int green = (int)(pixelAsli.getGreen()*0.587);
int blue = (int)(pixelAsli.getBlue()*0.114);
int nilaiRGB = red+green+blue;
//thresholdnya 128 dulu ya if(nilaiRGB >= THRESHOLD){
nilaiBit = 255;
} else {
nilaiBit = 0;
} }
Color newColor = new Color(nilaiBit, nilaiBit, nilaiBit);
hasil.setRGB(i, j, newColor.getRGB());
} }
//kalau dah lebih dari panjang if(batasPanjang >= img.getWidth()){
//reset panjang indexPanjang = 0;
batasPanjang = indexPanjang + panjangZona;
//increase lebar
indexLebar = batasLebar;
batasLebar += lebarZona;
} else{
indexPanjang = batasPanjang;
batasPanjang += panjangZona;
} }
return hasil;
}
String getHasilEkstak(int[] hasilZoning) { String hasil = "";
for(int i = 1; i <= hasilZoning.length; i++){
hasil += hasilZoning[i-1]+" ";
if(i % ZONA == 0 && i != 0){
hasil += "\n";
} }
return hasil;
} }
2.2
Code Program Zoning Untuk Posisi
package zoning_lvm;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.WritableRaster;
class ZoningPosisi extends Zoning { private final int ZONA = 2;
//constructor public ZoningPosisi(){
}
public String getWhiteColorPosisition(BufferedImage img) { //deklarasi array untuk return
int[] hasilFinal = new int[ZONA];
String hasilFinalString = "";
//copy buffered image
ColorModel cm = img.getColorModel();
boolean isAlphaPremultiplied = cm.isAlphaPremultiplied();
WritableRaster raster = img.copyData(null);
BufferedImage hasil = new BufferedImage(cm, raster, isAlphaPremultiplied, null);
//ambil panjang dan lebar zona
int panjangZona = img.getWidth() / ZONA;
// int lebarZona = img.getHeight() / ZONA;
int lebarZona = img.getHeight();
//perulangan untuk hitung freq nilai 1 / 0 int nilai1 = 0;
int indexPanjang = 0;
int indexLebar = 0;
int batasPanjang = indexPanjang + panjangZona;
int batasLebar = indexLebar + lebarZona;
for(int zoning = 0; zoning < ZONA; zoning++){
//perulangan per zona
for(int i = indexPanjang; i < batasPanjang; i++){
for(int j = indexLebar; j < batasLebar; j++){
//ambil nilai rgb dari sebuah pixel
Color pixelAsli = new Color(img.getRGB(i, j));
//ambil RGB
int red = (int)(pixelAsli.getRed()*0.299);
int green = (int)(pixelAsli.getGreen()*0.587);
int blue = (int)(pixelAsli.getBlue()*0.114);
int nilaiRGB = red+green+blue;
if(nilaiRGB == 254){
nilai1++;
} } }
//isi nilai
hasilFinal[zoning] = nilai1;
//kalau dah lebih dari panjang if(batasPanjang >= img.getWidth()){
//reset panjang indexPanjang = 0;
batasPanjang = indexPanjang + panjangZona;
//increase lebar
// indexLebar = batasLebar;
// batasLebar += lebarZona;
//reset dan set variabel nilai1 = 0;
} else{
//reset dan set variabel nilai1 = 0;
indexPanjang = batasPanjang;
batasPanjang += panjangZona;
} }
if(hasilFinal[0] > hasilFinal[1]) hasilFinalString = "Parietal Kiri";
else hasilFinalString = "Parietal Kanan";
return hasilFinalString;
} }
2.3 Code Program Metode LVQ
package zoning_lvm;import java.io.FileReader;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
class Lvq {
private double learningRate;
private final double minLearningRate;
private final double maxEpoch;
String FILE_TXT = "tempMatriks.txt";
float euclideanNormal;
float euclideanAbnormal;
public Lvq(){
//inisialisasi
this.minLearningRate = 0.00001;
}
void insert(int[] hasilZoning, String tabel){
try {
ConnectDb connectDb = new ConnectDb();
//delete data yang di db connectDb.delete(tabel);
//insert satu satu
for(int i = 0; i < hasilZoning.length; i++){
//insert satu per satu
connectDb.insert(i, tabel, hasilZoning[i]);
}
} catch (SQLException ex) {
Logger.getLogger(Lvq.class.getName()).log(Level.SEVERE, null, ex);
} }
void train() {
//class data dengan input dan target
DataInput dataInputNormal = new DataInput();
DataInput dataInputAbnormal = new DataInput();
//set masing masin data input dari db //ambil data input normal
dataInputNormal.setData(this.select("Normal"), 0);
//ambil data input abnormal
dataInputAbnormal.setData(this.select("Abnormal"), 1);
//parsing json
ArrayList<DataInput> bankDataTrain = new ArrayList<>();
//parser json
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader(FILE_TXT));
JSONObject jsonObjectData = (JSONObject) obj;
JSONArray jSONArray = (JSONArray) jsonObjectData.get("data");
//perulangan per data latih
Iterator<JSONObject> iteratorObject = jSONArray.iterator();
while (iteratorObject.hasNext()) { //temp data input dan array
DataInput tempDataInput = new DataInput();
float[] tempArrayInteger;
//object untuk ambil item
JSONObject temp = iteratorObject.next();
//get target
long targetL = (long) temp.get("target");
int target = (int) targetL;
//get data array
JSONArray arrayTemp = (JSONArray) temp.get("array");
//inisial temp array int
tempArrayInteger = new float[arrayTemp.size()];
for(int i = 0; i < tempArrayInteger.length; i++){
long tempElement = (long) arrayTemp.get(i);
tempArrayInteger[i] = (float) tempElement;
}
//set data ke data input
tempDataInput.setData(tempArrayInteger, target);
//add ke array list
bankDataTrain.add(tempDataInput);
}
int epoch = 1;
// double ln = this.learningRate;
while(this.learningRate > this.minLearningRate && epoch <= this.maxEpoch){
//disini proses per data uji
bankDataTrain.stream().forEach((dataUji) -> { //hitung euclidean ke data normal
dataInputNormal.getData());
this.euclideanAbnormal = this.euclidean(dataUji.getData(), dataInputAbnormal.getData());
//tentukan target seharusnya
int targetSeharusnya = dataUji.getTarget();
//cari target berdasarkan euclidean int targetEuclidean;
if(this.euclideanNormal <= this.euclideanAbnormal){
targetEuclidean = 0;
} else {
targetEuclidean = 1;
}
//cek apakah target sama untuk menentukan persamaan bobot if(targetSeharusnya == targetEuclidean){
//update dengan + if(targetEuclidean == 0){
//update bobot normal
dataInputNormal.setData(this.updatePositif(dataUji.getData(),dataInputNormal.getData()));
} else{
//update bobot abnormal
dataInputAbnormal.setData(this.updatePositif(dataUji.getData(),dataInputAbnormal.getDat a()));
} } else{
//update dengan - if(targetEuclidean == 0){
//update bobot normal
dataInputNormal.setData(this.updateNegatif(dataUji.getData(),dataInputNormal.getData()))
;
} else{
//update bobot abnormal
dataInputAbnormal.setData(this.updateNegatif(dataUji.getData(),dataInputAbnormal.getDa ta()));
} } });
//tambah epoch epoch++;
//reduce learning rate
this.learningRate = this.learningRate * (1 - (epoch / this.maxEpoch));
}
// disini harusnya simpan ke db
this.updateDb(dataInputNormal.getData(), "Normal");
this.updateDb(dataInputAbnormal.getData(), "Abnormal");
// System.out.println();
} catch (IOException | ParseException ex) {
System.out.println("error parser json "+ex.toString());
} }
float[] select(String table){
float[] hasil;
try {
//get array
ConnectDb connectDb = new ConnectDb();
hasil = connectDb.selectBobot(table);
return hasil;
} catch (SQLException ex) {
Logger.getLogger(Lvq.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
private float euclidean(float[] dataUji, float[] dataDb) { float hasil = dataDb.length;
if(dataDb.length == dataUji.length){
hasil = 0;
for(int i = 0; i < dataDb.length; i++){
hasil += Math.pow((dataUji[i] - dataDb[i]), 2);
}
hasil = (float) Math.sqrt(hasil);
}
return hasil;
}
private float[] updatePositif(float[] dataUji, float[] dataDb) { float[] hasil = new float[dataDb.length];
for(int i = 0; i < hasil.length; i++){
hasil[i] = (float) (dataDb[i] + learningRate * (dataUji[i] - dataDb[i]));
}
return hasil;
}
private float[] updateNegatif(float[] dataUji, float[] dataDb) { float[] hasil = new float[dataDb.length];
for(int i = 0; i < hasil.length; i++){
hasil[i] = (float) (dataDb[i] - learningRate * (dataUji[i] - dataDb[i]));
}
return hasil;
}
private void updateDb(float[] dataInput, String table) { try {
ConnectDb connectDb = new ConnectDb();
for(int i = 0; i < dataInput.length; i++){
//update satu per satu
connectDb.update(i, dataInput[i], table);
}
} catch (SQLException ex) {
Logger.getLogger(Lvq.class.getName()).log(Level.SEVERE, null, ex);
} }
String recognition(int[] hasilZoning) { //class data dengan input dan target
DataInput dataInputNormal = new DataInput();
DataInput dataInputAbnormal = new DataInput();
//set masing masin data input dari db //ambil data input normal
dataInputNormal.setData(this.select("Normal"), 0);
//ambil data input abnormal
dataInputAbnormal.setData(this.select("Abnormal"), 1);
//ubah hasil zoning ke float
float[] hasilFloat = new float[hasilZoning.length];
for(int i = 0; i < hasilFloat.length; i++){
hasilFloat[i] = (float) hasilZoning[i];
}
//hitung euclidean ke data normal
this.euclideanNormal = this.euclidean(hasilFloat, dataInputNormal.getData());
this.euclideanAbnormal = this.euclidean(hasilFloat, dataInputAbnormal.getData());
//cari target berdasarkan euclidean
if(this.euclideanNormal <= this.euclideanAbnormal){
return "Normal ("+(Math.abs(this.euclideanNormal - this.euclideanAbnormal)+")");
} else {
return "Suspected ("+(Math.abs(this.euclideanNormal - this.euclideanAbnormal)+")");
} } }