• Tidak ada hasil yang ditemukan

BAB II LANDASAN TEORI

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB II LANDASAN TEORI"

Copied!
27
0
0

Teks penuh

(1)

6 BAB II

LANDASAN TEORI

2.1 Rekayasa Perangkat Lunak

2.1.1 Pengertian Rekayasa Perangkat Lunak

Untuk mengartikan Rekayasa Perangkat Lunak, dimulai dengan kata ‘rekayasa / engineering’, yang berarti menjadikan ada sesuatu yang sebelumnya tidak ada. Sedangkan kata perangkat lunak / software adalah aplikasi yang dibangun dengan program komputer dengan fungsi utama untuk melakukan otomatisasi proses bisnis dengan performa dan kegunaan yang telah terdeskripsikan dalam suatu dokumentasi bagi para penggunanya (Rizky, 32).

Perangkat lunak lebih merupakan elemen logika dan bukan merupakan elemen sistem fisik. Dengan demikian perangkat lunak memiliki ciri yang berbeda dengan perangkat keras, berikut ini adalah karakteristiknya (Pressman, 10).

a. Perangkat lunak dibangun dan dikembangkan, tidak dibuat dalam bentuk klasik.

b. Perangkat lunak tidak pernah usang.

c. Sebagian besar perangkat lunak dibuat secara costum-built, serta tidak dapat dirakit dari komponen yang sudah ada.

Rekayasa perangkat lunak (software engineering) adalah sebuah disiplin ilmu yang mencakup segala hal yang berhubungan dengan proses pengembangan perangkat lunak sejak dari tahap perancangan hingga tahapan implementasi serta pasca implementasi sehingga siklus hidup perangkat lunak dapat berlangsung secara efisien dan terukur (Rizky, 20)

2.1.2 Tujuan Rekayasa Perangkat Lunak

Menurut Pressman (23) bahwa tujuan rekayasa perangkat lunak adalah menyediakan sebuah kerangka kerja guna membangun perangkat lunak dengan kualitas yang lebih tinggi.

(2)

2.1.3 Metodologi Pengembangan Perangkat Lunak

Metodologi pengembangan perangkat lunak atau disebut juga model proses atau paradigma rekayasa perangkat lunak adalah suatu strategi pengembangan yang memadukan proses, metode dan perangkat.

Dalam pengembangan perangkat lunak dikenal lapisan perangkat lunak (Pressman, 28) yaitu merupakan suatu teknologi berlapis yaitu proses, metode dan alat bantu. Fokus kualitas sebagai dasar utamanya. Lapisan rekayasa perangkat lunak dapat dilihat pada Gambar 2.1

Gambar 2.1 Lapisan rekayasa perangkat Lunak (Pressman, 28)

Dari gambar lapisan tersebut, terlihat sangat jelas bahwa pondasi utama rekayasa perangkat lunak adalah kualitas dari perangkat lunak itu sendiri. Dan untuk mencapai kualitas yang diinginkan tersebut dibutuhkan sebuah proses dari pengembangan perangkat lunak yang saling mendukung antar KPA (Key Process Area). KPA merupakan langkah-langkah kunci yang secara strategis menjadi langkah penting dalam pengembangan perangkat lunak.

Sedangkan yang dimaksud metode dalam lapisan tersebut adalah langkah-langkah teknis yang merupakan implementasi dari lapisan proses. Dalam lapisan ini di dalamnya terdapat pelaksanaan analisa, perancangan, implementasi dan pengujian. Sehingga dapat dikatakan bahwa lapisan ini merupakan lapisan pengerjaan dari perangkat lunak itu sendiri.

Tools / alat bantu adalah perangkat yang bersifat otomatis dan manual yang berfungsi mendukung tiap tahap pengembangan perangkat lunak. Alat bantu tersebut tidak terbatas pada bahasa pemrograman dan basis data, tetapi juga alat bantu untuk perangcangan perangkat lunak.

(3)

2.1.4 Tahapan Pengembangan Perangkat Lunak

Pressman (30) menyatakan bahwa usaha yang berhubungan dengan rekayasa perangkat lunak dikategorikan dalam tiga fase umum yaitu:

1. Fase definisi (Definition phase) berfokus pada “apa” (what), dimana pada definisi ini pengembang perangkat lunak harus mengidentifikasi informasi apa yang akan diproses , fungsi dan unjuk kerja apa yang dibutuhkan, tingkah laku sistem seperti apa yang diharapkan, interface apa yang akan dibangun, batasan desain apa yang ada, dan kriteria validasi apa yang dibutuhkan untuk mendefinisikan sistem yang sukses. Kebutuhan (requirement) kunci dari sistem dan perangkat lunak yang didefinisikan. Metode yang diaplikasikan selama fase definisi berbeda, tergantung pada paradigma rekayasa perangkat lunak yang diaplikasikan. Ada tiga tugas utama yang berbeda dalam bentuk yang sama: (a) sistem atau rekayasa informasi, (b) perencanaan proyek perangkat lunak, (c) analisis kebutuhan.

2. Fase pengembangan (Development phase) berfokus pada how (bagaimana), yaitu di mana selama masa pengembangan perangkat lunak, teknisi harus mendefinisikan bagaimana data dikonstruksikan, bagaimana fungsi-fungsi diimplementasikan sebagai sebuah arsitektur perangkat lunak, bagaimana detail prosedur akan diimplementasikan, bagaimana interface ditandai (dikarakterisasikan), bagaimana rencana akan diterjemahkan ke dalam bahasa pemrograman (atau bahasa non-prosedural), serta bagaimana pengujian dilakukan. Ada tiga tugas teknis khusus yang harus selalu ada pada fase ini yaitu: (a) rancangan perangkat lunak (b) pemunculan kode (c) dan pengujian perangkat lunak.

3. Fase pemeliharaan (Maintenace phase) berfokus pada perubahan (change) yang dihubungkan dengan koreksi kesalahan, penyesuaian yang dibutuhkan ketika lingkungan perangkat lunak berkembang, serta perubahan sehubungan yang disebabkan oleh perubahan kebutuhan pelanggan. Fase pemeliharaan mengaplikasikan lagi langkah-langkah pada fase definisi dan pengembangan, tetapi semuanya tetap tergantung pada konteks perangkat lunak yang ada. Ada

(4)

empat tipe perubahan yang terjadi selama masa fase pengembangan, yaitu: (1) koreksi (2) adaptasi (3) perkembangan dan (4) pencegahan

2.1.5 Model Proses Pengembangan Perangkat Lunak Waterfall

Untuk menyelesaikan masalah aktual di dalam sebuah seting industri, rekayasa perangkat lunak atau tim perekayasa harus menggabungkan strategi pengembangan yang melingkupi lapisan proses, model dan alat-alat bantu. Strategi ini sering diacukan sebagai model proses atau paradigma rekayasa perangkat lunak (Pressman, 35).

Dalam tugas akhir ini pengembangan perangkat lunak menggunakan model sekuensial linier (waterfall) karena paradigma ini memberikan template dimana metode analisis, perancangan, pengkodean, pengujian dan pemeliharaan bisa dilakukan. Urutan proses tersebut sesuai dengan urutan yang dilakukan dalam tugas akhir ini.

Sekuensial linier ( atau disebut juga “clasic life circle” atau “waterfall model”) mengusulkan sebuah pendekatan kepada perkembangan perangkat lunak yang sistematik dan sekuensial yang mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode, pengujian dan pemeliharaan. Model sekuensial liner melingkupi aktivitas-aktivitas sebagai berikut (Pressman, 37):

a. Rekayasa dan pemodelan sistem / informasi.

Karena perangkat lunak selalu merupakan bagian dari sebuah sistem yang lebih besar, kerja dimulai dengan membangun syarat dari semua elemen sistem dan mengalokasikan beberapa subset dari kebutuhan ke perangkat lunak tersebut. Pandangan sistem ini penting ketika perangkat lunak harus berhubungan dengan elemen-elemen lain seperti perangkat lunak, manusia, dan database. Rekayasa informasi mencakup juga pengumpulan pada tingkat bisnis dan strategis dan tingkat area bisnis.

b. Analisis kebutuhan perangkat lunak.

Proses pengumpulan kebutuhan diintensifkan dan difokuskan, khususnya pada perangkat lunak. Untuk memahami sifat program yang dibangun, perekayasa perangkat lunak (analis) harus memahami domain informasi, tingkah laku,

(5)

unjuk kerja dan antarmuka (inteface) yang diperlukan. Kebutuhan baik untuk sistem maupun perangkat lunak didokumentasikan dan dilihat lagi dengan pelanggan.

c. Desain

Desain perangkat lunak adalah proses multi langkah yang berfokus pada empat atribut sebuah program yang berbeda, yaitu (1) struktur data (2) arsitektur perangkat lunak (3) representasi interface (4) detil (algoritma) prosedural. Proses desain menerjemahkan syarat / kebutuhan ke dalam sebuah representasi perangkat lunak yang dapat diperkirakan demi kualitas sebelum dimulai pemunculan kode. Sebagaimana persyaratan, desain didokumentasikan dan menjadi bagian dari konfigurasi perangkat lunak. d. Generasi kode.

Desain harus diterjemahkan dalam bentuk mesin yang bisa dibaca. Langkah pembuatan kode melakukan tugas ini. Jika desain dilakukan dengan cara yang lengkap, pembuatan kode dapat diselesaikan secara mekanis.

e. Pengujian

Sekali kode dibuat pengujian program dimulai. Proses pengujian berfokus pada logika internal perangkat lunak, memastikan bahwa semua pernyataan sudah diuji, dan pada eksternal fungsional yaitu mengarahkan pengujian untuk menemukan kesalahan-kesalahan dan memastikan bahwa input yang dibatasi akan memberikan hasil aktual yang sesuai dengan hasil yang dibutuhkan. f. Pemeliharaan

Perangkat lunak akan mengalami perubahan setelah disampaikan kepada pelanggan (perkecualian yang mungkin adalah perangkat lunak yang dilekatkan). Perubahan terjadi karena kesalahan-kesalahan ditentukan, karena perangkat lunak harus disesuaikan untuk mengakomodasi perubahan-perubahan di dalam lingkungan eksternalnya.(contohnya perubahan-perubahan yang dibutuhkan sebagai akibat dari perangkat peripheral atau sistem operasi yang baru), atau karena pelanggan membutuhkan perkembangan fungsional atau unjuk kerja. Pemeliharaan perangkat lunak mengaplikasikan lagi setiap fase program sebelumnya dan tidak membuatnya baru lagi. Gambar aktivitas atau tahapan Model Sekuensial Linear dapat dilihat pada gambar 2.2.

(6)

Gambar 2.2 Model Sekuensial Linear (Pressman, 37)

2.1.6 Pengujiaan

.Pengujian perangkat lunak adalah sebuah proses yang diejawantahkan sebagai siklus hidup dan merupakan bagan dari proses rekayasa perangkat lunak secara terintegrasi demi memastikan kualitas dari perangkat lunak serta memenuhi kebutuhan teknis yang telah disepakati dari awal (Rizky, 237)

Secara teoritis, pengujian dapat dilakukan dengan berbagai tipe dan teknik. Namun secara garis besar, terdapat dua jenis tipe pengujian yang paling umum digunakan di dalam lingkup rekayasa perangkat lunak yaitu white box dan black box (Rizky, 259).

1. White box, secara umum merupakan jenis pengujian yang lebih berkonsentrasi terhadap “isi”.dari perangkat lunak itu sendiri. Jenis ini lebih berkonsentrasi kepada source code dari perangkat lunak yang dibuat sehingga membutuhkan proses pengujian yang lebih lama dan lebih “mahal” dikarenakan membutuhkan ketelitian dari para tester serta kemampuan teknis pemrograman dari para pengujinya (Rizky, 261). Beberapa teknik yang terdapat dalam pengujian jenis ini adalah: (1) Decision (branch) Coverage (2) Condition Coverage (3) Path Analysis (4) Execution Time (5) Algorithm Analysis.

2. Black box, adalah tipe pengujian yang memperlakukan perangkat lunak tidak diketahui kinerja internalnya. Sehingga para penguji memandang perangkat lunak layaknya sebuah “kotak hitam” yang tidak penting dilihat isinya, tapi cukup dikenai pengujian dari luar. Jenis ini hanya memandang perangkat

(7)

lunak dari sisi spesifikasi dan kebutuhan yang telah didefinisikan pada saat awal perancangan (Rizky, 264). Beberapa teknik pengujian yang tergolong dalam tipe ini adalah:

a. Equivalence Partitioning. Pada teknik ini, tiap inputan data dikelompokan ke dalam grup tertentu, yang kemudian dibandingkan outputnya.

b. Boundary Value Analysis. Teknik ini sangat umum digunakan pada saat sebuah perangkat lunak selesai dikerjakan. Pada teknik ini dilakukan inputan yang melebihi dari batasan sebuah data. Sebagai contoh, untuk sebuah inputan harga barang, maka diuji dengan menggunakan angka negatif.

c. Case Effect Graph. Dalam teknik ini, dilakukan pengujian yang menghubungkan sebab dari sebuah inputan dan akibatnya pada output yang dihasilkan.

d. Random Data Selection. Teknik ini berusaha melakukan proses inputan data dengan menggunakan nilai acak. Dari hasil inputan tersebut kemudian dibuat sebuah tabel yang menyatakan validitas dari output yang dihasilkan. e. Feature Test. Pengujian dilakukan terhadap spesifikasi dari perangkat lunak yang telah selesai dikerjakan. Misalkan pada perangkat lunak Sistem Informasi Akademik, dapat dicek apakah fitur untuk melakukan entri nilai telah tersedia.

.

2.2 Unifield Modelling Language (UML)

Unified Modeling Language selanjutnya disebut UML adalah sebuah “bahasa” yang telah menjadi standar dalam industri untuk visualisasi, merancang, dan mendokumentasikan sistem perangkat lunak. UML menawarkan sebuah standar untuk merancang sebuah model sistem (Dharwiyanti dan Wahono, 2).

Dengan menggunakan UML kita dapat membuat model untuk semua jenis perangkat lunak, dimana aplikasi tersebut dapat berjalan pada perangkat keras, sistem operasi, dan jaringan apapun serta ditulis dalam bahasa pemrograman apapun. Tetapi karena UML juga menggunakan kelas dan operasi pada konsep dasarnya maka lebih cocok untuk pembuatan perangkat lunak dalam bahasa

(8)

berorientasi objek seperti C++, Java, C# atau VBNet. Walaupun demikian UML tetap dapat digunakan untuk modeling aplikasi prosedural dalam VB atau C.

Seperti bahasa-bahasa lainnya, UML mendefinisikan notasi dan syntax / semantik. Notasi UML merupakan sekumpulan bentuk khusus untuk menggambarkan berbagai diagram perangkat lunak. Setiap bentuk memiliki makna tertentu dan syntax UML mendefinisikan bagaimana bentuk-bentuk tersebut dapat dikombinasikan. UML terdiri dari 13 jenis diagram seperti tertulis dalam Tabel 2.1.

Tabel 2.1 Diagram UML 2.0 (Dennis et al, 31)

No Diagram Kegunaan

1 Class Menggambarkan struktur dan relasi antar kelas yang dimodelkan dalam sistem.

2 Object Menggambarkan relasi antar objek yang dimodelkan dalam sistem.

3 Package Gabungan antara elemen UML

4 Deployment Menampilkan arsitektur fisik dari sistem

5 Component Menggambarkan relasi fisik antara komponen software.

6 Composite Structure Meggambarkan struktur internal kelas, 7 Activity Menggambarkan aliran peoses bisnis.

8 Sequence Memodelkan behavior objek dalam use case, fokus pada waktu melakukan kegiatan.

9 Communication Memodelkan behavior objek dalam use case, fokus pada komunikasi yang dilakukan antar objek.

10 Interaction Overview Menggambarkan ikhtisan aliran kontrol proses. 11 Timing Menggambarkan interaksi antar objek, lebih

menekankan pada waktu

12 State Machine Memodelkan perilaku objek didalam sistem.

13 Use Case Menangkap kebutuhan bisnis sistem dan menggambarkan interaksi antara sistem dengan lingkungan

(9)

Pada laporan tugas akhir ini diagram UML yang akan dibahas adalah Diagram use case , activity diagram, class diagram.

2.2.1 Diagram Use Case

Diagram use case menggambarkan fungsionalitas yang diharapkan dari sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Diagram use case dapat sangat membantu bila kita sedang menyusun requirement sebuah sistem, mengkomunikasikan rancangan kita dengan klien, dan merancang test case untuk semua feature yang ada pada sistem.

Sebuah use case merepresentasikan sebuah interaksi antara aktor dengan sistem. Use case merupakan sebuah pekerjaan tertentu, misalnya login ke sistem, membuat sebuah daftar belanja, dan sebagainya. Seorang / sebuah aktor adalah sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk melakukan pekerjaan tertentu. Sebuah use case dapat men-include fungsionalitas use case sebagai bagian dari proses dirinya. Sebuah use case juga dapat meng-extend use case lain dengan behaviour-nya sendiri. Sementara hubugan generalisasi antar use case menunjukan bahwa use case yang satu merupakan spesialisasi dari yang lain. (Dharwiyanti dan Wahono, 4). Gambar 2.3 menampilkan contoh sebuah diagram use case.

(10)

Gambar 2.3 Contoh diagram Use Case (Dharwiyanti dan Wahono, 5).

2.2.2 Activity Diagram

Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses pararel yang mungkin terjadi pada beberapa eksekusi (Dharwiyanti dan Wahono, 7).Gambar 2.4 menampilkan contoh activity diagram

(11)

flow / edge Menerima Pesanan Mengisi Pesanan Mengirim Invoice Mengisi Pesanan Mengisi Pesanan Menerima Pembayaran Menutup Pesanan node awal action join akhir kegiatan percabangan keputusan [else] [priority oe=rder] fork

Gambar 2.4 Contoh activity diagram sederhana (Fowler, 168).

2.2.3 Class Diagram

Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut / properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metode / fungsi)

Class diagram menggambarkan struktur dan deskripsi class, package, dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain (Dharwiyanti dan Wahono, 5).

(12)

Gambar 2.5 Contoh class diagram (Dharwiyanti dan Wahono, 5).

2.3 Citra

Secara harfiah citra (image) adalah gambar pada bidang dua dimensi. Ditinjau dari sudut pandang matematis, citra merupakan fungsi menerus (continue) dari intensitas cahaya pada bidang dua dimensi. Sumber cahaya menerangi objek, objek memantulkan kembali sebagian dari berkas cahaya tersebut. Pantulan cahaya ini ditangkap oleh alat-alat optik, misalnya mata pada manusia, kamera, pemindai (scanner), dan sebagainya, sehingga bayangan objek yang disebut citra tersebut terekam (Munir, 2).

Citra dapat dikelompokan menjadi dua bagian yaitu citra diam (still images) dan citra bergerak (moving images). Citra diam adalah citra tunggal yang tidak bergerak. Gambar 2.1 adalah contoh citra diam. Sedangkan citra bergerak adalah rangkaian citra diam yang ditampilkan secara beruntun (sekuensial) sehingga memberi kesan mata kita sebagai gambar bergerak. Setiap citra di dalam rangkaian itu disebut frame (Munir, 2).

(13)

Gambar 2.1. Citra diam (Munir, 2)

2.3.1 Model Citra

Secara matematis fungsi intensitas cahaya pada bidang dua dimensi disimbolkan dengan f(x,y), yang dalam hal ini:

(x,y) : koordinat pada bidang dua dimensi.

f(x,y) : intensitas cahaya (brightness) pada titik (x,y).

Karena cahaya merupakan bentuk energi, maka intensitas cahaya bernilai antara 0 sampai dengan tak terhingga.

0 ≤ f(x,y) < ∞

(14)

2.3.2 Digitalisasi Citra

Agar dapat diolah dengan komputer digital, maka suatu citra harus direpresentasikan secara numerik dengan nilai-nilai diskrit. Representasi citra dari fungsi menerus menjadi nilai-nilai diskrit disebut digitalisasi. Citra yang dihasilkan inilah yang disebut citra digital (digital image). Pada umumnya citra digital berbentuk empat persegi panjang, dan dimensi ukurannya dinyatakan sebagai tinggi x lebar (atau lebar x panjang) (Munir,18).

Citra digital yang berukuran N x M lazim dinyatakan dengan matriks yang berukuran N baris dan M kolom sebagai berikut:

(

)

            − − − − = ) 1 , 1 ( ) 1 , 1 ( ) 0 , 1 ( . ) , 1 ( ) 1 , 1 ( ) 0 , 1 ( ) , 0 ( ) 1 , 0 ( ) 0 , 0 ( , M N f N f N f M f f f M f f f y x f K M M M M K K

Indeks baris (i) dan indeks kolom (j) menyatakan suatu koordinat titik pada citra, sedangkan f(i,j) merupakan intensitas (derajat keabuan) pada titik (i,j)(Munir,19).

2.3.3 Pengolahan Citra

Pengolahan citra (image processing) adalah pemrosesan citra, khususnya dengan menggunakan komputer, menjadi citra lain yang kualitasnya lebih baik. Hal ini bertujuan agar citra yang mengalami gangguan mudah diinterprestasi (baik oleh manusia maupun komputer)

Umumnya, operasi-opersasi pada pengolahan citra diterapkan pada citra bila:

1. perbaikan atau modifikasi citra perlu dilakukan untuk meningkatkan kualitas penampakan atau untuk menonjolkan beberapa aspek informasi yang terkandung dalam citra.

2. elemen di dalam citra perlu dikelompokan, dicocokkan, atau diukur. 3. sebagian citra perlu digabung dengan bagian citra yang lain.

Di dalam bidang komputer, sebenarnya ada tiga bidang studi yang berkaitan dengan data citra, namun tujuan ketiganya berbeda, yaitu:

(15)

1. Grafika Komputer (computer graphics). 2. Pengolahan Citra (image processing).

3. Pengenalan Pola (pattern recognition / image interpretation). Hubungan antar ketiganya ditunjukan pada Gambar 2.3

Gambar 2.3 Tiga bidang studi yang berkaitan dengan citra (Munir, 4).

2.4 Computer Vision

Terminologi lain yang berkaitan erat dengan pengolahan citra adalah computer vision atau machine vision. Pada hakikatnya, computer vision mencoba meniru cara kerja sistem visual manusia (human vision). Human vision sesungguhnya sangat kompleks. Manusia melihat objek dengan indera penglihatan (mata), lalu citra objek diteruskan ke otak untuk diinterpretasi sehingga manusia mengerti objek apa yang tampak dalam pandangan matanya. Hasil intepretasi ini mungkin digunakan untuk pengambilan keputusan.(Munir, 7)

Computer vision merupakan proses otomatis yang mengintegrasikan sejumlah besar proses untuk persepsi visual, seperti akuisisi citra, pengolahan citra, klasifikasi, pengenalan (recognition) dan membuat keputusan.

Proses-proses didalam computer vision dapat dibagi menjadi tiga aktivitas:

1. Memperoleh atau mengakuisisi citra digital.

2. Melakukan teknik komputasi untuk memproses atau memodifikasi data citra (operasi-operasi pengolahan citra)

(16)

3. Menganalisis dan mengintepretasikan citra dan menggunakan hasil pemrosesan untuk tujuan tertentu, misalnya memandu robot, mengontrol peralatan, memantau proses manufaktur dan lain-lain.

2.5 Pengenalan Wajah

Pengenalan wajah adalah suatu metode pengenalan yang berorientasi pada wajah. Pengenalan ini dapat dibagi menjadi dua bagian yaitu dikenali atau tidak dikenali, setelah dilakukan perbandingan dengan pola yang sebelumnya disimpan di dalam database.(Marti, 2). Secara garis besar pengenalan wajah terdiri dari tiga proses utama (Saragih, 2007), yaitu: (a) Deteksi wajah (face detection) (b) Ekstraksi ciri / wajah (face / feature extraction) (c) Pengenalan wajah (face recognition).

Secara umum sistem pengenalan citra wajah dibagi menjadi dua jenis, yaitu sistem feature base dan sistem image based. Pada sistem pertama digunakan fitur yang diekstrasi dari komponen citra wajah (mata, hidung, mulut, dll) yang kemudian hubungan antara fitur-fitur tersebut dimodelkan secara geometris, contohnya Hidden Markov Model dan Dynamic Link Achitecture. Sedangkan sistem kedua menggunakan informasi mentah dari piksel citra yang kemudian direpresentasikan dalam metode tertentu, misalnya principal component analysis (PCA), transformasi wavelet yang kemudian digunakan untuk klasifikasi identitas citra (Al Fatta, 10).

Penelitian tentang deteksi dan pengenalan wajah telah dilakukan sebelumnya, antara lain dengan menggunakan algoritma Eigenface (Turk dan Pentland, 1991), dengan distribusi Gaussian dan Clusterring (Sung dan Poggio, 1994), dengan Support Vektor Machine (Osuna dkk, 2007) dan dengan metode Statistic dan Wavelet (Schneiderman, 2000) (Marito, 17).

2.5.1 Deteksi Wajah

Salah satu kunci sukses dalam pengenalan wajah adalah deteksi wajah yang akurat karena gambar wajah yang terdeteksi akan sangat mempengaruhi

(17)

dalam proses pengenalannya. Langkah pertama dari pengenalan wajah secara otomatis adalah mendeteksi keberadaan wajah dari gambar masukan. Ada beberapa metode yang dapat digunakan untuk mendeteksi wajah misalnya segmentasi warna kulit dan metode Viola – Jones. Pada tugas akhir ini akan menggunakan metode yang terakhir.

2.5.1.1 Algoritma Viola - Jones

Salah satu metode pendeteksian wajah yang paling banyak dipakai adalah metode yang dipublikasikan oleh Paul Viola dan Michael Jones tahun 2001. Umumnya disebut metode Viola-Jones. Pendekatan untuk mendeteksi objek dalam gambar menggabungkan empat konsep utama :

• Fitur segi empat sederhana yang disebut fitur Haar. • Integral image untuk pendeteksian fitur secara cepat. • Metoda machine learning AdaBoost.

• Pengklasifikasi bertingkat (Cascade classifier) untuk menghubungkan banyak fitur secara efisien. (Viola-Jones dalam Arihutomo, Mukhlas: 2010)

Gambar 2.4 Contoh fitur Haar yang digunakan Viola-Jones

Fitur yang digunakan oleh Viola dan Jones didasarkan pada Wavelet Haar. Wavelet Haar adalah gelombang tunggal bujur sangkar (satu interval tinggi dan satu interval rendah ). Untuk dua dimensi, satu terang dan satu gelap. Selanjutnya kombinasi-kombinasi kotak yang digunakan untuk pendeteksian objek visual yang lebih baik disebut fitur Haar, atau fitur Haarlike, seperti pada Gambar 2.4 di atas menunjukkan fitur yang digunakan dalam pendektesian citra wajah oleh Viola dan Jones. Adanya fitur Haar ditentukan dengan cara mengurangi rata-rata piksel pada daerah gelap dari rata-rata piksel pada daerah terang. Jika nilai perbedaannya itu diatas nilai ambang atau treshold, maka dapat dikatakan bahwa fitur tersebut ada.

(18)

Untuk menentukan ada atau tidaknya dari ratusan fitur Haar pada sebuah gambar dan pada skala yang berbeda secara efisien, Viola dan Jones menggunakan satu teknik yang disebut Integral Image. Pada umumnya, pengintegrasian tersebut berarti menambahkan unit-unit kecil secara bersamaan. Dalam hal ini unit-unit kecil tersebut adalah nilai-nilai piksel. Nilai integral untuk masing-masing piksel adalah jumlah dari semua piksel-piksel dari atas sampai bawah. Dimulai dari kiri atas sampai kanan bawah, keseluruhan gambar itu dapat dijumlahkan dengan beberapa operasi bilangan bulat per piksel

(a) (b) Gambar 2.5 Integral image

Seperti yang ditunjukkan oleh Gambar 2.5(a) di atas setelah pengintegrasian, nilai pada lokasi piksel (x,y) berisi jumlah dari semua piksel di dalam daerah segi empat dari kiri atas sampai pada lokasi (x,y) atau daerah yang diarsir. Untuk menentukan nilai rata-rata piksel pada area segiempat (daerah yang diarsir) ini dapat dilakukan hanya dengan membagi nilai pada (x,y) oleh area segiempat. Untuk mengetahui nilai piksel untuk beberapa segiempat yang lain missal, seperti segiempat D pada gambar 2.5(b) di atas dapat dilakukan dengan cara menggabungkan jumlah piksel pada area segiempat A+B+C+D, dikurangi jumlah dalam segiempat A+B dan A+C, ditambah jumlah piksel di dalam A. Dengan, A+B+C+D adalah nilai dari integral image pada lokasi 4, A+B adalah nilai pada lokasi 2, A+C adalah nilai pada lokasi 3, dan A pada lokasi 1. Sehingga hasil dari D dapat dikomputasikan D = (A+B+C+D)-(A+B)-(A+C)+A.

Untuk memilih fitur Haar yang spesifik yang akan digunakan dan untuk mengatur nilai ambangnya (threshold), Viola dan Jones menggunakan sebuah metode machine learning yang disebut AdaBoost. AdaBoost menggabungkan banyak classifier lemah untuk membuat sebuah classifier kuat. Lemah disini berarti urutan filter pada classifier hanya mendapatkan jawaban benar lebih sedikit. Jika keseluruhan classifier lemah digabungkan maka akan menjadi

(19)

classifier yang lebih kuat. AdaBoost memilih sejumlah classifier lemah untuk disatukan dan menambahkan bobot pada setiap classifier, sehingga akan menjadi classifier yang kuat.

Viola Jones menggabungkan beberapa AdaBoost classifier sebagai rangkaian filter yang cukup efisien untuk menggolongkan daerah image. Masing-masing filter adalah satu AdaBoost classifier terpisah yang terdiri classifier lemah atau satu filter Haar.

Gambar 2.6 Cascade classifier

Threshold yang dapat diterima untuk masing-masing level filter di set rendah. Selama proses pemfilteran, bila ada salah satu filter gagal untuk melewatkan sebuah daerah gambar, maka daerah itu langsung digolongkan sebagai bukan wajah. Namun ketika filter melewatkan sebuah daerah gambar dan sampai melewati semua proses filter yang ada dalam rangkaian filter, maka daerah gambar tersebut digolongkan sebagai wajah. Viola dan Jones memberi sebutan cascade. Urutan filter pada cascade ditentukan oleh bobot yang diberikan AdaBoost. Filter dengan bobot paling besar diletakkan pada proses pertama kali, bertujuan untuk menghapus daerah gambar bukan wajah secepat mungkin.

2.5.2 Metode Eigenface

Setelah wajah terdeteksi, tugas feature extraction adalah untuk memperoleh ciri-ciri dari wajah yang diperlukan pada klasifikasi wajah. Bergantung tipe pengenalan wajahnya, ciri-ciri yang diperlukan dapat berupa ciri lokal wajah seperti hidung, mata, mulut dan lainnya, maupun ciri-ciri global wajah (seluruh bagian wajah)(Saragih, 2007). Metode eigenface menggunakan seluruh bagian wajah sebagai data pengenalannya

Eigenface adalah kumpulan dari eigenvector yang digunakan dalam bidang kecerdasan buatan untuk menangani problem dari pengenalan wajah manusia.

(20)

Pendekatan menggunakan eigenvector untuk pengenalan wajah telah digunakan oleh Sirovich dan Kirby (1987) dan digunakan kembali oleh Matthew Turk and Alland Pentland dalam pengkasifikasian wajah. Eigenvector ini berasal dari matriks kovarian dari distribusi data acak wajah manusia pada dimensi yang tinggi pada ruang vektor. Metode ini mentransformasikan citra wajah kedalam kumpulan karakteristik fitur citra yang dinamakan eigenface, dengan menggunakan Principal Componen Analisys untuk proses training citra (Piarsa dan Hisamuddin, 2010).

Gambar 2.7 Citra Eigenface (http://en.wikipedia.org/wiki/Eigenface)

2.5.2.1 Principal Component Analysis (PCA)

Hotteling mengajukan sebuah teknik untuk mengurangi dimensi sebuah ruang yang direpresentasikan oleh variabel statistik x1, x2, ….,xn, dimana variabel

tersebut biasanya saling berkolerasi satu dengan yang lain sehingga terdapat sebuah himpunan variabel baru yang memiliki sifat relatif sama dengan variabel sebelumnya, dimana dikehendaki himpunan variabel baru tersebut memiliki jumlah variabel (dimensi) lebih sedikit dari variabel sebelumnya. Hotteling menyebut metode tersebut sebagai Principal Component Analysis (PCA) atau Transformasi Hotteling dan Transformasi Karhunen-Loeve.

Transformasi Karhunen-Loeve banyak digunakan untuk memproyeksikan atau mengubah suatu kumpulan data berukuran besar menjadi bentuk representasi

(21)

data lain dengan ukuran lebih kecil. Transformasi Karhunen-Loeve terhadap sebuah ruang data yang besar akan menghasilkan sejumlah vektor basis ortonormal ke dalam bentuk kumpulan vektor eigen dari suatu matriks kovarian tertentu , yang dapat secara optimal merepresentasikan distribusi data.

Bentuk umum dari Principal Component Analysis dapat dilihat berikut ini:

= − − = M k T k k w x w x C 1 ) )( ( (1)

dimana C merupakan matriks koovarian, x merupakan citra (x1,x2,...,xk) dan ψ adalah rata-rata citra yang dihasilkan dari merata-rata x (x1,x2,...,xk). Dengan dekomposisi eigen, matriks kovarian ini dapat didekomposisi menjadi:

T

C =Φ.Φ (2)

Dimana ϕ adalah selisih antar citra (x) dengan nilai tengah (ψ). Pilih sejumlah m kolom dari matriks Φ yang berasosiasi dengan eigenvalue terbesar. Pemilihan sejumlah m kolom dari matriks Φ ini menghasilkan matriks transformasi atau matriks proyeksi Φm. Berikutnya sebuah citra x (berdimensi n) dapat diekstraksi

kedalam feature baru y (berdimensi m < n) dengan memproyeksikan x searah dengan Φm sebagai berikut:

x

m.

Φ =

µ

(3)

Dengan kata lain metode PCA memproyeksikan ruang asal ℜn ke dalam ruang baru yang berdimensi lebih rendah ℜm , yang mana sebanyak mungkin kandungan informasi asal tetap dipertahankan untuk tidak hilang setelah dibawa ke dimensi feature yang lebih kecil. Disini terlihat reduksi feature yang signifikan dan n buah menjadi m buah yang tentunya akan sangat meringankan komputasi dalam proses pengenalan berikutnya.

(22)

2.5.2.2 Perhitungan Eigenface

Tahapan perhitungan Eigenface:

1. Langkah pertama adalah menyiapkan data dengan membuat suatu himpunan S yang terdiri dari seluruh training image (

Γ

Γ

Γ

Γ

1,

Γ

Γ

Γ

Γ

2,…,

Γ

Γ

Γ

Γ

M).

S = {Γ1,Γ2,…,ΓM } (4)

2. Langkah ke-dua adalah ambil nilai tengah atau mean (

Ψ

)

= Γ = M n n M 1 1 ψ (5)

3. Langkah ke-tiga kemudian cari selisih (Φ) antara training image (Γ1 ) dengan

nilai tengah (Ψ)

ψ

φii(6)

4. Langkah ke-empat adalah menghitung nilai matriks kovarian (C)

T T n M n n AA M C =

Φ Φ = =1 1 (7) L=ATA LTmΦn

5. Langkah ke-lima menghitung eigenvalue (λ) dan eigenvector (v) dari matriks kovarian (C)

C x vi =λ i x vi (8)

6. Langkah ke-enam, setelah eigenvector (v) diperoleh , maka eigenface (µ) dapat dicari dengan

M l v k M k lk i ,..., 1 1 = Φ =

=

µ

(9)

(23)

2.5.3 Klasifikasi Wajah

Pada metode eigenface, pengklasifikasian identitas yang digunakan adalah dengan membandingkan bobot dari masing-masing eigenface pada citra wajah pelatihan dan citra wajah masukan dengan menghitung jarak Euclidiannya. Jarak Euclidian adalah jarak antara dua titik. Pada ruang dua dimensi jarak antara dua titik P1 dan P2 adalah :

2 2 12 dx dy

d = + (10)

Dimana dx=x2-x1 dan dy=y2-y1

X X2 X1 y1 y2 Y P1 P2 d12

Gambar 2.8 Jarak Euclidian d12 pada ruang 2 dimensi

Sebuah citra dikatakan dikenali jika jarak minimumnya lebih kecil dari nilai batas yang ditetapkan / diberikan. Semakin kecil jarak minimum yang diperoleh semakin besar kesamaan (similarity) citra masukan dengan pasangan kumpulan citra pelatihan. Namun pada kenyataannya sulit untuk menentukan nilai ambang batas, Jika ambang batas terlalu kecil, semua wajah yang tidak diketahui akan dikenal (false positive). Jika ambang batas terlalu tinggi, wajah baru dari seseorang yang terdapat dalam database, bisa dianggap tidak dikenal (false negative).

(24)

2.5.3.1 Tahapan Pengenalan Eigenface

Tahapan pengenalan wajah dengan eigenface (Sutojo dkk, 296), misalkan ada citra wajah yang akan dikelai (citra uji) Γ.

1. Hitung selisih (Φ ) antara citra uji Γ dengan citra rata-rata Ψ

Φ = Γ-Ψ (11)

2. Proyeksikan Φ ke dalam ruang wajah (eigenspace)

= = Φ M n i iv w 1 (12) Dimana wivi 3. Representasikan Φ sebagai Ω                 = Ω M w w ... ... ... 1 (13)

4. Tentukan jarak minimum (d) dan ambang batas (T)

k k

d = min Ω−Ω (14)

5. Jika d < T , maka citra uji Γ dikenali sebagai wajah ke-k dari sekumpulan citra pelatihan.

2.6 OpenCV

OpenCV adalah sebuah library bebas yang awalnya dibangun oleh Intel. Lisensi yang menyertainya adalah BSD yang bebas untuk komersil dan riset . Library ini dapat digunakan pada platform mana saja termasuk Windows, Linux,

(25)

Mac OS dan lain-lain. OpenCV difokuskan untuk memproses gambar yang berjalan secara langsung (real-time)(Ricky dan Michael, 97)

2.6.1 Tipe Data Primitif OpenCV

OpenCV memiliki tipe data primitif yang hanya dimiliki oleh dirinya. Tipe data ini adalah struct yang didefinisikan dalam file header cxtypes.h yang diinstalasi bersamaan dengan OpenCV (Bradsky and Kaehler, 31).

Tipe paling sederhana adalah CvPoint, yang berupa struct yang berisikan dua buah integer, x dan y. CvPoint mempunyai dua saudara CvPoint2D32f dan CvPoint3d32f. Yang pertama juga beranggotakan x dan y, tetapi tipe datanya berupa float, sedangkan yang berikutnya mempunyai anggota ketiga yaitu z

Berikutnya adalah CvSize, sebuah struct yang mana anggotanya adalah width dan height yang bertipe integer. Jika ingin anggotanya bertipe float, maka yang digunakan adalah CvSize2D32f

Gabungan dari keduanya adalah CvRect, yang beranggotakan x, y, width dan height. Selain itu juga ada tipe data CvSkalar, yang adalah kumpulan dari 4 buah angka dengan ketepatan 2 angka dibelakang koma.

Setiap tipe data ini memiliki konstruktor masing-masing dengan namanya sendiri, tetapi karakter pertama bukan huruf kapital. Dapat dipanggil dengan cara seperti ini: cvPoint, cvSize(), cvRect(), cvSkalar(). Tabel 2.2 menampilkan struktur tipe data primitif pada OpenCV.

Tabel 2.2. Struktur data primitif OpenCv. (Bradsky and Kaehler, 32)

Structure Contains Represent

CvPoint Int x, y Point in image

CvPoint2D32f Float x, y Points in 2

CvPoint3D32f Float x, y, z Points in 3

CvSize Int width, height Size of image

CvRect Int x, y, width, heigth Portion of image

(26)

2.6.2 Tipe Data Matrix Dan Image

Matriks dalam OpenCV dikenal dengan tipe data CvMat. Matriks dalam OpenCV dideklarasikan dalam 2-dimensi dan memiliki 1 tipe data. Untuk membuat matriks, digunakan bentuk umum seperti ini

cvMat * cvCreateMat(int rows, int cols, int type);

IplImage pada dasarnya adalah CvMat tetapi dengan beberapa penambahan feature yang digunakan untuk membuat matriks yang di intepretasikan dari sebuah citra. Stuktur ini pada awalnya didefinisikan sebagai bagian dari Intel’s Image Processing Library (IPL).

2.7 Qt

Qt (dibaca: kiut) dibuat pada tahun 1996 oleh perusahaan dari Swedia bernama Trolltech. Qt memiliki sifat lintas platform maka developer dapat membuat aplikasi yang berjalan pada platform Windows, Linux, dan Mac. Dengan Qt kode yang sama dapat dijalankan pada target platform yang berbeda (Iqbal, 9).

Qt dirancang untuk pengembangan aplikasi dengan C++. Oleh karenanya, Qt berisi sekumpulan kelas-kelas yang tinggal dimanfaatkan saja, mulai dari urusan antarmuka (user interface), operasi input output, networking, timer, template library dan lain-lain. Qt mendukung penuh Unicode (mulai versi 2.0) sehingga urusan internationalization dan encoding teks bukan masalah. Walaupun merupakan free software, Qt terbukti stabil dan lengkap. Dibandingkan toolkit lain, Qt juga mudah dipelajari dan dipersenjatai dengan dokumentasi dan tutorial yang ekstensif dan rinci

Pada tahun 2008, Nokia mengakuisisi Trolltech untuk memperlancar strategi pengembangan aplikasi lintas platform untuk perangkat mobile dan aplikasi desktop.

Sejak awal Qt tersedia dalam dua buah lisensi yaitu komersial dan lisensi open source – GPL. Namun sejak versi 4.5, Qt open source tersedia dalam LGPL.

(27)

1. GNU General Public License (GPL) versi 3.0. Dengan lisensi ini mengharuskan source code aplikasi tersedia secara bebas dan gratis. 2. GNU Lesser General Public License (LGPL) versi 2.1. LGPL

memungkinkan pengembangan aplikasi closed sourceI (dibawah pembatasan tertentu)

3. Qt Commercial. LGPL membawa beberapa pembatasan mengenai kemampuan bagi pengguna untuk relink library dan pembatasan lain yang mungkin memberlakukan persyaratan arsitektur

yang membuat beberapa organisasi mungkin

tidak nyaman dengan kondisi ini. Jika masalah ini penting bagi perusahaan, maka diharuskan membeli lisensi komersial pada saat memulai pengembangan aplikasi..

Gambar

Gambar 2.1 Lapisan rekayasa perangkat Lunak (Pressman, 28)
Gambar 2.2 Model Sekuensial Linear (Pressman, 37)
Tabel 2.1 Diagram UML 2.0 (Dennis et al, 31)
Gambar 2.3 Contoh diagram Use Case (Dharwiyanti dan Wahono, 5).
+7

Referensi

Dokumen terkait

Untuk mengkaji permasalah yang akan diteliti, penulis ingin menggunakan teori uses and gratification yang dicetuskan oleh Eliuh Katz, Michel Gurvitch dan Hadassan Hass,

5 Antara yang berikut, yang manakah berkaitan dengan perniagaan dalam negeri.. I Menggunakan sistem ukuran dan timbangan yang sama II Membuat pembayaran secara tunai

Bagi aspek kesejahteraan rakyat Islam, lima elemen dalam kajian Kualiti Hidup Pendekatan Maqasid Shariah dan sepuluh elemen dalam Kehidupan Berkualiti telah memenuhi sebahagian

Tujuan dari penelitian ini adalah untuk mengetahui distribusi frekuensi periodontitis pada ibu hamil dengan melihat distribusi frekuensi kejadian periodontitis,

Praktik Pengalaman Lapangan (PPL) sebagai salah satu kegiatan yang dilaksanakan untuk mempersiapkan kemantapan mahasiswa program studi kependidikan dalam pengelolaan

mendapat pembelajaran matematika melalui pendekatan PMR lebih tinggi secara signifikan dibandingkan dengan siswa yang mendapat pembelajaran matematika melalui

Tujuan dari perencanaan ini adalah untuk mendapatkan lokasi intake terbaik dari rambatan salinitas air asin yang masuk ke badan air Sungai Jawi agar dapat dimanfaatkan

dilakukan oleh Rian Teknika dan Liston H. Dalam melakukan percepatan pekerjaan maka akan ada biaya yang hilang, biaya tersebut adalah biaya yang diakibatkan oleh selisih