MATLAB - Qiara Media

90
PEMANFAATAN MATLAB MATRIX LABORATORY UNTUK DETEKSI JALAN ASPAL BERLUBANG Tim Penyusun YESY DIAH ROSITA SUGIANTO CV. PENERBIT QIARA MEDIA

Transcript of MATLAB - Qiara Media

PEMANFAATAN

MATLAB MATRIX LABORATORY

UNTUK DETEKSI

JALAN ASPAL BERLUBANG

Tim Penyusun

YESY DIAH ROSITA

SUGIANTO

CV. PENERBIT QIARA MEDIA

2

Sanksi Pelanggaran Pasal 113

Undang Undang Nomor 28 Tahun 2014

Tentang Hak Cipta

1. Setiap Orang yang dengan tanpa hak melakukan pelanggaran hak ekonomi sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf i untuk Penggunaan Secara Komersial dipidana penjara paling lama 1 (satu) tahun dan/atau pidana denda paling banyak Rp 100.000.000,00 (seratus juta rupiah).

2. Setiap Orang yang dengan tanpa hak dan/atau tanpa izin Pencipta atau pemegang Hak Cipta melakukan pelanggaran hak ekonomi Pencipta sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf c, huruf d, huruf f, dan/atau huruf h untuk Penggunaan Secara Komersial dipidana dengan pidana penjara paling lama 3 (tiga) tahun dan/atau pidana denda paling banyak Rp 500.000.000,00 (lima ratus juta rupiah).

3. Setiap Orang yang dengan tanpa hak dan/atau tanpa izin Pencipta atau pemegang Hak Cipta melakukan pelanggaran hak ekonomi Pencipta sebagaimana dimaksud dalam Pasal 9 ayat (1) huruf a, huruf b, huruf e, dan/atau huruf g untuk Penggunaan Secara Komersial dipidana dengan pidana penjara paling lama 4 (empat) tahun dan/atau pidana denda paling banyak Rp 1.000.000.000,00 (satu miliar rupiah).

4. Setiap Orang yang memenuhi unsur sebagaimana dimaksud pada ayat (3) yang dilakukan dalam bentuk pembajakan, dipidana dengan pidana penjara paling lama 10 (sepuluh) tahun dan/atau pidana denda paling banyak Rp 4.000.000.000,00 (empat miliar rupiah).

3

PEMANFAATAN MATLAB

(MATRIX LABORATORY)

UNTUK DETEKSI JALAN ASPAL BERLUBANG

-- CV. Penerbit Qiara Media, 2018 Tim Penyusun : Yesy Diah Rosita, Sugianto

PROGRAM STUDI TEKNIK INFORMATIKA UNIVERSITAS ISLAM MAJAPAHIT

TAHUN 2018

Dibiayai oleh: Direktorat Riset dan Pengabdian Masyarakat

Direktorat Jenderal Penguatan Riset dan Pengembangan Kementerian Riset, Teknologi, dan Pendidikan Tinggi

Sesuai dengan Kontrak Penelitian Tahun Anggaran 2018 Hak Cipta Dilindungi Undang-undang. Dilarang memperbanyak sebagian atau seluruh isi buku ini tanpa seizin penerbit.

4

P R A K A T A

Segala puji bagi Allah SWT dengan mengucapkan alhamdulillahirobbil’alamin dan bersholawat kepada Rasulullah SAW dengan mengucapkan allahumma sholli ’ala sayyidina Muhammad wa ‘ala aali sayyidina Muhammad atas selesainya penyusunan buku ini dengan judul Pemanfaatan Matlab (Matrix

Laboratory) untuk Deteksi Jalan Aspal Berlubang. Buku ini diperuntukkaan bagi pemula yang ingin mempelajari tentang pengolahan citra digital dengan memanfaatkan program aplikasi Matlab.

Buku ini terbagi menjadi 4 bahasan, yakni Pengenalan Matlab, Pemrograman Matlab, Pengenalan Citra Digital, Ekstraksi Fitur dan Pengenalan Objek Citra dan dilengkapi contoh kasus beserta solusinya yang disertai script programnya. Perlu diketahui bahwa penyusunan buku ini merupakan salah satu luaran Hibah DIKTI skem Penelitian Dosen Pemula Tahun Anggaran 2018 dengan judul Real-time Detection untuk Klasifikasi Jalan Aspal Berlubang Pemicu Kecelakaan Lalu Lintas.

Oleh karena itu pada kesempatan ini kami mengucapkan terimakasih pada: Kementerian Riset, Teknologi, dan Pendidikan Tinggi Direktorat Jenderal Penguatan Riset dan Pengembangan. Direktorat Riset dan Pengabdian Masyarakat.

Adapun tingkat kesempurnaan dari buku ini masih perlu dikembangkan lebih lanjut. Demikian, semoga buku ini membawa banyak manfaat bagi pembaca. Terimakasih.

Mojokerto, 15 Nopember 2018 Tim Penyusun

5

D A F T A R I S I Keterangan Hal.

Prakata 4 Daftar Isi 5 Daftar Tabel 6 Daftar Gambar 7 Bab 1 Pengenalan Matlab 11

1.1 Menjalankan Matlab 13 1.2 Penggunaan Variabel 15 1.3 Variabel Terdefinisi 17 1.4 Teknik Pemanggilan Data di Workspace 17 1.5 Pengoperasioan Matlab 25 1.5.1 Pengoperasian Sederhana 25 1.5.2 Pengoperasian Kompleks 26 1.6 Matriks dan Pengoperasiannya 30 1.6.1 Matriks Khusus 32 1.6.2 Operasi Matriks 40 Bab 2 Pemrograman Matlab 48

2.1 Struktur Kendali Sekuensial 48 2.2 Struktur Kendali Percabangan 49 2.3 Struktur Kendali Perulangan 53 2.4 Function Matlab 56 Bab 3 Pengenalan Citra Digital 56

3.1 Definisi Citra Digital 57 3.2 Jenis Citra 57 3.2.1 Citra Grayscale 58 3.2.2 Citra Warna 60 3.2.3 Citra Biner 62 3.3 Pembacaan Citra Digital 63

6

3.4 Konversi Citra Digital 65 3.4.1 Konversi Citra Warna RGB ke Grayscale. 75 3.4.2 Konversi Citra Warna RGB ke Biner 76 Bab 4 Ekstraksi Fitur dan

Pengenalan Objek Citra 79

4.1 Pre-processing 4.1.1 Konversi Citra Biner 80 4.1.2 Removing Noise 80 4.1.3 Morphology 81 4.2 Ektraksi Fitur Citra 83 4.2.1 Fitur Eccentricity 85 4.2.2 Fitur Area (Luas Area Objek) 87 4.3 Pengenalan Objek Citra 88 Daftar Pustaka 89

7

D A F T A R T A B E L Keterangan Hal.

Tabel 1.1 Varibel Terdefinisi 17 Tabel 1.2 Simbol-simbol Operator Aritmatika Sederhana 26 Tabel 1.3 Simbol-simbol Operator Aritmatika Kompleks 28

8

D A F T A R G A M B A R Keterangan Hal.

Gambar 1.1 Visualisasi Grafik 2D dan 3D 11 Gambar 1.2 Command Window dan Command Editor pada Matlab 12 Gambar 1.3 Guide pada Matlab 13 Gambar 1.4 Icon Matlab 13 Gambar 1.5 Ruang Lingkup Matlab 15 Gambar 1.6 Contoh Pemberian Variabel Default ans dengan Nilai 5 16 Gambar 1.7 Contoh Pembuatan Variabel 16 Gambar 1.8 Contoh Tampilan Import Data 19 Gambar 1.9 Lokasi Edit Data 20 Gambar 1.10 Ilustrasi Data pada Variabel 21 Gambar 1.11 Contoh Hasil Penyimpanan Variabel A pada File file1 23 Gambar 1.12 Contoh Hasil Pemanggilan Semua Variabel pada File file1 (Variabel A dan B) 24 Gambar 1.13 Contoh Hasil Pemanggilan File Dengan Lokasi Direktori yang berbeda pada Current Folder 24 Gambar 1.14 Contoh Pemanggilan Variabel yang terdapat pada Workspace 25 Gambar 1.15 Contoh Penggunaan Fungsi clear Untuk Beberapa Variabel 25 Gambar 2.1 Simbol Process pada Flowchart 51 Gambar 2.2 Simbol Decision pada Flowchart 52 Gambar 2.3 Contoh Penerapan Struktur Kendali Percabangan dengan Hasil Kondisi Benar 53 Gambar 2.4 Contoh Penerapan Struktur Kendali Percabangan dengan Hasil Kondisi Salah 54 Gambar 2.5 Simbol Iteration pada Flowchart 55 Gambar 2.6 Contoh Penerapan Struktur Kendali

9

Perulangan dengan Syntax while... end 56 Gambar 2.7 Simbol Function pada Flowchart 56 Gambar 3.1 Representasi Citra Model RGB 60 Gambar 3.2 Contoh Jenis Citra Grayscale 61 Gambar 3.3 Contoh Jenis Citra Warna RGB 62 Gambar 3.4 Contoh Ilustrasi Nilai Pixel pada Layer RGB 63 Gambar 3.5 Contoh Jenis Citra Warna Biner 63 Gambar 3.6 Contoh Penggunaan function imfinfo untuk Mengetahui Informasi suatu Citra 65 Gambar 3.7 Contoh Penggunaan function imread untuk Membaca Nilai Pixel suatu Citra 65 Gambar 3.8 Contoh transformasi Citra Warna RGB ke Citra Biner dengan Global Image Thresholding (Metode ‘Otsu) 69 Gambar 3.9 Contoh Transformasi Citra Warna RGB ke Citra Biner dengan Locally Adaptive Image Thresholding 74 Gambar 3.10 Contoh Hasil Penggunaan Konversi Biner dengan Locally Adaptive Image Thresholding 75 Gambar 4.1 Ilustrasi Sebab-Akibat Adanya Jalan Aspal Berlubang/Bergelombang 77 Gambar 4.2 Arsitektur Sistem Pendeteksian Jalan Aspal Berlubang Pemicu Kecelakaan Lalu Lintas 78 Gambar 4.3 (a) Contoh Citra Warna RGB (b) Contoh Hasil Transformasi Penggunaan Fungsi rangefilt() 80 Gambar 4.4 (a) Contoh Citra Hasil Penggunaan Fungsi rangefilt (b) Contoh Hasil Konversi Citra Biner 82 Gambar 4.5 Contoh Ilustrasi Nilai Pixel yang Harus di-remove dengan p=5 83 Gambar 4.6 (a) Contoh Citra Input Biner

10

(b) Contoh Hasil Removing Noise 84 Gambar 4.7 Contoh Ilustrasi Nilai Pixel yang Harus Diisi Sesuai dengan Nilai Pixel sekitarnya 85 Gambar 4.8 (a) Contoh Citra Input Biner (b) Contoh Hasil Penggunaan Operasi Morphology (imfill) 85 Gambar 4.9 Contoh Hasil Pre-processing Citra sebelum Ekstraksi Fitur Area dan Eccentricity 90 Gambar 4.10 Contoh Citra Input Jalan Aspal Berlubang/Bergelombang Pemicu Kecelakaan Lalu Lintas 91 Gambar 4.11 Contoh Hasil Deteksi Jalan Aspal Berlubang/Bergelombang Pemicu Kecelakaan Lalu Lintas 93

11

BAB I

PENGENALAN MATLAB Matlab atau kepanjangannya Matrix Laboratory merupakan

salah satu aplikasi yang dapat digunakan untuk pengolahan data berupa numerik berbasis matriks. Matlab juga termasuk bahasa pemrograman high level (tingkat tinggi) yang mudah untuk dipahami oleh pengguna karena bahasa pemrograman yang digunakan relatif familiar. Selain itu, aplikasi ini sangat interaktif yang berarti mempunyai kemampuan untuk menyelaesaiakan permasalahan yang bersifat kompleks. Setiap tahunnya Matlab dirilis sebanyak 2 kali dengan notasi a dan b, seperti Matlab yang dirilis pada tahun 2018 maka kode versi Matlabnya adalah R2018a dan R2018b.

Matlab memiliki banyak fungsi dalam pengolahan data. Secara keseluruhan, Matlab terbagi menjadi 11 kategori, antara lain: 1. Parallel Computing

2. Math, Statistic, and Optimization

3. Control Systems

4. Signal Processing and Wireless Communications

5. Image Processing and Computer Vision

6. Test Measurement

7. Computational Finance

8. Computational Biology

9. Code Generation

10. Application Deployment

11. Database Access and Reporting

Permasalahan yang sering terjadi adalah ketika dibutuhkan sebuah solusi dengan mempertimbangan lebih dari 1 atau 2 parameter sehingga diperlukan untuk diformulasikan ke dalam bentuk matematis. Contoh permasalahan dasar yang dapat diselesaikan oleh Matlab seperti terdapat 3 buah persamaan dengan 3 variabel. Selain itu Matlab juga mampu menyelesaikan

12

permasalahan kompleks seperti pencarian akar-akar polinomial, matriks, interpolasi, pengolahan citra digital, pengolahan sinyal digital, analisis data, dan perhitungan matematis lainnya.

Permasalahan dan solusi yang dikelola oleh matlab dapat juga direpresenatasikan dalam bentuk grafik. Hal ini bertujuan agar memudahkan pengguna (user) dalam memvisualisasikan data dengan fungsi yang kompleks baik secara 2 dimensi maupun secara 3 dimensi.

(a)

(b) Gambar 1.1 Visualiasi Grafik (a) 2D (b) 3D

Matlab menyajikan tempat pengkodean atau script dalam pemrograman berupa 3 macam, antara lain: command window, comman editor, dan guide (user interface). Perbedaan tempat penyajian ini mempunyai karakteristik masing-masing. Penulisan script pada command window tidak perlu dilakukan penyimpanan script namun dapat dijalankan (running). Sedangkan pada command editor, penulisan script harus disimpan terlebih dahulu dengan file type MAT File agara dapat dijalankan (running).

13

Gambar 1.2 Command Window dan Command Editor pada

Matlab Penulisan script pada guide dilengkapi dengan area untuk

merancang objek yang digunakan seperti editext, statictext, panel, pushbutton dsb. Perancangan objek ini dapat menggunakan pop-up menu properti yang disediakan atau dapat melalui penulisan script.

Gambar 1.3 Guide pada Matlab

1.1 Menjalankan Matlab

Mula-mula, pastikan komputer yang akan digunakan untuk

penglahan data telah terinstall Matlab dengan baik. Sebai langkah awal membukan aplikasi ini dengan double-click pada icon Matlab atau dapat melaui kotak dialog search pada menu Start.

Command Editor

Command Window

14

Gambar 1.4 Icon Matlab

Pada layar pertama, pengguna akan tampak seperti gambar 2.

Pada gambar tersebut terdiri dari:

1. Menu Bar

Menu bar ini merupakan kumpulan menu pada aplikasi Matlab seperti halnya pada aplikasi-aplikasi lainnya yang berisi tentang perintah kerja.

2. Path Directory

Path Directory merupakan istilah yang diartikan sebagai tempat direktori yang akan digunakan untuk penyimpanan file Matlab.

3. Current Folder

Current Folder menunjukkan direktori file yang sedang berlangsung atau aktif.

4. Workspace

Workspace merupakan kumpulan variabel yang digunakan dan dilengkapi dengan jenis tipe datanya.

5. Command Editor

Command Editor merupakan tempat penulisan script yang memerlukan dilakukan penyimpanan script sebelum menjalankan program atau sistem.

15

6. Command Window

Command Window merupakan tempat penulisan script yang tidak memerlukan dilakukan penyimpanan script. Biasanya hal ini dilakukan untuk perhitungan matematis sederhana. Namun perlu diperhatikan dalam penulisan script yang salah dan memiliki konten struktur kendali perulangan seperti for...end maka komputer akan mengalami hang.

Gambar 1.5 Ruang Lingkup Matlab

1.2 Penggunaan Variabel

Variabel merupakan tempat penyimpanan data. Pembuatan

variabel diberikan tipe data tertentu yang mendeskripsikan bahwa variabel tersebut mengandung sebuah nilai dengan sebuah tipe data tersebut. Pembuatan variabel di dalam Matlab dapat dilakukan melalui command window atau command editor. Hal ini bertujuan untuk memudahkan user memanggil data yang sama dengan mudah. Variabel-variabel yang telah dibuat ditampung dalam workspace. Namun dalam pembuatan variabel terdapat beberapa hal yang perlu diperhatikan: 1. Pemberian nama variabel harus diawali dengan huruf abjad (A-

Z atau a-z) dan selanjutnya dapat diikuti dengan pemberian angka atau huruf lagi.

Command Editor

Command Window Workspace

Current Folder

Menu Bar

Path Directory

16

2. Hindari penggunaan spasi, titik, koma, dan operator aritmatika lainnya seperti +, -, =, /, dsb.

3. Apabila suatu nilai tidak diberikan nama variabel maka secara default Matlab akan memberikan nama variabel berupa ans yang berarti “answer”.

Gambar 1.6 Contoh Pemberian Variabel Default ans dengan

Nilai 5

4. Besar-kecilnya variabel mengandung arti yang berbeda atau bersifat case sensitive. Misal, variabel A tidak sama dengan variabel a.

5. Variabel dapat berisi nilai numerik atau teks. Variabel yang berisi nilai diberikan tanda [...]. Sedangkan variabel yang berisi teks diberikan tanda {...} dan isi data diberikan tana petik satu (apostrophe).

Gambar 1.7 Contoh Pembuatan Variabel

17

1.3 Variabel Terdefinisi

Selain dapat membuat variabel pada Matlab, ada juga variabel-

variabel yang sudah didefinisikan terlebih dahulu oleh Matlab sehingga user dapat menggunakannya secara langsung. Variabel-variabel tersebut tersaji pada tabel 1.1.

Tabel 1.1 Variabel Terdefinisi

No. Nama Variabel Keterangan 1 ans Kependekan dari “answer” yang

digunakan untuk menyimpan hasil perhitungan terakhir

2 eps Varibel yang mengandung bilangan sangat kecil mendekati nilai nol dan merupakan batas akurasi perhitungan.

3 i,j Varibel unit imajiner, 1− , yang mengandung arti bilangan kompleks.

4 inf Kependekan dari “Infinity” yang berarti bilangan positif tak berhingga.

5 NaN Kependekan dari “Not a Number” yang berarti hasil perhitungan yang tak terdefinisi.

6 Pi Varibel konstanta π (phi) yang mengandung nilai 3.1415926...

1.4 Teknik Pemanggilan Data di Workspace

Pembuatan variabel akan dimuat dalam workspace. Hal ini

berfungsi untuk memudahkab user dalam pemanggilan data untuk menyelesaikan sebuah fungsi. Semua variabel yang terdapat di workspace maka dalam pemanggilan data tidak perlu disebutkan path directory-nya. Terdapat beberapa teknik yang dapat digunakan untuk memuat data ke dalam workspace, antara lain:

18

1. Penggunaan file ekstensi .txt

Teknik ini dilakukan dengan menggunakan fungsi load dan

diikuti nama file dengan ekstensi .txt. Script ini dapat berjalan dengan baik jika file tersebut sudah dimuat di workspace. Contoh penulisan script di command window:

>> load file1.txt

2. Penggunaan file berformat spreedsheet

Teknik ini dilakukan untuk memanggil dan membaca data

berformat spreedsheet dengan menggunakan fungsi xlsread. >> data=xlsread(‘file2.xlsx’) Hasil pembacaan file spreedsheet dengan nama file2.xlsx

dituangkan dalam variabel data. 3. Penggunaan Import Data

Teknik ini apat digunakan juga dalam pemanggilan data.

Adapun langkah-langkahnya seperti berikut: • Pilih menu bar Home > Import Data • Pilih file yang akan di-import maka akan muncul tampilan:

Gambar 1.8 Contoh Tampilan Import Data

19

• Selection digunakan untuk memilih cell yang berperan sebagai variabel baru.

• Imported Data digunakan untuk memilih variabel yang berperan sebagai variabel baru: o Cell Array: pengimportan data yang tersimpan dalam

sebuah kontainer yang lebih dikenal dengan cell. Cell Array dapat terdiri dari berbagai tipe data sehingga data yang bertipe data string dapat menggunakan teknik import data ini.

o Column Vector: pengimportan data berupa vektor berdasarkan kolom.

o Numeric Matrix: pengimportan data berupa matrix berdasarkan cell terpilih.

o Table: pengimportan data ke dalam bentuk tabel yang masing-masing kolomnya mempunyai nama kolom.

• Unimportable Cells digunakan untuk pemilihan tampilan data jika cell yang dipilih tidak dapat diimport.

• Kemudian klik import selection. • Pengubahan nama variabel dapat dilakukan pada workspace

dengan cara klik kanan varibel pada workspace dan pilih rename.

4. Edit Data

Kegiatan ini diperlukan ketika menginginkan pengubahan data

pada suatu variabel. Adapun langkah-langkahnya sebagai berikut: • Double-Click nama variabel yang akan diubah pada workspace.

• Kemudian edit data dapat dilakukan.

20

Gambar 1.9 Lokasi Edit Data

Cara lain juga dapat digunakan melalui script dengan

mengetahui isian data seperti panjang data pada sebuah variabel, jumlah baris dan kolom, tipe data dan index data. Misalkan, mula-mula terdapat sebuah variabel A yang berisi nilai 10,20,30,40, dan 50. User menginginkan untuk mengubah nilai 30 menjadi 300. Variabel berbentuk ukuran matrik 1x5 yang berarti bahwa variabel A memiliki 1 baris dan 5 kolom.

10 20 30 40 50 (1 baris)

Indeks ke- 1 2 3 4 5 (5 kolom)

Variabel A Gambar 1.10 Ilustrasi Data pada sebuah Variabel

Sedangkan nilai 30 pada varibel A terdapat pada baris ke-1 dan

kolom ke-3 sehingga dapat dilakukan pengubahan data nilai 30 ke 300 dengan script berikut:

>> A(1,3)=300 A = 10 20 300 40 50

Edit Data

21

Sedangkan jika menginginkan untuk menambah data pada kolom varibel berikutnya maka dapat dilakukan dengan mengetahui panjang data varibel atau ukuran variabel yang berisi jumlah baris dan kolom. Karena variabel A yang telah dibentuk tadi memiliki 5 kolom maka untuk menambahkan data pada kolom berikutnya dengan menambahkan 1 kolom dari jumlah kolom variabel yang ada.

Misalkan, user ingin menambahkan data pada baris ke-1 dan kolom ke-6 dengan nilai 600 maka dapat dilakukan dengan script berikut:

>> A(1,3)=300 A = 10 20 300 40 50 >> [r,c]=size(A) r = 1 c = 5 >> A(r,c+1)=600 A = 10 20 300 40 50 600

Fungsi size ini berfungsi untuk mengetahui jumlah baris dan

kolom suatu varibel. Script [r,c]=size(A) ini mengandung arti bahwa jumlah baris varibel A akan dituangkan pada variabel r dan jumlah kolom pada variabel A dituangkan pada variabel c. Sehingga script A(r,c+1)=600 memiliki arti bahwa data variabel A yang terletak pada baris r yakni 1 dan kolom c yakni 5+1 berisi nilai 600.

5. Penyimpanan dan Pemanggilan Variabel pada sebuah

File

Variabel yang tersimpan pada workspace tanpa penggunaan

sebuah file maka variabel tersebut akan hilang ketika program aplikasi Matlab dibuka ulang sehingga diperlukan pembuatan

22

sebuah file yang dapat menampung lebih dari 1 varibel. Misalkan terdapat variabel A yang berisi nilai 10, 20, 30, 40, 50 akan disimpan pada file1 dengan ektension .MAT file maka script yang akan digunakan sebagai berikut:

>> save file1 A

Hasil running system menampilkan penambahan nama file

pada Current Folder seperti tampak pada gambar 1.11.

Gambar 1.11 Contoh Hasil Penyimpanan Variabel A pada

File file1 Hasil penyimpanan sebuah variabel pada sebuah file juga dapat

dibuka dengan double-click pada nama file yang terdapat di Current Folder atau dengan menggunakan script untuk memanggil variabel-varibel yang terdapat pada sebuah file dan dituangkan dalam workspace. Adapun script-nya sebagai berikut:

>>load('file1.mat')

Hasil running system menampilkan semua variabel yang

terdapat pada file tersebut (file1.mat).

23

Gambar 1.12 Contoh Hasil Pemanggilan Semua Variabel pada

File file1 (Variabel A dan B) Jika file yang dimaksud terdapat pada lokasi direktori yang lain

maka dapat diubah Path Directory atau dengan menambahkan lokasi direktori pada script tanpa menubah Current Folder.

Gambar 1.13 Contoh Hasil Pemanggilan File dengan Lokasi

Direktori yang berbeda pada Current Folder

Selanjutnya, user dapat memanggil variabel dari workspace

dengan mengtikkan nama variabel pada command window saja.

24

Gambar 1.14 Contoh Pemanggilan Variabel yang terdapat pada Workspace

Variabel yang terdapat pada workspace juga dapat dihapus

dengan menggunakan fungsi clear. Penggunaan hanya fungsi clear dapat menghapus semua variabel yang terdapat pada workspace. Namun jika user menginginkan untuk menghapus salah satu atau beberapa variabel maka fungsi clear dapat diikuti dengan menyebutkan variabel-variabel yang diinginkan untuk dihapus.

Gambar 1.15 Contoh Penggunaan Fungsi clear untuk Beberapa

Variabel Sedangkan untuk menghapus semua catatan yang ada di

command window dapat menggunakan fungsi clc sehingga command window tampak bersih dari script. Namun user dapat memanggil script yang pernah sibuat sebelumnya dengan menggunakan tombol panah atas, maka pada command window akan meanmpilkan semua catatan script yang pernah dibuat.

25

1.5 Pengoperasian Matlab

Pengoperasian matematis dalam Matlab terbagi menjadi 2

macam, yakni pengoperasian sederhana dan pengoperasian kompleks.

1.5.1 Pengoperasian Sederhana

Program Aplikasi Matlab berbentuk matriks sehingga

cenderung digunakan untuk menyelesaikan permasalahan yang bersifat matematis. Oleh karena itu operator-operator aritmatika juga terlibat di dalamnya. Adapun urutan simbol-simbol operator aritmatika dalam Matlab yang terurut berdasarkan tingkat prioritas eksekusinya seperti pada tabel 1.2.

Tabel 1.2 Simbol-simbol Operator Aritmatika Sederhana No. Operator Kegunaan 1 ( ) Tanda kurung 2 ^ Perpangkatan bilangan 3 * Perkalian 4 / Pembagian bilangan sebelah kiri dengan

bilangan sebelah kanan 5 \ Pembagian bilangan sebelah kanan dengan

bilangan sebelah kiri 6 + Penjumlahan 7 - Pengurangan

Contoh implementasi pengoperasian sederhana melalui

command window sebagai berikut: • Tanpa penggunaan variabel

>> 4+8 %Penjumlahan ans = 12 >> 7-5 %Pengurangan ans =

26

2 >> 3*2 %Perkalian ans = 6 >> 16/4 %Pembagian bilangan sebelah kiri dengan

bilangan sebelah kanan ans = 4 >> 16\4 %Pembagian bilangan sebelah kanan dengan

bilangan kiri ans = 0.2500 >> 5^2 %Perpangkatan, 5 pangkat 2 ans = 25 >> (5+3)*7 %Penggunaan kurung, 5+3 didahuluan

penjumlahannya kemudian dikalikan dengan 7 ans = 56

Perlu diketahui bahwa semua tulisan yang terdapat setelah

tanda % tidak akan dieksekusi oleh sistem karena bersifat komentar.

• Penggunaan Variabel

>> a=5 %Variabel a berisi nilai 5 a = 5 >> b=9 %Variabel b berisi nilai 9 b = 9 >> c=a+b %Variabel c berisi hasil penjumlahan

variabel a dan b c = 14

1.5.2 Pengoperasian Kompleks

Semua fungsi matematika tersaji dalam Matlab seperti fungsi

eksponensial, integral, logaritma, pembulatan, pemutlakan, statistika, trigonometri, dan semua fungsi yang berkaitan dengan

27

bilangan kompleks. Adapun fungsi-fungsi tersebut tersaji pada tabel 1.3.

Tabel 1.3 Simbol-simbol Operator Aritmatika Kompleks No. Jenis Fungsi Operator Kegunaan 1 Fungsi

Pemutlakan

abs(x) Nilai “absolut” dari nilai x: |x|

sign(x) Nilai “signum” dari nilai x: bernilai 1 jika x positif, bernilai -1 jika x negatif, dan bernilai 0 jika x sama dengan 0

2 Fungsi Eksponensial dan Logaritma

sqrt(x) Akar kuadrat dari nilai x:

x exp(x) Pangkat natural dari nilai

x: ex log(x) Logaritma natural dari x:

ln x log10(x) Logaritma basis 10 dari

nilai x: log10 x log2(x) Logaritma basis 2 dari

nilai x: log2 x 3 Fungsi

Trigonometri

sin(x) Fungsi trigonometri sinus dari nilai x

cos(x) Fungsi trigonometri cosinus dari nilai x

tan(x) Fungsi trigonometri tangent dari nilai x

cot(x) Fungsi trigonometri cotangent dari nilai x

sec(x) Fungsi trigonometri secant dari nilai x

csc(x) Fungsi trigonometri cosecant dari nilai x

asin(x) Fungsi arcus trigonometri

28

No. Jenis Fungsi Operator Kegunaan sinus dari nilai x

acos(x) Fungsi arcus trigonometri cosinus dari nilai x

atan(x) Fungsi arcus trigonometri tangent dari nilai x

acot(x) Fungsi arcus trigonometri cotangent dari nilai x

asec(x) Fungsi arcus trigonometri secant dari nilai x

acsc(x) Fungsi arcus trigonometri cosecant dari nilai x

sinh(x) Fungsi trigonometri-hiperbolik sinus dari nilai x

cosh(x) Fungsi trigonometri-hiperbolik cosinus dari nilai x

tanh(x) Fungsi trigonometri-hiperbolik tangent dari nilai x

coth(x) Fungsi trigonometri-hiperbolik cotangent dari nilai x

sech(x) Fungsi trigonometri-hiperbolik secant dari nilai x

csch(x) Fungsi trigonometri-hiperbolik cosecant dari nilai x

asinh(x) Fungsi arcus trigonometri-hiperbolik sinus dari nilai x

acosh(x) Fungsi arcus trigonometri-hiperbolik cosinus dari nilai x

29

No. Jenis Fungsi Operator Kegunaan atanh(x) Fungsi arcus

trigonometri-hiperbolik tangent dari nilai x

acoth(x) Fungsi arcus trigonometri-hiperbolik cotangent dari nilai x

asech(x) Fungsi arcus trigonometri-hiperbolik secant dari nilai x

acsch(x) Fungsi arcus trigonometri-hiperbolik cosecant dari nilai x

4 Fungsi Pembulatan

round(x) Pembulatan nilai x ke nilai terdekat

floor(x) Pembulatan ke bawah dari nilai x ke bilangan bulat terdekat

ceil(x) Pembulatan ke atas dari nilai x ke bilangan bulat terdekat

fix(x) Pembulatan ke bawah untuk nilai x yang positif, dan sebaliknya

rem(x,y) Sisa pembagian dari nilai x dan y

5 Fungsi Bilangan Kompleks

real(x) Perhitungan komponen riil dari bilanan kompleks x

imag(x) Perhitungan komponen imajiner dari bilanan kompleks x

angle(x) Perhitungan argumen dari bilangan kompleks x

conj(x) Perhitungan konjugasi dari bilangan kompleks x

30

No. Jenis Fungsi Operator Kegunaan 6 Operator

Lainnya

det(x) Perhitungan nilai determinan suatu matriks

eig(x) Perhitungan nilai eigen suatu matriks

max(x) Perhitungan nilai maksimum dari kumpulan nilai

min(x) Perhitungan nilai minimum dari kumpulan nilai

mean(x) Perhitungan nilai rata-rata dari kumpulan nilai

median(x) Perhitungan nilai tengah dari kumpulan nilai

modus(x) Perhitungan nilai yang sering muncul dari kumpulan nilai

std(x) Perhitungan nilai standar deviasi dari kumpulan nilai

1.6 Matriks dan Pengoperasiannya

Pada Matlab terdapat 3 macam format data yang dapat

digunakan yakni skalar, vektor dan matriks. a. Skalar merupakan suatu nilai tunggal. b. Vektor merupakan kumpulan nilai yang tersusun dalam 1

dimensi yang berarti memiliki 1 baris atau 1 kolom. c. Matriks merupakan kumpulan nilai yang tersusun dalam 2

dimensi yang berarti memiliki jumlah m baris dan jumlah n kolom. Beberapa yang perlu diperhatikan dalam penyajian vektor dan

matriks sebagai berikut:

31

a. Penyajian bilangan vektor dan matriks dapat menggunakan tanda [...].

b. Pemisah antar kolom dapat menggunakan tombol spasi atau koma sedangkan pemisah antar baris dapat menggunakan tombol enter.

c. Jika user menginginkan penginputan nilai pada baris berikutnya dapat menggunakan ; (titik-koma). Adapun contoh penyajiannya sebagai berikut: >> vektor_baris=[1,2,3,4,5] vektor_baris = 1 2 3 4 5 >> vektor_kolom=[1;2;3;4;5] vektor_kolom = 1 2 3 4 5 >> matriks_2x3=[1,2,3;4,5,6] matriks_2x3 = 1 2 3 4 5 6

Pengubahan nilai pada vektor dan matriks dapat dilakukan

dengan mengetahui lokasi nilai. Misal, user menginginkan pengubahan nilai 3 pada matriks matriks_2x3 dengan nilai 8, maka harus diketahui dulu lokasi nilai 3 pada matriks tersebut. Lokasi nilai 3 terletak pada baris ke-1 dan kolom ke-3 sehingga pengubahannya dapat dilakukan sebagai berikut:

>> matriks_2x3(1,3)=8 matriks_2x3 = 1 2 3 4 5 6

32

1.6.1 Matriks Khusus

Seperti halnya pembuatan matriks-matriks pada umumnya,

matriks khusus juga disediakan oleh Matlab seperti matriks nol, matriks satu, matriks identitas. Adapun fungsi pembuatan matriks khusus sebagai berikut:

1. Matriks Nol

Pembuatan matriks ini dapat menggunakan fungsi zeros

dengan diikutkan jumlah baris dan kolom yang diinginkan untuk diisi dengan nilai 0. Contoh pembuatan matriks nol dengan jumlah baris sebanyak 3 dan jumlah kolom sebanyak 4 maka dapat ditulis dengan:

>> zeros(3,4) ans = 0 0 0 0 0 0 0 0 0 0 0 0

2. Matriks Satu

Seperti halnya pembuatan matriks nol, pembuatan matriks ini

akan menyajikan nilai 1 pada semua elemen matriks. Pembuatan matriks ini dapat menggunakan fungsi ones. Contoh pembuatan matriks satu dengan jumlah baris sebanyak 2 dan jumlah kolom sebanyak 2 maka dapat ditulis dengan:

>> ones(2,2) ans = 1 1 1 1

3. Matriks Identitas

Pembuatan matriks yang berisi nilai satu pada elemen diagonal.

Sedangkan pada elemen lainnya berisi nol. Pembuatan matriks ini

33

menggunakan fungsi ones dengan diikuti jumlah baris dan kolom yang diinginkan seperti pada pembuatan matriks satu nol dan satu.

>> eye(3,3) ans = 1 0 0 0 1 0 0 0 1

4. Matriks Transpose

Fungsi ini digunakan untuk menghasilkan matriks transpose

dari sebuah matriks yang berarti semua elemen pada kolom akan menjadi elemen baris dan sebaliknya. Pemanggilan fungsi ini dapat menggunakan transpose(M) atau dengan menuliskan petik satu seperti ini M’.

>> M=[1,2,3; 4,5,6] M = 1 2 3 4 5 6 >> transpose(M) ans = 1 4 2 5 3 6 >> M' ans = 1 4 2 5 3 6

5. Penukaran Posisi Elemen Matriks

Proses ini digunakan untuk menukar posisi elemen sebuah

matriks. Penukaran ini dibagi menjadi 3 macam yakni:

• Dari posisi kiri ke kanan

34

Elemen matriks ditukar posisinya dengan menukar elemen matriks bagian kiri dengan elemen matriks bagian kanan. Fungsi yang dimaksud untuk penukaran posisi elemen matriks adalah fliplr(M) yang merupakan kepanjangan dari flip from left to

right. >> M=[1,2,3; 4,5,6] M = 1 2 3 4 5 6 >> fliplr(M) ans = 3 2 1 6 5 4

• Dari posisi atas ke bawah

Elemen matriks ditukar posisinya dengan menukar elemen

matriks bagian atas dengan elemen matriks bagian bawah. Fungsi yang dimaksud untuk penukaran posisi elemen matriks adalah flipud(M) yang merupakan kepanjangan dari flip from up to

down. >> M=[1,2,3; 4,5,6] M = 1 2 3 4 5 6 >> flipud(M) ans = 4 5 6 1 2 3

• Memutar elemen matriks berdasarkan besar rotasi

Besarnya rotasi yang digunakan hanya 900. Fungsi yang

digunakan adalah rot90(M) yang merupakan kependekan dari rotasi 900 yang berarti elemen matriks M akan diputar sebesar 900.

35

>> M=[1 2 3 4; 5 6 7 8; 9 10 11 12] M = 1 2 3 4 5 6 7 8 9 10 11 12 >> rot90(M) ans = 4 8 12 3 7 11 2 6 10 1 5 9

6. Matriks Invers

Fungsi yang dapat digunakan untuk membuat matriks invers

dari sebuah matriks adalah fungsi inv(). >> A = [1 1 3; 2 0 4; -1 6 -1] A = 1 1 3 2 0 4 -1 6 -1 >> inv(A) ans = -2.4000 1.9000 0.4000 -0.2000 0.2000 0.2000 1.2000 -0.7000 -0.2000

7. Pengubahan Bentuk Ukuran Matriks

Hal ini dilakukan untuk membentuk matriks baru dengan

jumlah elemen matriks yang sama maksudnya jika sebuah matriks berukuran 3x2 maka jumlahnya elemennya adalah 6. Apabila diperlukan pembentukan matriks baru dari matriks tersebut dengan ukuran yang berbeda maka dapat dilakukan jika perkalian antara jumlah baris dan kolom pada matriks baru menghasilkan 6 sehingga kemungkinan yang ada pada matriks baru berukuran 1x6, 2x3, dan 6x1.

>> M=[1 2 ; 3 4; 5 6] M =

36

1 2 3 4 5 6 >> reshape(M,2,3) ans = 1 5 4 3 2 6

8. Matriks Acak

Pembuatan matriks dengan menyajikan nilai random atau acak

pada semua elemen matriks yang berjumlah m baris dan n kolom. Contoh:

>> rand(3,4) ans = 0.8147 0.9134 0.2785 0.9649 0.9058 0.6324 0.5469 0.1576 0.1270 0.0975 0.9575 0.9706

9. Matriks Acak Tak Hingga

Sama seperti pembuatan matriks acak hanya saja

membangkitkan bilangan antara -~ hingga +~ secara acak mengikuti distribusi normal.

>>randn(1,3) ans = 0.7254 -0.0631 0.7147

10. Matriks Permutasi

Fungsi ini digunakan untuk menyajikan semua permutasi dari

suatu bilangan ke bilangan lain. Fungsi yang dimaksud adalah perms(i,j) yang berarti jika membuat matriks dengan memanfaatkan fungsi ini maka matriks hasil berukuran jumlah baris hasil permutasi j dan jumlah kolom sesuai jumlah data. Misalkan script perms(2,4) memiliki arti bahwa jumlah data

37

sebanyak 3 yakni dari bilangan 2 hingga 4 (2,3, dan 4) sehingga jumlah baris matriks hasil adalah 3! yakni 6 dan jumlah kolom matriks hasil adalah 3 sesuai jumlah data. Sedangkan elemen yang terdapat matrik hsail adalah kombinasi data.

>> perms(2:4) ans = 4 3 2 4 2 3 3 4 2 3 2 4 2 4 3 2 3 4

11. Matriks Permutasi Random

Matriks yang menyajikan bilangan atau nilai dengan

membangkitkan urutan permutasi 1-n secara random.

>> randperm(7) ans = 3 2 6 7 4 5 1

12. Replikasi Matriks

Fungsi ini digunakan untuk mereplikasi sebuah matriks. User

dapat mereplikasi sebuah matriks sebanyak jumlah m baris dan jumlah n kolom. Misalkan terdapat matriks ukuran 2x2, jika user menginginkan untuk mereplikasi sebanyak 3 baris sebagai m dan 2 kolom sebagai n maka matriks hasilnya memiliki baris dan kolom adalah 2xm dan 2 x n yang berarti matriks hasil berukuran 6x4. Fungsi yang digunakan adalah repmat(M,b,k). M sebagai matriks yang akan direplikasi sedangkan b dan k adalah jumlah baris dan kolom replikasi.

>> data=[1 2; 3 4] data = 1 2 3 4

38

>> repmat(data,3,2) ans = 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4

13. Bilangan Diagonal Matriks

Fungsi ini digunakan untuk menampilkan semua bilangan

matriks yang menempati garis diagonal pada matriks tersebut. Fungsi yang dimaksud adalah diag(M). Misalkan terdapat matriks dengan ukuran 3x3, maka bilangan yang akan ditampilkan dengan menggunakan fungsi ini adalah bilangan pada baris dan kolom yang sama yakni (1,1), (2,2) dan (3,3).

>> M=[2 4 6; 3 6 9; 4 8 12] M = 2 4 6 3 6 9 4 8 12 >> diag(M) ans = 2 6 12

14. Ukuran Matriks

Fungsi yang dapat digunakan untuk mengetahui jumlah baris

dan kolom sebuah matriks adalah size(M) dengan M sebuah matriks.

>> size(M) ans = 3 3

39

Hasil dari pemanggilan fungsi ini adalah nilai pertama menyatakan jumlah baris matriks dan nilai kedua menyatakan jumlah kolom matriks.

15. Panjang Matriks

Fungsi yang dapat digunakan untuk mengetahui panjang data

sebuah matriks adalah dengan memanfaatkan fungsi length(M). Jika ukuran sebuah matriks adalah r dan c maka pemanggilan fungsi ini menghasilkan nilai terbesar dari r dan c.

M=[1,2,3; 4,5,6; 7,8,9; 10,11,12; 13,14,15] M = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 >> length(M) ans = 5

Perlu diketahui bahwa user dapat menggunakan tanda : (titik 2)

dalam 2 arti yakni: Digunakan untuk menampilkan data dari suatu baris/kolom ke

baris/kolom yang lain. Contoh terdapat sebuah matrik berukuran 2x3 maka untuk menampilakan elemen baris-1 hingga baris-2 dan elemen pada kolom-2 hingga kolom-3 dapat menggunakan script berikut:

>> M=[1,2,3; 4,5,6] M =

1 2 3 baris ke-1 4 5 6 baris ke-2

Kolom ke- 1 2 3 >> M(2,3)

40

ans = 6 >> M(1:2,2:3) ans = 2 3 5 6

• Digunakan untuk menampilkan semua elemen baris/kolom. Misalkan terdapat sebuah matriks dengan ukuran 2x3 maka untuk menampilkan semua baris namum elemen yang ditampilkan hanya pada kolom ke-2 dan ke-3 dapat disajikan dengan script sebagai berikut:

>> M=[1,2,3; 4,5,6] M =

1 2 3 baris ke-1 4 5 6 baris ke-2 Kolom ke- 1 2 3 >> M(:,2:3) ans = 2 3 5 6

1.6.2 Operasi Matriks

Operasi matriks yang dimaksud adalah operasi aljabar dan

operasi elemen-per-elemen. Operasi aljabar matriks meliputi penjumlahan, pengurangan, perkalian, invers, transpose, dot, prod, cross product, dan sebagainya. Sedangkan operasi elemen-per-elemen yakni operasi yang merupakan ciri khas Matlab dengan mengoperasikan satu per satu elemen matriks seperti skalar yang meliputi penjulahan/pengurangan, perkalian/pembagian, dan pangkat.

41

a. Operasi Penjumlahan dan Pengurangan Matriks

Operasi penjumlahan dan pengurangan mempunyai syarat

yakni ukuran matriks harus sama dengan matriks yang akan dijumlahkan/dikurangkan.

>> X=[2 4 6; 8 10 12] X = 2 4 6 8 10 12 >> Y=[1 3 5; 7 9 11] Y = 1 3 5 7 9 11 >> Penjumlahan=X+Y Penjumlahan = 3 7 11 15 19 23 >> Pengurangan=X-Y Pengurangan = 1 1 1 1 1 1

Perlu diketahui juga untuk menjumlahkan elemen sebuah

matriks dapat menggunakan fungsi sum yang mampu menjumlahkan elemen matriks secara baris maupun kolom. Misalkan terdapat sebuah matriks M sebagai berikut:

=

987

654

321

M

- Menjumlahkan elemen setiap kolom matriks >> sum(M) ans = 12 15 18

- Menjumlahkan elemen setiap baris matriks

42

>> sum(M,2) ans = 6 15 24

- Mengetahui total elemen matriks >> sum(sum(M)) ans = 45

- Mengetahui nilai kumulatif elemen matriks secara vertikal

atau baris dengan menggunakan fungsi cumsum().

>> M=[1 2 3; 4 5 6; 7 8 9] M = 1 2 3 4 5 6 7 8 9 >> cumsum(M) %Penjumlahan kumulatif elemen matriks berdasarkan kolom ans =

1 2 3 elemen baris ke-1 5 7 9 elemen baris ke-1 hingga ke-2 dijumlahkan 12 15 18 elemen baris ke-1 hingga ke-3 dijumlahkan >> cumsum(M,2) %Penjumlahan kumulatif elemen

matriks berdasarkan baris ans = 1 3 6 4 9 15 7 15 24

b. Operasi Perkalian Matriks

Operasi perkalian matriks mempunyai beberapa macam

penanganan seperti perkalian antra matriks, perkalian pada setiap elemen matriks, product, cumulative product.

43

- Perkalian Antar Matriks

Operasi perkalian matriks ini seperti halnya perkalian matriks

pada umumnya yang sering kita lihat yang berlaku untuk matriks A(i,j) dengan matriks B(j,k) maksudnya jumlah kolom pada matriks A harus sama dengan jumlah baris pada matriks B. Operator perkalian dapat menggunakan simbol * pada keyboard.

>> A=[1 3 ;5 7 ;9 11] A = 1 3 5 7 9 11 >> B=[ 2 4; 6 8] B = 2 4 6 8 >> C=A*B C = 20 28 52 76 84 124

- Perkalian Elemen Matriks

Setiap elemen matriks juga dapat dikalikan dengan sebuah nilai

bukan sebuah matriks. Misal:

2

987

654

321

=H

Maka dapat diselesaikan menambahkan tanda . (titik) dengan

penulisan script sebagai berikut: >> M=[1 2 3; 4 5 6; 7 8 9] M = 1 2 3 4 5 6

44

7 8 9 >> H=M.*2 H = 2 4 6 8 10 12 14 16 18

- Perkalian Dot Product Matriks

Fungsi perkalian ini akan menghasilkan perkalian elemen

dalam suatu matriks berdasarkan baris atau kolom. Fungsi yang digunakan adalah prod() yang merupakan kependekan dari product.

>> M=[1 2 3; 4 5 6] M = 1 2 3 4 5 6 >> prod(M) %Perkalian elemen berdasarkan kolom ans = 4 10 18 >> prod(M,2) %Perkalian elemen berdasarkan baris ans = 6 120

- Perkalian Cumulative Product Matriks

Fungsi perkalian ini akan menghasilkan perkalian kumulatif

elemen dalam suatu matriks berdasarkan baris atau kolom. Cara kerjanya fungsi ini sama seperti halnya penjumlahan kumulatif dengan menggunakan fungsi cumsum().

Fungsi yang digunakan adalah cumprod() yang merupakan kependekan dari cumulative product.

M = 1 2 3 4 5 6 >> cumprod(M) %Perkalian kumulative elemen

berdasarkan kolom ans =

45

1 2 3 4 10 18 >> cumprod(M,2) %Perkalian kumulative

elemen berdasarkan baris ans = 1 2 6 4 20 120

c. Operasi Pembagian Matriks

Terdapat 2 macam operasi pembagian matriks yakni: - Operasi Pembagian Matriks Kanan

Operasi ini menggunakan fungsi mrdivide() yang merupakan

kependekan dari matrix right divide. Syaratnya penggunaan operasi pembagian ini yakni jumlah kolom matriks pembagi harus sama dengan jumlah baris matriks yang akan dibagi. Misal terdapat 3 persamaan sebagai berikut:

86

1942

23

321

31

321

=−+−=+=++

XXX

XX

XXX

Untuk mengetahui nilai X1, X2, X3 dapat diuraikan menjadi 2

matriks. Matriks pertama berisi semua elemen di sebelah kiri tanda = (sama dengan) yang selanjutnya disebut matriks A dan matriks yang kedua berisi semua elemen di sebelah kanan tanda = (sama dengan) dan di-transpose-kan yang selanjutnya disebut sebagai matriks B.

−−=

161

402

311

A

,

=

8

19

2

B

46

Cara penyelesaiannya dengan membagi matriks B dengan matriks A.

=

−− 8

19

2

161

402

311

3

2

1

X

X

X

A B >> A = [1 1 3; 2 0 4; -1 6 -1] A = 1 1 3 2 0 4 -1 6 -1 >> B = [2 19 8] B = 2 19 8 >> H=mrdivide(B,A) H = 1.0000 2.0000 3.0000

Variabel H merupakan hasil pembagian matriks B dengan

matriks A yang menjawab nilai dari X1, X2, dan X3 yakni bernilai secara urut 1, 2, dan 3.

- Operasi Pembagian Matriks Kiri

Operasi ini sama halnya dengan operasi pembagian matriks

kanan. Bedanya, syarat penggunaan matriks ini adalah jumlah baris matriks pembagi harus sama dengan jumlah baris matriks yang akan dibagi. Fungsi yang digunakan adalah fungsi mldivide(), kependekan dari matrix left divide. Misalkan matriks A dijadikan matriks invers kemudian dibagi dengan matriks B.

>> A = [1 1 3; 2 0 4; -1 6 -1] A = 1 1 3 2 0 4 -1 6 -1 >> B=[2;9;8]

47

B = 2 9 8 >> mldivide(A,B) ans = 15.5000 3.0000 -5.5000

48

BAB II

PEMROGRAMAN MATLAB

Bahasa pemrograman memiliki 3 pondasi struktur kendali,

yakni struktur kendali sekuensial, struktur kendali percabangan dan struktur kendali perulangan. Begitupun dengan bahasa pemrograman pada Matlab.

Penyusunan script dapat dilakukan di command window. Namun jika bermaksud untuk disimpan maka dapat dilakukan di command editor. Semua script akan tersimpan dengan ektension file m-file.

Cara untuk membuka command editor dapat melalui 3 cara yakni:

1. Click Home>New>Script 2. Menekan tombol Ctrl+N 3. Menulis edit pada Command Editor

2.1 Struktur Kendali Sekuensial

Struktur kendali sekuensial merupakan struktur kendali paling

sederhana yang mengandung proses tanpa adanya pengkondisian atau perulangan. Biasanya simbol yang digunakan pada flowchart berbentuk persegi panjang dan memiliki 2 anak panah.

Gambar 2.1 Simbol Process pada Flowchart Contoh Kasus 2.1

Hitung luas sebuah bangun datar jika diketahui panjang sebuah

bangun 5 satuan dan lebar 4 satuan.

49

Algoritma 2.1

Masukkan nilai Panjang Masukkan nilai Lebar Hitung Luas dengan: Luas=Panjang*Lebar

Segmen Program 2.1

>> Panjang=5; >> Lebar=4; >> Luas=Panjang*Lebar

2.2 Struktur Kendali Percabangan

Struktur kendali percabangan merupakan struktur kendali

pengkondisian. Struktur kendali ini menggunakan format if ... else ... end. Biasanya simbol yang digunakan pada flowchart berbentuk belah ketupat dan memiliki 3 anak panah yang terdiri dari inputan, output kondisi benar dan output kondisi salah.

Gambar 2.2 Simbol Decision pada Flowchart

Contoh Kasus 2.2

Pemberian diskon 10% dapat dilakukan jika total bayar

melebihi Rp 1.000.000,00. Total bayar merupakan hasil perkalian jumlah barang dan harga barang.

Algoritma 2.2

Yes

No

50

Masukkan nilai jumlah_barang Masukkan nilai harga_barang Hitung total_bayar dengan: total_bayar=jumlah_barang*harga_barang JIKA total_bayar > 1000000 MAKA discount = 10 total_akhir = total_bayar*(100-discount)/100 SEBALIKNYA total_akhir = total_bayar AKHIR_JIKA

Segment Program 2.2

Gambar 2.3 Contoh Penerapan Struktur Kendali Percabangan

dengan Hasil Kondisi Benar Selanjutnya kita coba dengan menginputkan jumlah barang

sebanyak 3 untuk menghasilkan kondisi salah yang berarti tidak mendapatkan diskon karena total bayar yang akan didapatkan kurang dari Rp 1.000.000,00.

51

Gambar 2.4 Contoh Penerapan Struktur Kendali Percabangan

dengan Hasil Kondisi Salah Perhatikan nilai total_akhir dan total_bayar pada

workspace antara gambar 2.3 dengan 2.4. Pada gambar 2.3 hasil total_akhir merupakan total_bayar yang sudah mendapatkan diskon 10%. Sedangkan pada gambar 2.4 hasil total_akhir sama dengan total_bayar karena total_bayar tidak lebih dari Rp 1.000.000,00.

2.3 Struktur Kendali Perulangan

Struktur kendali perulangan merupakan struktur kendali yang

bersifat iteratif hingga memenuhi suatu kondisi. Namun diperlukan kehati-hatian dalam membuat struktur kendali perulangan di command window. Jika script yang ditulis itu kurang tepat maka akan mengakibatkan proses yang berulang tanpa batas dan harus dilakukan interupsi. Jadi, lebih baik penulisan script struktur kendali perulangan pada command editor. Struktur kendali ini menggunakan format for... end. Simbol yang digunakan pada flowchart hampir sama dengan simbol desicion hanya saja bersifat iteratif.

52

Gambar 2.5 Simbol Iteration pada Flowchart Contoh Kasus 2.3

Tampilkan nilai 1 hingga n=3. Algoritma 2.3 Masukkan nilai n=3 ULANG i=1 hingga n Tampilkan nilai i AKHIR_ULANG

Segmen Program 2.3 >> n=3; >> for i=1:n i end

Selain penggunaan syntax for ... end untuk struktur kendali

perulangan juga dapat menggunakan syntax while ... end.

Yes

No

53

Gambar 2.6 Contoh Penerapan Struktur Kendali Perulangan

dengan Syntax while... end 2.4 Function Matlab

Function merupakan kumpulan script yang memiliki parameter

input dan output untuk ditampilkan. Penggunaan function pada Matlab sama halnya pada bahasa pemrograman lainnya yakni diberikan nama function tersebut. Simbol yang digunakan pada flowchart seperti pada gambar 2.7.

Gambar 2.7 Simbol Function pada Flowchart Format syntax pembuatan function diawali dengan function

dan diakhir dengan end. Pembuatan function akan disimpan dengan nama yang sama dengan nama function tersebut.

54

function y_output=nama_function(paramater_1, paramater_2, ...) ... ... end

Adapun cara untuk memanggil function tersebut dengan

format syntax sebagai berikut:

y_output=nama_function(paramater_1, paramater_2, ...)

Contoh Kasus 2.4

Buatlah fungsi luas bangun persegi panjang dan panggil fungsi

tersebut! Algoritma 2.4

Membuat function luas SUBRUTIN luas(panjang, lebar) luas=panjang*lebar NILAI_BALIK luas AKHIR_SUBRUTIN

Memanggil function luas Masukkan nilai panjang Masukkan nilai lebar Panggil function luas dengan: luas(panjang,lebar)

Segmen Program 2.4

Membuat function luas function y=luas(panjang,lebar) y=panjang*lebar end

55

Memanggil function luas panjang=5; lebar=4; y=panjang*lebar

56

BAB III

PENGENALAN CITRA DIGITAL Pada bab ini akan dibahas mengenai definisi citra digital,

teknik pengolahan citra digital untuk ekstraksi fitur (karakteristik atau pola) citra, pengklasifikasian dan pengelompokkan pola citra digital.

3.1 Definisi Citra Digital

Hampir setiap hari kita ditampakkan dengan gambar.

Penggunaan istilah gambar pada bidang ilmu ini disebut sebagai citra.

Citra digital merupakan sebuah fungsi 2 dimensi f(x,y). Variabel x dan y merupakan sebuah nilai yang menyatakan posisi koordinat. Variabel f merupakan amplitudo (x,y) atau lebih dikenal dengan intensitas (grey scale).

Citra digital diperoleh dari penangkapan citra oleh kamera dan dijadikan dalam bentuk nilai diskrit. Hasil penangkapan tersebut tersimpan dalam bentuk file berekstensi .jpeg, .png, .tiff, .bmp atau sebagainya.

Citra digital tersusun dari sejumlah nilai tingkat keabuan yang disebut sebagai pixel dan mengandung model warna RGB (Red

Green Blue) sehingga pada setiap citra digital memiliki 3 layer (lapisan), layer red (kemerah-merahan), layer green (kehijau-hijaun), dan layer blue (kebiru-biruan).

57

Gambar 3. 1 Representasi Citra Model RGB

(Sumber: http:\\www.wikipedia.com)

3.2 Jenis Citra

Citra digital terbagi menjadi 3 jenis yakni citra warna atau

lebih dikenal dengan citra grayscale, RGB (Red Green Blue), dan biner.

3.2.1 Citra Grayscale

Jumlah warna pada setiap layer adalah 256. Hal ini

dikarenakan citra gray memiliki jumlah bit 8 yang berarti 28=256 sehingga nilainya berada pada batasan 0 hingga 255. Jadi dapat dipastikan bahwa nilai intensitasnya tidak dapat kurang dari 0 dan lebih dari 255 dan ini hanya memiliki 1 layer. Ukuran file suatu citra dapat diketahui dengan panjang pixel, lebar pixel, dan bit

depth-nya. Bit depth adalah jumlah bit per pixel. Ketiga unsur tersebut dikalikan kemudian dikonversikan dalam satuan Byte

dengan cara dibagi dengan 8 dan nilai 1 Byte memiliki 8 bit. Contoh Kasus 3.1:

Terdapat sebuah citra/gambar berukuran 373x401 dengan bit

depth 24. Hitung ukuran file citra tersebut! Penyelesaian 3.1:

58

KBfilesize

KBfilesize

Bytesfilesize

xfilesize

2021.438

1024/786432

448719

8/24*512512

====

Gambar 3. 2 Contoh Jenis Citra Grayscale

Pada Matlab ukuran citra sudah dalam keadaan terkompresi

secara otomatis dengan menggunakan metode Huffman Coding (pada umumnya) sehingga ukuran lebih kecil. Hal bertujuan untuk penghematan penggunaan space pada drive komputer.

3.2.2 Citra Warna

Berbeda dengan citra grayscale, citra warna memiliki 3 layer.

Citra warna mempunyai beberapa macam ruang warna seperti warna RGB (Red Gree Blue), HSL (Hue, Saturation, Luminance), HSV (Hue, Saturation, Value), dan sebagainya. Karena citra tersebut memiliki 3 layer maka ukuran citra dikalikan 3 sehingga total bytes yang diperlukan 2.304KB atau 2.25 MB.

59

Gambar 3.3 Contoh Jenis Citra Warna RGB

Pixel-pixel dalam tiap layer tersebut direpresentasikan dalam bentuk matriks. Hal ini dapat dilihat ilustrasinya seperti pada gambar 3.4.

R: 225 G: 137 B: 125

R: 225 G: 137 B: 125

R: 225 G: 137 B: 125

R: 225 G: 137 B: 125

R: 225 G: 137 B: 125

R: 226 G: 138 B: 128

R: 225 G: 137 B: 125

R: 224 G: 136 B: 124

R: 225 G: 137 B: 125

R: 225 G: 137 B: 125

R: 228 G: 140 B: 128

R: 226 G: 138 B: 126

R: 225 G: 137 B: 125

R: 225 G: 137 B: 125

R: 226 G: 138 B: 126

R: 228 G: 140 B: 128

R: 227 G: 139 B: 127

R: 226 G: 138 B: 126

R: 226 G: 138 B: 126

R: 226 G: 138 B: 126

R: 227 G: 139 B: 127

R: 227 G: 139 B: 127

R: 227 G: 139 B: 127

R: 227 G: 139 B: 127

R: 226 G: 138 B: 126

125 125 125 125 125 125 125 126 125 124 125 125 126 125 137 137 137 137 137 137 137 126 138 137 136 137 137 138 137 126

60

225 225 225 225 225 225 225 138 126 226 225 224 225 225 226 225 138 228 226 225 225 226 228 226 138 228 227 226 226 226 228 227 227 227 227 227 226 227 227

Gambar 3.4 Contoh Ilustrasi Nilai Pixel pada Layer RGB 3.2.3 Citra Biner

Citra biner adalah citra yang hanya mengandung nilai pixel 0

dan 1 yang berarti hanya mengandung warna hitam dan putih saja. Nilai 0 mewakili warna hitam dan nilai 1 mewakili warna putih. Citra ini juga sama seperti pada citra grayscale yang hanya memiliki 1 layer. Pemberian nilai dan 1 berdasarkan threshold (batas ambang).

Gambar 3.5 Contoh Jenis Citra Warna Biner

3.3 Pembacaan Citra Digital

Citra digital yang akan diolah berupa file dengan berbagai

macam ektension seperti .jpeg, .png, .bmp, .tiff, dll. Dalam pemrograman Matlab dapat diketahui informasi citra tersebut dengan menggunkan function imfinfo(‘x’). Varibel x merupakan

61

nama file citra atau dapat ditulis lengkap bersama nama direktorinya.

Informasi yang disajikan antara lain: 1. Filename

2. FileModDate

3. FileSize

4. Format

5. FormatVersion

6. Width

7. Height

8. BitDepth

9. ColorType

10. FormatSignature

11. NumberOfSamples

12. CodingMethod

13. CodingProcess

14. Comment

Hasil dari pembacaan citra dituangkan dalam workspace

dengan tipe data struct. Tipe data struct merupakan kumpulan variabel-variabel yang berada dalam satu nama yang sama dan memiliki kaitan satu sama lain (Mahir Koding, 2016).

Gambar 3.6 Contoh Penggunaan function imfinfo untuk

Mengetahui Informasi suatu Citra

62

Citra tersebut memiliki nilai pixel dengan ukuran mxn dengan jumlah yang sama pada setiap layer-nya yakni layer Red, Green, dan Blue seperti yang diilustrikan pada gambar 3.1. Fungsi yang dapat digunakan untuk membaca nilai-nilai pixel pada citra tersebut adalah imread(‘x’).

Gambar 3.7 Contoh Penggunaan function imread untuk

Membaca Nilai Pixel suatu Citra Hasil pembacaan citra tersebut didapatkan bahwa citra tersebut

memiliki panjang dan lebar pixel 69 dan 85 pada setiap layer-nya. Nilai 3 merupakan jumlah layer yang dimiliki citra tersebut yakni layer Red, Green, dan Blue. Jika diinginkan menampilkan nilai pixel pada suatu layer maka dapat dituliskan script berikut:

>> x=imread('gambar_1.jpg'); >> R=x(:,:,1); %Nilai pixel pada layer Red >> G=x(:,:,2); %Nilai pixel pada layer Green >> B=x(:,:,3); %Nilai pixel pada layer Blue

3.4 Konversi Citra Digital

Pada umumnya citra digital merupakan citra jenis RGB.

Namun, dalam pengolahan citra digital masih diperlukan untuk pengkonversian jenis citra untuk pengolahan citra berikutnya, seperti konversi jenis citra RGB ke grayscale, RGB ke HSV, RGB ke biner.

63

3.4.1 Konversi Citra Warna RGB ke Grayscale

Konversi jenis citra warna RGB ke grayscale mempunyai 3

macam model, antara lain:

1. Lightness

Model ini membutuhkan nilai maksimum dan minimum nilai pixel pada layer-layer RGB. Konversi dengan menggunakan model ini dapat menggunakan persamaan 3.1.

( ) ( ) 5.0,,min,,max_ += BGRBGRlightgray ...(3.1) Keterangan:

BGR ,,max : nilai maksimum dari semua nilai pixel pada layer citra warna RGB

BGR ,,min : nilai minimum dari semua nilai pixel pada layer

citra warna RGB

2. Average

Model konversi ini merupakan rata-rata nilai pixel pada semua layer.

( )3

_BGR

avegray++

= .....................................(3.2)

R : semua nilai pixel pada layer Red G : semua nilai pixel pada layer Green

B : semua nilai pixel pada layer Blue

3. Luminosity

Setiap nilai pixel pada masing-masing layer akan dikalikan dengan nilai konstanta masing-masing.

( ) ( ) ( ) B 0.1140 + G 0.5870 + R 0.2989_ =lumgray

...........................................................................(3.3) Dari ketiga model ini, Matlab menggunakan model luminosity

untuk mengkonversikan citra warna RGB ke citra grayscale.

64

Fungsi yang dapat digunakan untuk konversi citra warna RGB ke citra grayscale adalah rgb2gray(x) dengan x adalah hasil pembacaan citra warna RGB.

Contoh Kasus 3.1:

Konversikan citra warna RGB ke grayscale dengan model

luminosity. Adapun ukuran citra warna RGB adalah 3x3 dengan rincian nilai pixel sebagai berikut:

=

225226228

224225226

255255255

R

,

=

=

125126128

124125126

126125125

,

137138140

136137138

137137137

BG

Penyelesaian 3.1:

=

125126128

124125126

126125125

0.1140

...+

137138140

136137138

137137137

0.5870 +

225226228

224225226

255255255

0.2989_ lumgray

+

+

=

141415

141414

141414

808182

808081

808080

676868

676768

676767

_ lumgray

=

162163165

161162163

162162162

_ lumgray

Hasil pembulatan

65

Penyelesaian 3.1:

>> img=imread('gambar_1.jpg'); >> im_gray=rgb2gray(img);

3.4.2 Konversi Citra Warna RGB ke Biner

Pengkonversian jenis ini tidak dapat dilakukan secara langsung

dari citra warna RGB ke biner. Perlu pengkonversian citra warna RGB ke grayscale terlebih dahulu untuk mendapatkan 1 layer. Fungsi yang dapat digunakan untuk konversi citra warna RGB ke biner adalah imbinarize(img_gray,T).

Variabel img_gray adalah hasil pembacaan citra grayscale sedangkan adalah T nilai threshold. Model pengkonversian citra ini mempunyai 2 pendekatan:

1. Global Image Thresholding

Pemberian nilai pixel 0 dan 1 tergantung threshold yang

ditentukan yang disimbolkan dengan huruf T pada umumnya.

( )

=Tyxf

Tyxfyxg

),(;0

),(;1,

.....................................(3.4) Keterangan:

),( yxf : Nilai pixel T : Nilai threshold yang ditentukan

Gambar 3.8 Contoh transformasi Citra Warna RGB ke Citra

Biner dengan Global Image Thresholding (Metode ‘Otsu)

66

Secara default, Matlab menggunakan pendekatan Global Image

Thresholding untuk konversi citra biner. Pada Matlab, untuk mengetahui nilai threshold dengan pendekatan ini dapat menggunakan fungsi graythresh(img_gray). Fungsi ini menggunakan metode ‘Otsu. Metode dengan mengamati histogram dari citra grayscale. Adapun langkah-langkahnya sebagai berikut:

a. Hitung histogram ternomalisasi citra.

1,...,3,2,1,0, −== LiMN

np i

i

....................................(3.5) Keterangan:

ip : nilai histogram L : jumlah level intensitas

in : jumlah pixel pada setiap intensitas M : jumlah baris matriks citra N : jumlah kolom matriks citra

b. Hitung jumlah kumulatif (cumulative sum) dari )(1 kP ,

untuk 1,...,3,2,1,0 −= Lk

( ) 1,...,3,2,1,0,0

1 −===

LkpkPk

ii

........................(3.6) Keterangan: k : jumlah pixel-pixel untuk tiap-tiap level intensitas.

ip : nilai histogram

1P : jumlah kumulatif Hitung rata-rata kumulatif (cumulative mean).

( ) =

−==k

ii Lkipkm

0

1,...,3,2,1,0, ......................(3.7)

Keterangan: )(km : rata-rata kumulatif.

Hitung rata-rata intensitas global.

67

==

1

0

L

iiG ipm

.........................................................(3.8)

Gm : rata-rata intensitas global. Hitung varian antar kelas (between-class variance).

)(1)(

)()()(

11

212

kPkP

kmkPmk G

B −−

= .................................(3.9)

Keterangan:

)(2kB : between-class variance

Pilih nilai threshold k* yakni indeks nilai varians antar kelas

maksimum ( ))(max 2kB . Apabila terdapat lebih dari 1 nilai k*

maka dapat dirata-ratakan untuk mendapatkan nilai threshold.

Hitung separability measurement, * pada k=k*.

2

2 )()(

G

B kk

=, dengan

( )−

=−=

1

0

22 1L

iiGG pm

.........(3.10) Contoh Kasus 3.2:

Sebuah citra grayscale berukuran 3x3. Konversikan citra

tersebut ke biner dengan menggunakan Metode ‘Otsu.

=

162163165

161162163

162162162

_ lumgray

Penyelesaian 3.2:

a. Hitung histogram ternomalisasi citra.

3,3 == NM 9=MxN

68

i in MxN

np i

i =

ip

Frekuensi

Norm_Hist

1 162 18 17,89 1 0,11

2 162 18 18 5 0,56

3 162 18 18,11 2 0,22

4 163 18,11 18,33 1 0,11

5 162 18 Total 9 1

6 261 17,89

7 165 18,33

8 163 18,11

9 162 18

b. Hitung jumlah kumulatif (cumulative sum) dari )(1 kP .

k ip ( )kP1 1 17,89 17,89

2 18 35,89

3 18 53,89

4 18 71,89

5 18 89,89

6 18 107,89

7 18,11 126,00

8 18,11 144,11

9 18,33 162,44

c. Hitung rata-rata kumulatif (cumulative mean).

k ( )kP1 )(km

69

1 17,89 17,89

2 35,89 26,89

3 53,89 35,89

4 71,89 44,89

5 89,89 53,89

6 107,89 62,89

7 126,00 71,91

8 144,11 80,93

9 162,44 89,99

d. Hitung rata-rata intensitas global. Segmen Program 3.2:

>> img_gray=uint8([162, 162, 162; 163, 162, 161;

165, 163, 162]) img_gray = 3×3 uint8 matrix 162 162 162 163 162 161 165 163 162 >> T=graythresh(img_gray) T = 0.6412 >> img_biner=imbinarize(img_gray,T) img_biner = 3×3 logical array 0 0 0 0 0 0 1 0 0

2. Locally Adaptive Image Thresholding

70

Penggunaan model Global Image Thresholding kadang kurang tepat. Bisa kemungkinan informasi penting di dalam citra menjadi hilang. Penggunaan model Locally Adaptive Image Thresholding dapat dibagi menjadi beberapa bagian kecil kemudian dilakukan pengambangan (thresholding) secara lokal. Threshold yang digunakan adalah nilai rata-rata pixel di antara pixel-pixel sekitarnya.

Gambar 3.9 Contoh Transformasi Citra Warna RGB ke Citra

Biner dengan Locally Adaptive Image Thresholding Contoh Kasus 3.3:

Sebuah citra grayscale berukuran 5x5. Konversikan citra

tersebut ke biner dengan menggunakan Locally Adaptive Image

Thresholding.

=

228227228229228

228225226228229

225224227227228

227228226227227

228230225226225

_ lumgray

Penyelesaian 3.3:

225 226 225 230 228 225 226 225 230 228

71

Gambar 3.10 Contoh Hasil Penggunaan Konversi Biner dengan Locally Adaptive Image Thresholding

Segmen Program 3.3:

>> img_gray=[225 226 225 230 228; 227 227 226 228 227; 228 227 226 224 225; 229 228 226 225 228; 228 229 228 227 228]; >> T=adaptthresh(img_gray) T = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 >> img_biner=imbinarize(img_gray,T) img_biner = 5×5 logical array 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

227 227 226 228 227 227 227 226 228 227

228 227 226 224 225 228 227 226 224 225

229 228 226 225 228 229 228 226 225 228

228 229 228 227 228 228 229 228 227 228

226,67 226,20 227,00 227,33 228,25

227,00 226,50 226,56 226,56 227,00

227,67 227,11 226,33 226,11 226,17

228,17 227,67 226,67 226,33 226,17

228,50 228,00 227,17 227,00 227,00

72

1 1 1 1 1 1 1 1 1 1

73

BAB IV

EKSTRAKSI FITUR DAN

PENGENALAN OBJEK CITRA

Meningkatnya jumlah korban kecelakaan lalu lintas akibat

jalan aspal berlubang semakin tinggi. Mayoritas korban adalah para pengendara kendaraan bermotor.

Kecelakaan dipicu karena pengendara tidak dapat menghindari adanya jalan aspal yang berlubang atau bergelombang. Jalan aspal berlubang atau bergelombang juga dipengaruhi oleh tingginya curah hujan.

Upaya untuk memperbaiki jalan aspal berlubang atau bergelombang juga didukung adanya bukti jalan aspal berlubang atau bergelombang yang memiliki jumlah banyak dan mengakibatkan kecelakaan lalu lintas.

Gambar 4.1 Ilustrasi Sebab-Akibat Adanya Jalan Aspal

Berlubang atau Bergelombang

Pengajuan pengadaan pekerjaan perbaikan jalan juga membutuhkan waktu. Sebagai antisipasi awal, upaya pihak pemerintah pada kasus ini adalah memberikan rambu-rambu lalu lintas atau rambu-rambu peringatan untuk lebih berhati-hati dalam

74

mengendara. Namun, terkadang pengendara tidak terlalu memperhatika adanya rambu-rambu tersebut sehingga terjadilah kecelakaan yang tidak diinginkan seperti mengalami luka ringan, luka berat hingga kematian.

Pengolahan citra digital merupakan bidang ilmu yang dapat mengelola data gambar untuk mengetahui karakteristik gambar tersebut yang selanjutnya gambar disebut sebagai citra. Pengenalan pola objek citra dapat diketahui dari fitur-fitur yang dimilikinya. Seperti halnya pendeteksian jalan aspal berlubang pemicu kecelakaan lalu lintas, fitur yang dapat digunakan adalah dengan tingkat kelengkungan dan luasyang dimiliki oleh jalan aspal berlubang. Adapun arsitektur sistem yang dapat digunakan sebagai acuan seperti pada gambar 4.1.

Gambar 4.2 Arsitektur Sistem Pendeteksian Jalan Aspal Berlubang Pemicu Kecelakaan Lalu Lintas

Citra input dapat berupa pengambilan foto dengan kamera atau

alat sejenisnya untuk menjadikan sebagai citra digital. Pembacaan citra digital untuk kasus ini dapat melalui command editor karena dalam pendeteksian jalan aspal berlubang memerlukan script yang relatif panjang. Citra input ini merupakan citra warna RGB yang bertipe data uint8 yang berarti setiap nilai pixelnya memiliki 8 bit.

img=imread(‘aspal_1’);

Citra Input Preprocessing

Ektraksi Fitur Klasifikasi

75

4.1 Pre-processing

Pre-processing merupakan tahap yang wajib dilakukan sebelum tahap esktraksi fitur. Tahap ini dapat berupa perbaikan citra digital.

Hasil pengambilan gambar dilakukan preprocessing terlebih dahulu seperti operasi perbaikan citra untuk mendapatkan kualitas citra yag lebih baik. Perbaikan citra dapat dlilakukan dengan 7 macam cara seperti pada bab 3 sebelumnya seperti smoothing, sharpening, geometrik dan sebagainya.

Pada penelitian yang telah dilakukan, peneliti menggunakan texture segmentation untuk mendapatkan tekstur citra dengan memanfaatkan fungsi rangefilt(img) untuk filter local range sebuah citra digital. Untuk img dapat berupa hasil pembacaan sebuah citra warna RGB.

>> img=imread( “gambar_1.jpg”) >> img_ran=rangefilt(img) >> imshowpair(img,img_ran,’Montage’) Parameter ’Montage’digunakan untuk menampilkan lebih dari

satu gambar dalam 1 frame. Hasil dari transformasi ini, citra hasil masih perlu dilakukan perbaikan citra. Tampak pada gambar 4.3 (b) masih terlihat bintik-bintik yang tidak diinginkan. Oleh karena itu, diperlukan operasi perbaikan citra.

(a) (b) Gambar 4.3 (a) Contoh Citra Warna RGB (b) Contoh Hasil

Transformasi Penggunaan Fungsi rangefilt()

76

Adapun operasi perbaikan citra yang diperlukan antara lain: konversi citra warna RGB ke cira biner, remove noise, dan morphology.

4.1.1 Konversi Citra Biner

Operasi ini diperlukan untuk memperjelas noise yang

mengganggu citra objek intinya. Hasil konversi citra biner, pixel berisi nilai 0 atau 1. Pemberian nilai pixel 0 dan 1 berdasarkan nilai batas ambang (threshold) yang diperoleh dari citra input. Pada umumnya, penetuan nilai threshold menggunakan metode ‘Otsu. Penggunaan metode ini dapat memanfaatkan fungsi graythresh().

t=graythresh(img_ran)

Ketika nilai threshold sudah didapatkan maka proses konversi

binarisasi citra dapat dilakukan. Fungsi yang dapat digunakan untuk operasi ini adalah imbinarize(img,t) dengan img adalah variabel citra warna grayscale dan t adalah nilai threshold yang dihasilkan menggunakan metode ‘Otsu.

img_bin=imbinarize(rgb2gray(img_ran),t)

Penentuan nilai threshold juga dapat ditentukan sendiri sehingga proses konversi tidak menggunakan fungsi imbinarize(img,t). Adapun algoritma yang dapat digunakan seperti Algoritma 4.1.

Algoritma 4.1:

Baca file citra warna RGB (img) Cek ukuran img dengan jumlah baris sebagai r dan jumlah kolom sebagai c. Tentukan nilai threshold (t) Ulang i=1 hingga r Ulang j=1 hingga c Jika img(i,j)>=t Maka img(i,j)=1 Sebaliknya

77

img(i,j)= Akhir_Jika Akhir_ulang Akhir_ulang

Segmen Program 4.1:

img=imread(‘img_1.jpg’); [r,c]=size(img); img_gray=rgb2gray(img); t=125; for i=1:r for j=1:c if img_gray(i,j)>=t img_gray(i,j)=1; else img_gray(i,j)=0; end end end

(a) (b)

Gambar 4.4 (a) Contoh Citra Hasil Penggunaan Fungsi rangefilt (b) Contoh Hasil Konversi Citra Biner

4.1.2 Removing Noise

Operasi ini digunakan untuk menghilangkan pixel-pixel yang

bukan termasuk objek inti citra. Tujuannya adalah memaksimalkan penampakkan objek citra inti. Fungsi yang dapat digunakan untuk operasi ini adalah bwareaopen(bw,p). Parameter bw adalah variabel citra biner sedangkan p adalah jumlah maksimal pixel suatu objek yang diinginkan untuk dihilangkan.

78

img_rem=bwareaopen(img_bin,5)

Fungsi tersebut digunakan untuk menghilangkan sekelompok

nilai pixel yang berjumlah kurang dari sama dengan 5 yang berarti nilai pixel dirubah menjadi nilai 1. Adapun ilustrasinya seperti pada gambar 4.5. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0

0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0

0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0

0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1

1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1

Gambar 4.5 Contoh Ilustrasi Nilai Pixel yang Harus di-remove

dengan p=5 Pada gambar 4.6 (b) tampak objek lebih jelas dibanding

gambar 4.6 (a) yang terdapat banyak bintik-bintik putih yang tidak diharapkan. Hasil removing noise ini masih perlu diperbaiki dengan melengkapi lubang-lubang yang terdapat pada objek. Operasi yang dibutuhkan untuk proses ini adalah morphology.

79

(a) (b)

Gambar 4.6 (a) Contoh Citra Input Biner (b) Contoh Hasil Removing Noise

4.1.3 Morphology

Pada Matlab, operasi ini mempunyai beraneka macam fungsi

dan kegunaannya seperti dilasi, erode, reconstruct, fill, dsb. Namun fungsi yang sangat dibutuhkan dalam hal ini adal pengisian nilai pixel terhadap objek yang berlubang maksudnya di dalam sekelompok nilai pixel terdapat nilai yang berbeda di dalamnya sehingga diperlukan pengisian nilai pixel yang sama di dalamnya seperti nilai pixel di pinggiran-pinggiran objek.

Fungsi yang dapat digunakan pada Matlab untuk operasi jenis ini adalah imfill(img_bin,'holes') dengan img_bin sebagai variabel citra biner dan parameter 'holes'.

80

0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Gambar 4.7 Contoh Ilustrasi Nilai Pixel yang Harus Diisi Sesuai

dengan Nilai Pixel sekitarnya Pemanfaatan fungsi ini akan mengjasilkan objek citra biner

yang tampak berlubang lebih terisi dengan nilai pixel. Adapun contoh hasil penggunaan fungsi imfill(img_bin,'holes') seperti pada gambar 4.8.

Gambar 4.8 (a) Contoh Citra Input Biner (b) Contoh Hasil

Penggunaan Operasi Morphology (imfill)

81

4.2 Ekstraksi Fitur Citra

Setelah didapatkan hasil citra input biner dari preprocessing

maka dapat dilakukan proses ekstraksi fitur citra. Jalan aspal berlubang/bergelombang pemicu kecelakaan lalu lintas, pada umumnya memiliki bentuk yang relatif mendekati bulat. Selain itu, luas dari jalan aspal berlubang/bergelombang relatif besar. Oleh karena itu, fitur yang digunakan dalam pendeteksian jalan aspal berlubang/bergelombang pemicu kecelakaan lalu lintas adalah fitur eccentricity dan luas dari citra objek.

4.2.1 Fitur Eccentricity

Fitur ini dapat digunakan untuk mengetahui tingkat kebulatan

suatu objek yang tergantung dari panjangnya diameter horizontal atau vertikal dari objek citra. Nilai eccentricity memiliki batasan nilai antara 0-1. Suatu objek dengan bentuk yang mendeketi bulat maka mendekati nilai eccentricity sebesar 1 dan sebaliknya.

2

2

1a

be −=

..............................................................(3.1) Keterangan: a : setengah dari panjang diameter terbesar dari kedua diameter

yakni horizontal dan vertikal b : setengah dari panjang diameter terkecil dari kedua

diameter yakni horizontal dan vertikal Diameter yang dimaksud adalah panjang nilai pixel objek citra.

Pada Matlab, istilah diameter disebut dengan MajorAxisLength dan MinorAxisLength.

Setelah didapatkan nilai MajorAxisLength dan MinorAxisLength maka dapat diketahui nilai eccentricity suatu objek citra. Namun, itu semua dapat menggunakan fungsi regionprops([paramaters]). Parameter ini meliputi

82

MajorAxisLength, MinorAxisLength, Area, Eccentricity,

BoundingBox, dan sebagainya. Contoh Kasus 4.1:

Hitung nilai eccenticity dari matriks citra input berikut:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0

0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Penyelesaian 4.1:

32/6 ==b 52/10 ==a

2

2

1a

be −=

2

2

5

31−=e

25

91−=e

8.0=e

b

a

83

4.2.2 Fitur Area (Luas Objek Citra)

Fitur ini juga melibatkan MajorAxisLength dan

MinorAxisLength seperti fitur eccentricity. Namun, persamaannya yang digunakan berbeda. Fitur area menambakan kontanta yang bernilai 3.1429. Satuan yang diperoleh dari perhitungan luas ini atau fitur area ini hanya jumlah nilai pixel dalam satuan luas.

= baL ......................................................... (3.2)

Contoh Kasus 4.2:

Hitung luas objek dari matriks citra input berikut:

0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0

0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0

Penyelesaian 4.2:

32/6 ==b 52/10 ==a = baL

1429.335 =L

Hasil luas yang didapatkan berdasarkan persamaan 3.2 mengalamai perbedaan dengan luas aslinya yakni 52 satuan luas

b

a

471429.47 ==L

84

(jumlah nilai pixel 1). Hal ini disebabkan karena sifatnya asumsi. Namun apabila di-ratio-kan relatif tidak berbeda jauh.

Contoh Kasus 4.3:

Tampilkan nilai ecentricity, area, dan julah objek sebuah citra

input dengan ketentuan: a. Threshold untuk binarisasi citra input dengan menggunakan

metode ‘Otsu. b. Jumlah minimal kumpulan pixel yang tidak diinginkan pada

proses remove noise adalah 5000. Segmen Program 4.3:

>> img=imread('jalan_aspal1.jpg'); >> img_ran=rangefilt(img); >> t=graythresh(img_ran); >> img_bin=imbinarize(rgb2gray(img_ran),t); >> img_rem=bwareaopen(img_bin,5000); >> img_mor=imfill(img_rem,'holes'); >> subplot(2,2,1) >> imshow(img) >> title('Citra Input') >> subplot(2,2,2) >> imshow(img_bin) >> title('Citra Biner') >> subplot(2,2,3) >> imshow(img_rem) >> title('Remove Noise') >> subplot(2,2,4) >> imshow(img_mor) >> title('Morphology') >> stats = regionprops('table',img_mor,'Area',’BoundingBox’,... 'Eccentricity') stats = 1×3 table Area Eccentricity 6929 0.95103

85

Pada variabel stats menghasilkan sebuah tabel dengan 1 baris dan 2 kolom Jumlah baris menunjukkan jumlah objek citra sehingga pada citra input ini terdapat 1 objek seperti tampak pada gambar 4.6. Sedangkan Area dan Eccentricity bernilai secara berurut 6929 dan 0.95103.

Gambar 4.9 Contoh Hasil Pre-processing Citra sebelum

Ekstraksi Fitur Area dan Eccentricity 4.3 Pengenalan Objek Citra

Metode yang dapat digunakan untuk mengenali pola objek

sangatlah bervariasi mulai dari tidak melibatkan neural network hingga melibatkannya. Namun, pengenalan objek dengan melibatkan neural network otomatis berkaitan dengan jumlah data training yang harus digunakan untuk menciptakan model classifier. Hal ini tentunya berpengaruh pada space dan time

complexity meskipun tingkat kevalidannya lebih baik. Pada sistem deteksi jalan aspal berlubang atau bergelombang

ini, digunakan klasifikasi dengan konsep If...Then...Else. Batasan Area yang digunakan sebagai acuan untuk mengklasifikasikan luas jalan aspal berlubang/bergelombang pemicu kecelakaan dapat ditentukan sendiri, begitupun tingkat kebulatan bentuknya (Eccentricity).

86

Contoh Kasus 4.4:

Seperti pada Contoh Kasus 4.3, tampilkan hasil deteksi jalan

aspal berlubang/bergelombang dengan pemberian garis kotak merah dengan ketentuan sebagai berikut:

a. 5000Area

b. 9.0tyEccentrici

Gambar 4.10 Contoh Citra Input Jalan Aspal

Berlubang/Bergelombang Pemicu Kecelakaan Lalu Lintas Segmen Program 4.4:

Segmen program sama seperti segmen program 4.3, hanya

ditambahkan beberapa script dan memanfaatkan function. Nama function-nya adalah deteksi_lubang dengan 4 parameter input (img_file, remnos, luas, lengkung) dan 1 paramater output stats).

function stats=deteksi_lubang(img_file,remnos,luas,lengkung) %% Dibuat oleh: Yesy Diah Rosita (2018) % img_file berisi nama file gambar citra warna RGB % remnos bernilai banyaknya maximal kumpulan pixel yang harus dihilangkan

87

% luas bernilai bilangan bulat, besarnya luas objek % lengkung bernilai 0 hingga 1, tingkat kebulatan objek img=imread(img_file); img_ran=rangefilt(img); t=graythresh(img_ran); img_bin=imbinarize(rgb2gray(img_ran),t); img_rem=bwareaopen(img_bin,remnos); img_mor=imfill(img_rem,'holes'); subplot(2,2,1); imshow(img); title('Citra Input'); subplot(2,2,2); imshow(img_bin); title('Citra Biner'); subplot(2,2,3); imshow(img_rem); title('Remove Noise'); subplot(2,2,4); imshow(img_mor); title('Morphology'); stats = regionprops('table',img_mor,'Area','Eccentricity', 'BoundingBox'); n=find(stats.Area>=luas & stats.Eccentricity>=lengkung); stats=stats(n,:); position=stats.BoundingBox; [r,c]=size(position); figure; imshow(img_mor); title('Hasil Deteksi'); axis on; xLimits = get(gca,'XLim'); yLimits = get(gca,'YLim'); hold on; for i=1:r rectangle('Position', position(i,:),... 'EdgeColor','r','LineWidth',2 ) end hold off; end

Adapun contoh pemanggilan function deteksi_lubang sebagai berikut:

>> deteksi_lubang('jalan_aspal1.jpg',5000,5000,0.9);

88

Gambar 4.11 Contoh Hasil Deteksi Jalan Aspal

Berlubang/Bergelombang Pemicu Kecelakaan Lalu Lintas

89

D A F T A R P U S T A K A Dulimarta, Hans S., Diktat Kuliah Pengolahan Citra, Jurusan

Teknik, Informatika ITB, 1997. G. Xu, J. Ma, F. Liu, X. Niu. (2008). Automatic recognition of

pavement surface crack based on BP neural network. International Conference on Computer and Electrical Engineering. Phuket.. 19–22.

Image Processing Toolbox User's Guide.

Retrieved June 10, 2018 from: http://matlab.izmiran.ru/help/toolbox/images/enhanc14.html.

J. Bray, B. Verma, Xue Li, W. He. (2006). A neural network

based technique for automatic classification of road cracks. IEEE International Joint Conference on Neural Network Proceedings. Vancouver, BC. 907–912.

Li S., Yuan C., Liu D., dan Cai H. (2016). Integrated Processing

of Image and GPR Data for Automated Pothole Detection. Journal of Computing in Civil Engineering. 30 (6).

N. Li, X. Hou, X. Yang, Y. Dong. (2009). Automation recognition

of pavement surface distress based on support vector machine. Second International Conference on Intelligent Networks and Intelligent Systems. Tianjin. 346–349.

Koch, C., and Brilakis, I. (2011). “Pothole Detection in Asphalt

Pavement Images.”. Adv. Eng. Inf., 25(3). Pages: 507–515. Koch, C., Jog, G. M., and Brilakis, I. (2013). Automated Pothole

Distress Assessment using Asphalt Pavement Video Data. J. Comput. Civ. Eng., 10.1061/(ASCE)CP.1943-5487.0000232, 370–378.

90

Kumbhar N., Mhetre D., Mujawar A, Khot S.T. (2016). Pothole

Detection Using Image Processing. International Journal For Technological Research In Engineering. 3(9). 1887-1889

Makkar, H., Pundir, A.. (2014). Image Analysis Using Improved

Otsu‘s Thresholding Method. International Journal on Recent and Innovation Trends in Computing and Communication. ISSN: 2321-8169. 2 (8). 2122 – 2126.

Mathwork Help Centre. Image Processing Toolbox. Retrieved

June 2, 2018 from: https://www.mathworks.com/help/images/index.html.

Suyanto. 2014. Artificial Intelligence: Searching, Reasoning,

Planning and Learning. Informatika. Bandung. ISBN: 978-602-1514-44-3.

Talaba,A. M. A., Huanga, Z., Xi, F., HaiMinga, L. (2015).

Detection crack in image using Otsu method and multiple filtering in image processing techniques. International Journal for Light and Electron Optics. 1-4.

Tedeschi A., Benedetto F. (2017). A real-time automatic

pavement crack and pothole recognition system for mobile Android-based devices . Advanced Engineering Informatics 32. 11–25.

WenWang H., Chen C.H., Cheng D.Y., Lin C.H., Lo C.C. A

Real-Time Pothole Detection Approach for Intelligent Transportation System. Mathematical Problems in Engineering. Article ID 869627. 7 pages.

Y.O. Ouma, J. Opudo, S. Nyambenya. (2015). Comparison of

fuzzy AHP and fuzzy TOPSIS for road pavement maintenance prioritization: methodological exposition and case study. Adv. Civil Eng.