VIDEO RECORDING DENGAN MOTION DETECTION MELALUI INTEGRASI WEBCAM - APLIKASI .NET
TUGAS AKHIR
Diajukan Untuk Memenuhi Salah Satu Syarat Mencapai Gelar Ahli Madya Program Diploma III Ilmu Komputer
Disusun Oleh :
MUHAMMAD MUHSIN DEMOKRAT NIM. M3307054
PROGRAM DIPLOMA III ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SEBELAS MARET 2010
HALAMAN PERSETUJUAN
Disusun Oleh :
MUHAMMAD MUHSIN DEMOKRAT NIM. M3307054
Laporan Tugas Akhir ini disetujui untuk dipresentasikan pada Sidang Tugas Akhir tanggal : 21 Juli 2010
Pembimbing
Budi Legowo, M.Si NIP. 19730510 199903 1 002
HALAMAN PENGESAHAN
VIDEO RECORDING DENGAN MOTION DETECTION MELALUI INTEGRASI WEBCAM - APLIKASI .NET Disusun Oleh : MUHAMMAD MUHSIN DEMOKRAT NIM
: M3307054
Dibimbing oleh Pembimbing Utama :
Budi Legowo, M.Si NIP. 19730510 199903 1 002 Tugas Akhir ini telah diterima dan disahkan Oleh dewan penguji Tugas Akhir Program Diploma III Ilmu Komputer Pada hari Kamis tanggal 5 Agustus 2010
Dewan Penguji: 1.
2.
3.
Tanda Tangan
Budi Legowo, M.Si NIP. 19730510 199903 1 002
(..........................................)
Muhammad A. Safi’ie, S.Si NIDN. 0603118103
(..........................................)
Hartatik, M.Stat NIDN. 0703057802
(..........................................) Mengetahui,
Dekan
Ketua
FMIPA UNS
Program Diploma III Ilmu Komputer
Prof. Drs. Sutarno, M. Sc., Ph. D.
Drs. Y. S. Palgunadi, M. Sc
NIP. 19600809 19812 1 001
NIP. 19560407 198303 1 004
ABSTRACT
MUHAMMAD MUHSIN DEMOKRAT. 2010. VIDEO RECORDING WITH MOTION DETECTION BY INTEGRATING WEBCAM –. NET APPLICATION. Final Project. Diploma of Computer Science Faculty of Mathematic and Natural Science. Sebelas Maret University of Surakarta. In this final project, the author developed software to detect motion using a webcam. These applications will be developed with a webcam and technology based. NET Framework. Software integrated with the principle of Doppler, where objects are already available in. NET Framework. Software, will organize the object, in order to connect with web camera that can display the motion graphics. Can be concluded that the software VIDEO RECORDING WITH MOTION DETECTION BY INTEGRATING WEBCAM –. NET APPLICATION successfully created. Key words: Doppler Effect, Motion Detection, Webcam, .NET Framework.
ABSTRAK
MUHAMMAD MUHSIN DEMOKRAT. 2010. VIDEO RECORDING DENGAN MOTION DETECTION MELALUI INTEGRASI WEBCAM – APLIKASI .NET. Tugas Akhir (TA). DIII Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sebelas Maret. Dalam TA ini penulis mengembangkan software untuk mendeteksi gerakan dengan menggunakan webcam. Aplikasi tersebut akan dikembangkan dengan webcam dan berbasis teknologi .NET Framework. Software dibangun dengan prinsip efek doppler, di mana objek-objek tersebut telah tersedia dalam .NET Framework. Software akan mengorganisasi objek tersebut, agar terkoneksi dengan webcam sehingga dapat menampilkan gerakan dalam grafis. Dapat ditarik kesimpulan bahwa software VIDEO RECORDING DENGAN MOTION DETECTION MELALUI INTEGRASI WEBCAM – APLIKASI .NET berhasil dibuat. Kata Kunci : Efek Doppler, Motion Detection, Webcam, .NET Framework
MOTTO
“Jika saya bisa melihat jauh, itu karena saya berdiri di atas bahu para raksasa.” Sir Isaac Newton; fisikawan dan penulis salah satu buku terpenting di dunia : Principia.
“Berpikir imajinatif, bertindak efisien.” Jose Mourinho, mantan pelatih Chelsea FC.
“Bilangan dapat menghitung bilangan.” Alan Turing; Penemu komputer colossus (pemecah kode nazi) – Penyusun standar tes kecerdasan buatan (tes turing)
“Whatever your problem, NGEH is the answer.” Kirana Larasati, artis teman twitter penulis.
“Yang paling diterima adalah yang mudah mengganda, dan menyebar. Sesederhana, dan seaneh apapun itu.” Richard Brodie, penemu Microsoft Word.
“Mari mencintai Indonesia! Mari menginspirasi dunia!” Yohanes Surya, dan Hokky Situngkir, peneliti dan penggerak perkembangan fisika di indonesia
PERSEMBAHAN
Untuk ayah dan ibuku (family man), mengherankan rasanya mereka berdua dapat mendidik penulis dalam kebebasan (membiarkan independent memilih jalan sains (yang oleh masyarakat kebanyakan dianggap tidak menghasilkan)) padahal penulis tahu sejak muda ayah sudah mandiri bekerja, dan ibu lekat dengan tradisi keluarga Banjar. Setiap tindak laku mereka hanya untuk memberikan yang terbaik untuk anak-anaknya. Untuk sahabat-sahabat penulis di Solo (khususnya satu almamater, semoga yang mengambil Tugas Akhir lulus semua, hasilnya bagus, dan tidak bingung setelahnya mau kemana), sekitar rumah, dan yang merantau jauh semoga mimpimimpi baik kalian diijinkan terjadi oleh Allah. Untuk guru-guru penulis dari guru TK, pondok pesantren (saat SD), hingga dosen-dosen UNS semoga usaha pendidikan yang diberikan kepada kami dapat memajukan pendidikan, khususnya Indonesia suatu saat nanti. Tak kurang dari seratus kali setiap hari, penulis selalu merenungkan makna kehadiran kalian semua. Terakhir untuk para pencinta ilmu pengetahuan, semoga kelak di Indonesia matematika dan sains dapat populer dan dianggap selezat pizza (love math and science like a pizza).
KATA PENGANTAR
Segala puji syukur dan terimakasih penulis panjatkan kehadirat Allah SWT, sebab hanya dengan ridho-Nya yang begitu melimpah, akhirnya
pembuatan
laporan Tugas Akhir ini dapat diselesaikan. Ketika berpikir mengenai “penemu”, pada umumnya orang menghadirkan bayangan profesor yang linglung, dengan rambut acak-acakan, bekerja dalam laboratorium yang penuh tabung reaksi dengan isi yang mengeluarkan gelembung, atau mesin instrumentasi elektronik yang rumit, atau juga sedang menulis di buku catatan yang penuh dengan perhitungan matematika. Bagi banyak orang, seorang penemu adalah kombinasi aneh dari ilmuwan dan pemimpi. Namun, faktanya tidak ada pembatasan dan persyaratan. Siapa pun dapat menjadi penemu! Semua hasil ciptaan mulai sebagai ide seorang dan hampir semua orang mempunyai banyak ide mengenai cara memperbaiki sesuatu. Beberapa ide untuk suatu benda, ada yang belum pernah ada sama sekali; ide lain membuat penemuan atau hasil ciptaan lain menjadi lebih baik atau hanya membuat tugas dapat dilakukan dengan lebih mudah dan lebih menyenangkan. Beberapa ide menyangkut masa depan, dan mungkin tergantung pada teknologi yang belum diciptakan. Beberapa diantaranya, walaupun ide itu mungkin tampak bodoh di mata orang lain, menawarkan solusi yang merupakan jawaban praktis bagi kebutuhan penemu-seperti kacamata kucing, agar tampak keren saat kontes, atau tidak cedera saat berkelahi. Walaupun siapa pun dapat mempunyai ide itu, hal ini tidak dengan sendirinya membuat dia menjadi penemu, perlu situasi yang kondusif, referensi teknis, teman-teman pendukung, teknologi, dan untuk ilmuwan muda administrator merupakan elemen vital dalam kegiatan penemuannya. Pada Tugas Akhir ini, di mana penulis belajar menjadi penemu, banyak halhal yang harus dipelajari lagi, yakni redefinisi penemuan, penelitian ilmiah, dan hal-hal teknis yang mendukung. Alhamdulillah segala sesuatunya kini sudah terlaksana.
Tidak terkecuali Tugas Akhir yang sifatnya membuat produk, penelitian ilmiah belum lengkap sebelum hasilnya diumumkan. Di kalangan mahasiswa diploma, khususnya mahasiswa yang bercita-cita menjadi peneliti seperti saya, laporan tugas akhir ini ibarat batu landasan untuk membangun bangunan risetriset ke depan. Selesai meniup sangkakala mengenai karya ini, penulis ingin mengucapkan rasa berutang budi kepada para pendukung penulis, yaitu : 1.
Kedua orangtua penulis (family man) yang telah memberikan dukungan materi dan motivasi.
2.
Drs. Y. S. Palgunadi, M. Sc, selaku ketua program DIII Ilmu Komputer.
3.
Administrator ilmiah pertama penulis, Budi Legowo, M.Si. Tanpa administrator, peneliti muda akan kehilangan arah.
4.
Dayat Kurniawan, peneliti LIPI yang telah meluangkan waktu menjawab pertanyaan-pertanyaan penulis.
5.
Teman-teman gank, Ramdhan Sabar I, Cakra Yudha S (yang saat ditulisnya laporan ini sedang kuliah di Jakarta), Bindrasto Duta P, Hery Kuswanto, Silvester Ditya Aribowo, Dwi Kurnaedi. Ada beberapa hal yang tidak dapat dibeli dengan uang, dan mereka menunjukkannya pada penulis. Daftar tadi seharusnya lebih panjang, tapi nama-nama inilah yang paling
berperan selama saya menyelesaikan Tugas Akhir ini. Penulis juga menyadari laporan ini masih belum sempurna, oleh karena itu dengan senang hati penulis mengharap sumbang saran, pendapat, bahkan kritikan guna memperbaiki isi laporan Tugas Akhir ini. Semoga dengan tersusunnya laporan Tugas Akhir ini, bisa bermanfaat bagi para pembaca sekalian.
Salatiga, 23 Mei 2010
PENULIS
DAFTAR ISI
Halaman ABSTRACT...................................................................................................... iv ABSTRAK ........................................................................................................
v
MOTTO .......................................................................................................... vi PERSEMBAHAN ............................................................................................. vii KATA PENGANTAR ...................................................................................... viii DAFTAR ISI.....................................................................................................
x
DAFTAR GAMBAR ........................................................................................ xii DAFTAR LAMPIRAN..................................................................................... xiv BAB I
PENDAHULUAN ...........................................................................
1
1.1. Latar Belakang.........................................................................................
1
1.2. Perumusan Masalah .................................................................................
2
1.3. Batasan Masalah ......................................................................................
2
1.4. Tujuan dan Manfaat.................................................................................
3
1.4.1. Tujuan.............................................................................................
3
1.4.2. Manfaat...........................................................................................
3
1.5. Metodologi Penelitian..............................................................................
3
1.6. Sistematika Penulisan ..............................................................................
4
BAB II
LANDASAN TEORI .......................................................................
5
2.1. Mengenal Pemrograman..........................................................................
5
2.1.1. Bagaimana Caranya Memprogram?...............................................
6
2.1.2. Bagaimana Cara Membuat Program Video Recording dengan Motion Detection?.......................................................................................
7
2.1. Mengenal Teknologi Pembangun Aplikasi .............................................
8
2.2.1. Mengenal Webcam .........................................................................
8
2.2.2. Mengenal Microsoft .NET Framework..........................................
9
2.2.3. Mengenal IDE Microsoft Visual C# ..............................................
9
2.2.4. Mengenal Mitov VisionLab Library ..............................................
9
2.1. Cara Menggunakan Teknologi Pembangun Aplikasi .............................. 12 2.3.1. Pemrograman Berorientasi Objek (OOP) untuk Pemrograman Visual C# ................................................................................................... 12 2.3.2. Abstraksi Komunikasi Data DirectShow ....................................... 13 2.3.3. Cara Implementasi dengan VisionLab ........................................... 15 2.2. Hipotesis .................................................................................................. 15 2.4.1. Inspirasi .......................................................................................... 16 2.4.2. Hipotesis Pengujian........................................................................ 16 BAB III DESAIN DAN PERANCANGAN .................................................. 18 3.1. Persiapan.................................................................................................. 18 3.1.1. Software yang Dibutuhkan ............................................................. 18 3.1.2. Instalasi........................................................................................... 18 3.2. Abstraksi dan Desain Interface................................................................ 29 3.3. Implementasi (Pembuatan Aplikasi......................................................... 30 BAB IV
IMPLEMENTASI DAN ANALISA ............................................... 39
4.1. Pengujian Sistem ..................................................................................... 39 4.2. Analisis .................................................................................................... 42 4.2.1. Cara Bekerjanya Sistem ................................................................. 42 4.2.2. Analisis Implementasi Listing Pemrograman ................................ 43 4.1. Pembuktian Hipotesis .............................................................................. 47 4.2. Asas Manfaat Aplikasi............................................................................. 50 BAB V
PENUTUP........................................................................................ 51
5.1. Simpulan .................................................................................................. 51 5.2. Saran ........................................................................................................ 52 DAFTAR PUSTAKA ....................................................................................... 53 LAMPIRAN...................................................................................................... xv
DAFTAR GAMBAR
Nomor
Halaman
1
Prinsip Pengolahan Data Komputer .......................................................... 6
2
Prinsip Kerja Webcam ............................................................................... 8
3
Contoh Penanganan Display Video ........................................................... 14
4
Diagram .NET Microsoft........................................................................... 16
5
Jendela Welcome to Setup.......................................................................... 19
6
Jendela License Terms ............................................................................... 19
7
Jendela Pilihan Fitur Program ................................................................... 20
8
Jendela Pilihan Lokasi Instalasi................................................................. 20
9
Jendela Proses Instalasi.............................................................................. 21
10
Jendela Keterangan Instalasi Visual C# Berhasil ...................................... 21
11
Jendela Peringatan VisionLab ................................................................... 22
12
Jendela License Agreement........................................................................ 23
13
Jendela Installaton Type .......................................................................... 23
14
Jendela Pilihan Lokasi Instalasi (VisionLab) ............................................ 24
15
Jendela Pilihan Fitur Instalasi.................................................................... 24
16
Jendela Pilihan Paket Instalasi................................................................... 25
17
Membuat Tab Baru .................................................................................... 26
18
Choose Items pada VideoLab .................................................................... 26
19
Form Choose Toolbox Items...................................................................... 27
20
Lokasi Instalasi VisionLab ........................................................................ 27
21
Form Choose ToolBox Items ..................................................................... 28
22
Hasil Akhir Penambahan Items VisionLab................................................ 28
23
Interface Hasil Abstraksi Pertama ............................................................. 29
24
Interface Hasil Abstraksi Kedua................................................................ 30
25
Abstraksi Komunikasi Data dengan DirectShow ...................................... 31
26
Implementasi Komunikasi Data Objektif Motion Detection ..................... 32
27
Jendela New Project .................................................................................. 32
28
Pengaturan Posisi Komponen Aplikasi ..................................................... 33
29
Tampilan Form Setelah Properti Diatur .................................................... 34
30
Pemilihan InputPin untuk DSCapture1 ..................................................... 35
31
Pemilihan InputPin untuk motionDetect.OutputPin .................................. 35
32
Pengaturan Motion Grid (untuk Sensitifitas)............................................. 36
33
Jendela Awal Aplikasi ............................................................................... 39
34
Jendela Select Source................................................................................. 40
35
Dialog Edit Motion Grid Sebagai Sarana Pemilihan Nilai Sensitifitas ..... 40
36
Lokasi File Hasil Capture ......................................................................... 41
37
Gambar yang Dicapture dengan Webcam VGA ....................................... 42
38
Gambar yang Dicapture dengan Webcam 1.3 MP .................................... 42
39
Diagram Blok Cara Bekerjanya Sistem..................................................... 42
40
Arsitektur Abstrak Aplikasi Motion Detection dengan Gambaran Lebih Sederhana................................................................................................... xxi
DAFTAR LAMPIRAN
Nomor
Halaman
1
Hal-hal yang Mungkin Ditanyakan atau Kurang Jelas ............................ xvi
2
Bukti Mainstream Keterujian Hipotesis .................................................. xviii
3
Implikasi Nilai ......................................................................................... xx
BAB I PENDAHULUAN
1.1. Latar Belakang Secara induktif, baik melalui pengamatan langsung (realitas di masyarakat) atau membaca media informasi (iklan, ulasan fotografi, majalah, dan sejenisnya) dapat diverifikasi bahwa mayoritas konsumen Indonesia yang memutuskan untuk memiliki kamera mempunyai tujuan untuk mengabadikan momen berwisata, dan memotret buah hati, atau lebih spesifik anak pertamanya. Kebanyakan orang tua ingin merekam aktivitas si buah hati (yang sedang lucu-lucunya itu) sepanjang hari selama media penyimpanan, atau media cetak masih tersedia untuk melakukannya. Sayangnya, kebanyakan momen natural dari si buah hati ini sering kali terlewatkan, entah dikarenakan orang tua tidak menyangka si buah hati akan melakukan tindakan “X”, atau pada saat itu tidak ada yang membawa kamera sehingga menurut riset komunitas fotografer tahun 2007 (www.fotografer.net) 63% foto bayi yang bagus adalah manipulasi orang tuanya, baik dengan cara digoda dengan mainan, dan sebagainya. Terinspirasi atas kondisi di atas, sekaligus untuk menyelesaikan Tugas Akhir (TA) penulis memutuskan untuk membuat produk TA “Video Recording dengan Motion Detection Melalui Integrasi Webcam - Aplikasi .NET” dimana tangibles (produk yang memanfaatkan teknologi ini) penulis harap dapat menjadi pilihan pemakai, dalam mengabadikan gerakan natural, khususnya momen natural buah hati tercinta. Adapun mengenai keunggulan dari laporan dan produk tugas akhir ini adalah lebih condongnya penulis dalam membahas potensi yang ada dari komunikasi data objektif secara teoretis-praktis, sehingga diharapkan setelah memahami
laporan
ilmiah
serta
produk
yang
dihasilkan
(dengan
mempertimbangkan software yang digunakan juga), di masa depan pembaca dapat memanfaatkan teknologi ICT ini dengan lebih kreatif, dan inovatif.
2
1.2. Perumusan Masalah Bertolak dari uraian latar belakang masalah di atas, dapat dirumuskan masalah sebagai berikut: 1.
Apa yang menjadi ‘jantung masalah’ mengabadikan gerak natural?
2.
Bagaimana mengatasinya dengan solusi aplikasi ICT?
3.
Mengapa solusi ICT tersebut efektif dan efisien?
4.
Apakah solusi ICT tersebut dapat dimodelkan menjadi model solusi umum atau alternatif cara pandang pemrograman di masa depan?.
1.3. Batasan Masalah Karya ilmiah yang baik apapun wujudnya (makalah, jurnal, atau presentasi) adalah karya yang fokus terhadap bahasan yang dikajinya, sehingga tidak menimbulkan kesalahpahaman, dan sesuai dengan sasaran penelitiannya. Maka, agar karya ini juga memiliki nilai tersebut, penulis akan membatasi masalah laporan ini pada kajian mengenai: 1.
Analisa yang menjembatani teoretis-praktis atau lebih ke proses komputer di balik integrasi webcam-pemrograman .NET, sehingga sesuai keunggulan laporan yang telah disinggung pada latar belakang;
2.
Analisa potensi pemrograman .NET dan library tambahan dari MITOV (www.mitov.com) yang dapat menghasilkan aplikasi kaya guna melalui pembuktian hipotesis;
3.
Batasan topik permasalahan pada laporan ini adalah pada fotografi natural saja, jadi penulis sama sekali tidak akan membahas mengenai teknik fotografi lanjut seperti pemilihan setting, gerakan manusia, human interest, pencahayaan, lensa, dan sebagainya;
4.
Pembahasan dalam laporan ini juga tidak menyertakan perhitungan matematis pada penggunaan memori, ketepatan sensitivitas, pemrosesan frame, dan persoalan matematis lainnya. Penulis berharap, semoga hal ini tidak mereduksi pemahaman (karena memang digunakan sebagai dasar), dan mengurangi minat pembaca terhadap laporan ini.
3
1.4. Tujuan dan Manfaat 1.4.1. Tujuan : 1.
Memenuhi salah satu syarat mencapai gelar ahli madya program diploma III ilmu komputer FMIPA UNS;
2.
Sebagai langkah awal pengabdian penulis kepada masyarakat, baik umum, maupun komunitas akademis, sebagai mahasiswa diploma III ilmu komputer, dengan menghasilkan produk yang membantu permasalahan pendeteksian gerakan secara otomatis (motion detect).
1.4.2. Manfaat : 1.
Sebagai referensi penelitian ICT lainnya di mana membutuhkan framework .NET serta library tambahannya, pada kajiannya;
2.
Memberikan informasi bagi para peminat dan hobiis ICT dalam membuat dan menganalisa aplikasi .NET buatannya;
3.
Untuk peminat logika penemuan ilmiah, penulis juga menyisipkan beberapa pengetahuan teknis mengenai hal tersebut dengan cara yang cukup menyenangkan (secara tidak langsung), seperti kaidah penyangkalan (falsifiabilitas), keragu-raguan, dan sebagainya, di mana penulis harap karya ini dapat membantu siapa saja yang berminat pada logika penemuan ilmiah (dan tidak tabu lagi masalah sains).
1.5. Metodologi Penelitian Dalam melakukan penelitian ini penulis menggunakan beberapa metode, yaitu studi pustaka, mengikuti seminar (Seminar Microsoft Innovation Road Trip 2010, di Universitas Muhammadiyah Surakarta), wawancara dengan peneliti divisi
Pusat Penelitian Elektronika dan Telekomunikasi Lembaga Ilmu
Pengetahuan Indonesia (LIPI), bapak Dayat Kurniawan (via e-mail atau sms), dan yang paling penting adalah pengujian teori melalui eksperimen yang menghasilkan produk motion detection.
4
1.6. Sistematika Penelitian Agar penelitian mudah dilakukan, dan karyanya mudah dikaji oleh khalayak, peneliti juga harus mempertimbangkan sistematika penelitian yang membantunya untuk mencapai tujuan tersebut, hal yang sama tentu juga penulis lakukan dalam penyusunan laporan Tugas Akhir (TA) ini. Adapun laporan TA ini penulis bagi dalam enam sesi sebagai berikut : 1.
Sesi pertama, berisi latar belakang yang memberi inspirasi penulis dalam pemilihan topik penelitian ini, beserta tujuan, manfaat, dan batasan kajian yang melingkupinya, bahasan ini dapat pembaca simak pada Bab I halaman 1-4;
2.
Sesi kedua, berisi landasan teoretis pembuatan aplikasi. Meliputi ulasan singkat hardware, software, dan integrasi keduanya, rinciannya penulis sajikan pada Bab II, di mana dapat pembaca simak halaman 5-17;
3.
Sesi ketiga, berisi desain dan perancangan produk TA yang pada akhirnya digunakan sebagai solusi pemecahan masalah yang telah dibahas pada latar belakang. Meliputi panduan persiapan, instalasi, arsitektur aplikasi, abstraksi, desain antar muka, dan implementasi dalam wujud pembuatannya. Bahasan ini dapat pembaca simak pada Bab III halaman 18-38;
4.
Sesi keempat, berisi pengujian dan analisa, yang menunjukkan mengapa solusi yang berwujud produk TA ini efektif, dan efisien dalam menyelesaikan masalah yang telah dibahas pada latar belakang. Bahasan ini dapat pembaca simak pada Bab IV, halaman 39-50;
5.
Sesi kelima, berisi simpulan dan saran, yang dapat digunakan pembaca sesuai manfaat penelitian yang telah disinggung pada Bab I, keduanya dapat pembaca simak pada Bab V, halaman 51-52;
6.
Sesi terakhir (daftar pustaka dan lampiran), berisi referensi yang penulis gunakan dalam menyelesaikan penelitian ini yang dapat disimak pada halaman 53-55, beserta lampiran fakta-fakta, dan kajian umum potensi yang dimiliki produk TA ini, dapat pembaca simak mulai halaman xv-.
BAB II DASAR TEORI
2.1. Mengenal Pemrograman “Apa yang pertama kali dibutuhkan untuk menguasai pemrograman?” Pertanyaan ini adalah pertanyaan pertama yang biasanya muncul di benak seseorang yang baru saja mulai belajar bahasa pemrograman. Memang hal itulah yang perlu diketahui pertama kali. Pada dasarnya ilmu pemrograman adalah suatu ilmu menuliskan sejumlah instruksi (dengan alat input perintah, misalnya keyboard) yang diberikan kepada prosesor (misalnya Intel Pentium IV) untuk dikerjakan (Pranoto:2007). Instruksi yang diberikan kepada Pentium IV ini kemudian akan diproses dengan melibatkan komponen-komponen komputer lainnya, yaitu memori (RAM), kemudian komputer akan memberikan “jawaban” yang dikeluarkan melalui alat keluaran baik suara (melalui speaker), gambar (melalui monitor), atau “dikeluarkan” ke printer dalam bentuk cetakan. Hasil dari jawaban ini beberapa diantaranya juga dapat disimpan dalam media penyimpanan (storage media seperti hard disk). Masalahnya, sering kali para programmer (orang yang menulis program komputer) tidak tahu apa yang harus mereka tulis. Oleh karena itu, agar bisa menguasai pemrograman, maka seseorang harus memahami seluk-beluk komputer itu sendiri. Hal ini dikarenakan ketika suatu program akan dijalankan, maka program akan berinteraksi dengan komponenkomponen yang terkoneksi dengan prosesor. Minimal program akan berinteraksi dengan memori dan prosesor (Pranoto:2008), bahkan untuk program yang tidak “gaul” (seenaknya sendiri, seperti virus) sekalipun, minimal membutuhkan komunikasi prosesor dan memori. Interaksi prosesor dengan komponen yang terkoneksi ini dikenal dengan istilah teknis prinsip pengolahan data komputer. Prinsip pengolahan data komputer juga memiliki bahasan lanjut yaitu komunikasi data di mana akan dibahas dan menjadi pokok laporan ini.
6
Adapun prinsip pengolahan data komputer dapat digambarkan sebagai berikut : INPUT
PROSES
OUTPUT
MEMORI
Gambar 1 : Prinsip Pengolahan Data Komputer Berikut keterangan dari masing-masing elemen : •
Input Adalah media yang dipakai untuk memasukkan data atau perintah kepada
prosesor (Stephen:2006). Misalnya mouse, keyboard, dan webcam; •
Proses Proses pengolahan data atau perintah (baik logika maupun aritmatik) yang
telah dimasukkan ke dalam komputer melalui input (Stephen:2006). Proses dilakukan oleh prosesor yang memiliki ALU (Aritmathic Logical Unit) untuk olah data aritmatik dan logika dan control unit (pengontrol media input/output (I/O) lain) •
Output Media yang digunakan untuk menampilkan data hasil pengolahan proses
(Stephen:2006). Misalnya monitor, speaker, dan printer. •
Memori Media penyimpanan yang digunakan untuk menjalankan aplikasi,
mendokumentasikan atau mem-back-up data hasil pengolahan (Stephen:2006). Untuk menjalankan aplikasi, komputer “menyerahkan tugasnya” kepada RAM (Random Access Memory), sedangkan untuk mem-back-up atau menyimpan data, komputer menyerahkan tugasnya pada media penyimpanan data digital seperti hard disk, atau flash disk 2.1.1. Bagaimana Caranya Memprogram? Pertama-tama dibutuhkan suatu bahasa pemrograman. Untuk pembuatan aplikasi motion detection ini dipakai bahasa pemrograman C#, karena sesuai definisinya, pemrograman adalah aktivitas menuliskan sejumlah instruksi yang
7
diberikan kepada prosesor, dan dimengerti juga oleh prosesor. Dengan kata lain, manusia yang menjadi programmer-nya “berkomunikasi” dengan komputer dengan cara memberikan sejumlah perintah (listing) yang harus dijalankan. Hal ini dapat dianalogikan dengan
bos yang memberikan instruksi kepada
karyawannya. “Joni, coba kamu pergi ke TIKI, paketkan buku ini. Lalu kamu beli makanan ringan di supermarket.” Tampak bahwa ada perintah yang harus dijalankan di sini dan dimengerti oleh pemroses informasinya. Bahasa pemrograman tersebut dapat dituliskan dengan cara manual melalui editor teks, atau IDE (Integrated Development Environment). Setelah selesai menuliskan program, programmer akan beranjak pada aktivitas pemrograman lain seperti kompilasi (meminta komputer menerjemahkan bahasa pemrograman kita untuk diterjemahkan ke bahasa mesin supaya dimengerti prosesor (penerjemah dan penyusun terjemahannya dinamakan compiler)), menyempurnakan hasil pemrograman dan sebagainya. IDE yang sebelumnya disinggung tadi adalah aplikasi untuk menjembatani bahasa pemrograman dan lingkungannya. Disebut “menjembatani”, karena dalam membuat program, programmer sebenarnya dapat menggunakan editor teks sederhana, misalnya notepad, yang kemudian dikompilasi menggunakan compiler manual. Namun dengan cara manual demikian, akan mempersulit programmer jika program yang dibuat adalah program yang kompleks, kesulitan ini terjadi karena dengan memilih “jalan” manual programmer harus melanjutkan pekerjaanpekerjaan penting lain secara manual juga. Hal-hal penting seperti debug (mengecek kesalahan), membuat library, dan dalam kasus ini untuk hal sekompleks filtering pun harus dijalani secara manual. 2.1.2. Bagaimana Cara Membuat Program Video Recording dengan Motion Detection? Sudah dibahas sebelumnya bahwa programmer harus mengetahui seluk beluk komputer sebelum memprogram. Yang dimaksud dengan seluk beluk di sini adalah : semua alat baik input, output, dan perangkat lunak yang berhubungan dengan komputer. Untuk saat ini pembaca dapat belajar mengenai pembuatan aplikasi video recording dengan motion detection, yang memanfaatkan teknologi
8
komunikasi data antar objek. Secara bertahap akan dibahas teknologi pembangun aplikasi hingga cara menggunakan teknologi tersebut. 2.2. Mengenal Teknologi Pembangun Aplikasi Untuk membangun aplikasi video recording dengan motion detection ini digunakan empat teknologi, yaitu : 1.
Webcam
2.
Microsoft NET Framework 3.5
3.
IDE Microsoft Visual C# 2008 Express Edition
4.
Mitov VisionLab Library
2.2.1. Mengenal Webcam Webcam merupakan sebuah hasil pengembangan teknologi kamera gambar hidup dengan teknologi digital sensor CCD/CMOS. Kamera gambar hidup sendiri adalah kamera yang digunakan untuk membuat gambar hidup (kini lebih dikenal dengan istilah video). Gambar hidup sebenarnya tidak lebih dari foto yang ditayangkan di depan mata kita dengan demikian cepat sampai kita tidak mengetahui kalau satu gambar telah disingkirkan dan gambar berikutnya telah menggantinya. Jadi, gambar-gambar ini tampak bergerak, seperti saat peristiwa itu terjadi. Fenomena ini disebut “penglihatan yang tertinggal” (gambar tetap dalam penglihatan kita dalam beberapa milidetik) dan sudah dikenal cukup lama (Philbin:2008).
Gambar 2 ; Prinsip Kerja Webcam (sumber : gandirsetyadi.wordpress.com)
9
2.2.2. Mengenal Microsoft .NET Framework .NET framework adalah sebuah platform yang dengannya kita dapat membangun aplikasi perangkat lunak dan library yang disebut sebagai aplikasi managed (aplikasi yang dimengerti .NET); .NET menyediakan compiler dan perangkat yang dibutuhkan untuk melakukan proses build (menjadikan instruksi kita seolah-olah sebagai komponen aplikasi yang bertugas sesuai perintah kita), debug (mengecek kesalahan) dan eksekusi aplikasi managed (Rahman:2009) Berdasarkan riset penulis, Microsoft .NET Framework adalah lingkungan bahasa pemrograman dengan teknologi generalisasi API, sehingga memungkinkan kita untuk membuat aplikasi dengan dukungan penuh perangkat keras (dalam hal ini untuk yang sudah dikenali Windows). API sendiri adalah sekumpulan definisi dari suatu cara bagaimana suatu perangkat lunak berkomunikasi dengan pihak lain. API merupakan satu metode dalam melakukan abstraksi dalam pemrograman berorientasi, biasanya (tetapi tidak selalu) antara perangkat lunak tingkat rendah dan tingkat tinggi (Wikipedia:2010). Untuk praktek ini, digunakan API DirectShow yang telah terintegrasi dengan NET Framework bawaan Visual C#. 2.2.3. Mengenal IDE Microsoft Visual C# Karena aplikasi menggunakan bahasa C#, maka harus digunakan salah satu IDE yang cocok, di sini digunakan Visual C# 2008 Express Edition yang dibuat oleh Microsoft. Visual C# (Visual C Sharp) adalah IDE OOP yang mendukung proyek .NET framework Microsoft. 2.2.4. Mengenal Mitov VisionLab Library 1.
Mengenal Mitov Software Mitov Software adalah developer (pengembang aplikasi) yang menyediakan
komponen library tambahan
untuk IDE bahasa pemrograman C++ Builder,
Visual C++ MFC/Win32, NET Framework 2.0, atau versi lebih baru (Visual C#, Visual Basic 9, C++/CLI, J#), dan Delphi (untuk Delphi bernama IGDI+) yang dapat digunakan untuk pembuatan aplikasi berbasis video, audio, pengolahan sinyal digital, atau CV (Computer Vision). Semua library yang disediakan sudah mendukung teknologi multithreading prosesor, dan telah dioptimalisasi dengan
10
teknologi Intel MMX. Library yang ditawarkan oleh mitov software dibangun dengan pengembangan lanjut teknologi OpenWire, yang memungkinkan penggunanya membuat program kompleks secara visual (tanpa mengetik baris listing sekalipun), atau setidaknya sedikit listing saja (Mitov:2010). Library tambahan adalah sekumpulan (set) kakas, yang dapat membantu programmer dalam membuat aplikasi. Kakas (dalam OOP juga dapat disebut paket) ini berisi instruksi yang telah dituliskan dan disimpan dalam berkas library (misalnya dynamic link library atau *.dll), sehingga dapat dimanfaatkan programmer dengan cara memanggil library ini, dalam penyusunan aplikasinya. Library sendiri dapat diartikan sebagai “bumbu instan” pembuatan aplikasi, sama halnya dengan penggunaan bumbu instan dalam kegiatan memasak. Dengan library, programmer dapat menyingkat penulisan programnya, sesuai yang telah dijelaskan dalam teknologi OpenWire tadi. Berikut teknologi OpenWire yang telah dikembangkan Mitov Software : a.
VisionLab (OpenWire library untuk keperluan pengolahan data visual)
b.
VideoLab (OpenWire library untuk keperluan pengolahan data video)
c.
AudioLab (OpenWire library untuk keperluan pengolahan data audio)
d.
PlotLab (OpenWire library untuk keperluan plotting (pembuatan grafik), dan waterfall (diagram alir))
e.
InstrumentLab (OpenWire library untuk keperluan aplikasi intrumentasi dengan bantuan komputer, misalnya termometer)
f.
IntelligenceLab (OpenWire library untuk keperluan aplikasi kecerdasan buatan, seperti jaringan saraf tiruan)
g.
IGDI+ (OpenWire library untuk IDE Delphi)
2.
Mengenal Teknologi OpenWire OpenWire adalah freeware library open source (aplikasi gratis dengan
lisensi pengembangan kode bebas). OpenWire menggunakan konsep aliran data untuk penggunaan komunikasi datanya. Konsep aliran data ini membuat koneksi sebuat output dengan satu input atau lebih. Atau lebih lengkapnya sebagai berikut (Mitov:2010): a.
Setiap komponen dapat memiliki banyak input
11
b.
Setiap komponen input dan output disebut Pin, sehingga untuk pembuatannya dikenal dua istilah InputPin dan OutputPin
c.
Setiap OutputPin dapat mengalirkan format data spesifik (misal *.MP3) kepada InputPin yang kompatibel.
d.
Setiap tipe data memiliki masing-masing spesifikasi. Yang dimaksud spesifikasi data di sini adalah identifikasi secara unik suatu
tipe data. Sebagai contoh, tipe data integer (bilangan bulat) mempunyai spesifikasi data yang berbeda dengan tipe data String. Sebuah OutputPin dapat diatur untuk mengalirkan satu atau lebih tipe data. Sebagai contoh sebuah OutputPin dapat mengalirkan tipe data String untuk nama file, dan data gambar yang juga tersusun atas String yang terkonversi. InputPin yang kompatibel, dapat menggunakan fitur ini (Mitov:2010). Karena aplikasi ini menggunakan bahasa berorientasi objek Visual C#, maka perlu diketahui juga logika objektif untuk OpenWire, berikut keterangan lengkap dari Mitov Software (Mitov:2010) : a.
Setiap Pin bersumber dari hasil kloning TOWPin
b.
InputPin hasil kloning dari TOWPin disebut TOWSinkPin
c.
OutputPin hasil kloning dari TOWPin disebut TOWSourcePin
d.
InputPin dan OutputPin dapat diimplementasikan pada satu atau lebih interface. Setiap interface memiliki kode GUI sendiri (misalnya : GenericFilter yang penulis gunakan).
e.
Tipe data yang kompatibel antara InputPin dan OutputPin dapat saling terkoneksi (jika tidak saling kompatibel akan ditolak).
3.
VisionLab Untuk pembuatan aplikasi video recording dengan motion detection ini,
digunakan salah satu teknologi pengembangan OpenWire dari Mitov Software yaitu VisionLab. Seperti telah disinggung sebelumnya VisionLab adalah OpenWire library untuk keperluan pengolahan data visual, termasuk motion detection dengan Visual C#.
12
2. 3. Cara Menggunakan Teknologi Pembangun Aplikasi 2.3.1. Pemrograman Berorientasi Objek (OOP) untuk Pemrograman Visual C# Aplikasi berbasis windows adalah program yang sangat kompleks yang menyajikan tampilan menarik kepada user (pengguna aplikasi) dan menawarkan antar muka sederhana hingga kompleks dengan tombol, dropdown, popup menu, toolbox, dan masih banyak komponen yang lain. Dibelakang antar muka tersebut masih ada hubungan bussiness process yang kompleks seperti misal hubungan antara Product, Customer, dan Order yang melibatkan banyak logika dan pengolahan data. Untuk menangani berbagai kompleksitas yang terjadi maka programmer mengembangkan teknik yang diberi nama “Object Oriented Programming”, dengan tujuan yang sederhana yaitu mengatur kompleksitas dengan memodelkan aspek esensial yang ada (Kurniawan:2009). Jika model yang dikembangkan semakin mendekati problem yang akan dipecahkan maka semakin mudah persoalan tersebut dapat dimengerti sehingga program lebih mudah ditulis dan dimaintain. Masalah yang akan dipecahkan dan semua informasi yang berhubungan dengan problem tersebut sering disebut sebagai problem domain (domain masalah). Misal jika pembaca ingin membuat program untuk keperluan Inventory dan Sales di suatu perusahaan maka domain masalahnya adalah semua informasi tentang perusahaan tersebut yang berhubungan dengan pengaturan stok inventory, cara penjualan, pemasukan penjualan dan data lainnya. Manajer penjualan dan manajer bagian gudang akan menjadi ahli pemecahan masalah (problem domain expert) yang dapat membantu anda dalam menyelesaikan masalah. Desain dari Object Oriented harus berisi objek-objek yang ada pada domain masalah tersebut. Cara ini dinamakan abstraksi (Hariyanto:2007). Sebagai contoh jika problem domainnya adalah mesin ATM maka objek didalamnya seharusnya adalah customer, rekening, dan lain-lain.
13
2.3.2. Abstraksi Komunikasi Data dengan DirectShow Seperti telah disinggung sebelumnya, dalam melakukan abstraksi kita harus berfokus pada domain masalah yang akan diselesaikan. Domain masalah dari motion detection adalah komunikasi data, di mana komunikasi data yang terjadi adalah komunikasi data USB Webcam, webcam built in, atau webcam dengan konektor apapun, agar dimungkinkan video recording, dan komunikasi data penyimpanan ke media penyimpanan (misalnya hard disk). Data adalah fakta yang dinyatakan dalam bentuk simbol (Palgunadi:2007). Dengan demikian komunikasi data dapat diartikan sebagai komunikasi atau interaksi dari fakta yang diolah komputer atau bersama komponen tambahannya, dalam wujud data-data. Karena kebutuhan komunikasi data yang banyak tersebut, relatif tidak efisien jika kita menggunakan komunikasi data klasik, yang menggunakan data biner. Untunglah dengan menggunakan NET Framework kita tidak perlu dipusingkan lagi masalah tersebut, karena fitur generalisasi API-nya. Dengan memanfaatkan fitur tersebut pada pendekatan OOP kita hanya perlu mengabstraksikannya sekali saja. Agar abstraksi API ini dapat diimplementasikan dengan teknologi VisionLab, seperti telah disinggung sebelumnya dalam koneksi OpenWire, kita harus menggunakan tipe data yang kompatibel antara InputPin dan OutputPin yang dalam NET Framework kita dapat menggunakan DirectShow dengan tipe data filter (dengan API ini semua komunikasi data pada Windows dianggap sebagai filter-filter). DirectShow terdiri atas dua komponen utama, yakni filter, bagian terkecil DirectShow, dan filter graph, himpunan beberapa filter yang saling terhubung untuk menghasilkan suatu fungsionalitas (Juhara:2010). DirectShow memisah tugas kompleks menjadi deretan langkah pemrosesan dasar yang lebih sederhana ke dalam filter. Tiap filter memiliki paling tidak sebuah pin, dimana filter dihubungkan dengan filter lain dalam filter graph (Gambar 2).
14
Gambar 3 : Contoh Penanganan Display Video dengan Directshow (sumber : Juhara:2010) Jika kita menganalogikan filter graph sebagai sebuah pabrik mobil, maka hubungan filter-filter adalah jalur produksi dalam pabrik mobil, sedangkan filter adalah bagian produksi dalam pabrik. Material yang menyusun mobil adalah data yang diproses. Tiap bagian produksi menerima material mentah dan bagian produksi lain (input), mengolah material dan mengubahnya (processing) menjadi bentuk lain (output), yang kemudian mengirimkannya ke bagian produksi lain. 1.
Filter Filter adalah salah satu tingkat dalam pemrosesan data di filter graph. Filter
melakukan operasi terhadap sampel media. Ada tiga macam tipe filter: source filter, transform filter, dan rendering filter. Source filter sebagai penangkap data dari perangkat input,
transform filter mengolah sampel data, kemudian
mengubahnya menjadi bentuk lain, dan rendering filter mengirimkan data ke perangkat output seperti speaker, layar monitor, network atau disk atau bahkan bisa juga membuang data tersebut (Juhara:2010). 2.
Pin Pin adalah lokasi di mana dua buah filter dihubungkan. Tiap filter, paling
tidak harus memiliki sebuah pin untuk bisa dihubungkan dengan filter lain. Instance pin dibungkus dalam interface IPin yang menyediakan mekanisme koneksi dengan pin lain (Juhara:2010). Aplikasi menggunakan filter graph manager untuk menghubungkan filter-filter. 3.
Filter Graph Manager Filter graph manager adalah penampung dan pengelola filter- filter. Filter
graph manager menyediakan fungsi-fungsi untuk membangun susunan filter
15
dalam filter graph, mengoordinasi perubahan status filter-filter, mengatur clock referensi, dan memberi feedback ke aplikasi (Juhara 2010). Filter graph manager menyediakan objek-objek yang bertugas melakukan hal spesifik, seperti mengelola window yang digunakan untuk menampilkan data, pengaturan feedback, dan lain-lain. Filter yang digunakan dalam aplikasi ini adalah: a.
IMediaEvent Interface IMediaEvent mengelola feedback yang dikirim ke aplikasi.
Feedback ini berupa pemberitahuan kejadian (event notification) yang sedang terjadi di filter graph manager. b.
IVideoWindow. IViewWindow mengelola window yang digunakan untuk menampilkan data
video. Interface ini juga menyediakan fungsi-fungsi untuk mengelola mode full screen. 2.3.3. Cara Implementasi dengan VisionLab Setelah melakukan abstraksi di tingkat API, kita kini dapat beranjak ke cara implementasi pada library Mitov VisionLab. Seperti telah kita ketahui sebelumnya, VisionLab dikembangkan dari OpenWire, sehingga implementasi dengan VisionLab library pun mengikuti kaidah OpenWire. Karena sudah setengah jalan dengan selesai abstraksi di tingkat API, hal berikutnya yang harus dilakukan tinggal implementasi filter-filter yang tersusun dengan komponen VisionLab. Mengenai hasil implementasi akan dijelaskan pada desain dan perancangan. 2.4. Hipotesis Pada sub-bab 2.2.2 pembaca yang cermat mungkin telah membaca bahwa dalam penelitian penulis, Microsoft .NET Framework adalah lingkungan bahasa pemrograman dengan teknologi generalisasi API, sehingga memungkinkan kita untuk membuat aplikasi dengan dukungan penuh perangkat keras. Dengan maksud publikasi penelitian, dan mendeskripsikan keunggulan laporan dengan lebih baik sesuai latar belakang, pada kesempatan ini penulis mengajukan hipotesis generalisasi API dengan inspirasi dan tesis pengujian berikut ini:
16
2.4.1. Inspirasi Untuk hipotesis ini, penulis berangkat dengan tesis presentasi Microsoft Indonesia berikut ini sebagai inspirasi : “Visual Studio adalah produk unggulan kami, di mana dengan produk ini siapa saja akan dapat memprogram komputer dengan mudah. Khusus untuk anda mahasiswa, anda tinggal mempelajari persoalan teoretis fundamental saja (Sistem Operasi, Arsitektur, Komunikasi Data), ini yang membedakan anda dengan non-IT.” – Seminar Microsoft Road Innovation Road Trip 2010 oleh Narendra Wicaksono. Untuk mendukung alasan tersebut, pihak Microsoft juga memberikan sedikit gambaran teknologinya kepada peserta seminar untuk dikaji, di mana pembicara juga menjelaskannya bahwa solusi ini adalah sebuah revolusi Mircosoft untuk solusi pemrograman integrasional atau virtual di masa depan. Alasan tersebut dijelaskan secara singkat dengan gambaran sebagai berikut : A : NET 1.0 – CLR, Winforms,
D C B A
Web Service, ASP.NET B : NET 2.0 - WCF, WF, WPF, Cardspace, DirectShow C : NET 3.5 - LINQ, AJAX, REST D: .NET 4.0 Bilangan Kompleks, Gaming Control
Gambar 4 : Diagram .NET Microsoft (sumber : Microsoft:2010) Namun, sebagai orang yang terdidik untuk berpikir kritis dan ilmiah, wajar jika kita tidak percaya dan menggunakan mentah-mentah tesis mereka. Mungkin karena pertimbangan hal tersebut hanyalah iklan, dan sebagainya. 2.4.2. Hipotesis Pengujian Menanggapi hal di atas, penulis mengujinya dengan hipotesis berikut ini: Karena API dasar Windows (yang terpisah menjadi framework-framework tersendiri) dalam perkembangannya berevolusi menjadi .NET Framework dan pemrograman mainstream Windows, mungkin integrasi .NET-IDE Visual C#
17
2008 Express Edition merupakan solusi pemrograman yang efektif dan efisien untuk sistem operasi Microsoft Windows. Sehingga generalisasi framework dapat menjadi cara pandang baru dalam memecahkan permasalahan menggunakan ICT.
BAB III DESAIN DAN PERANCANGAN
Agar lebih memudahkan pembaca laporan ini di kemudian hari, penulis akan membagi pembahasan bab ini dengan urutan sebagai berikut : 1.
Persiapan
2.
Abstraksi dan desain interface (sebagai ganti kata desain dan perancangan)
3.
Implementasi (pembuatan aplikasi)
3.1. Persiapan Pada bagian ini akan dipersiapkan berbagai software yang diperlukan dalam pengembangan aplikasi motion detection dengan teknologi .NET 3.5 SP 1.. 3.1.1. Software yang Dibutuhkan Sebelum membangun aplikasi sederhana ini, perlu disiapkan komputer dengan sistem operasi Windows XP SP 2, sebuah webcam (USB/integrated di laptop) dan berbagai software sebagai berikut : C# IDE
: Visual C# Express Edition 2008
Library tambahan : VisionLab.NET 4.3.1 3.1.2. Instalasi 1.
Instalasi Visual C# Express 2008 Untuk instalasi pertama, penulis akan menunjukkan cara meng-install Visual C#
2008 EE. Langkah 1 Pembaca dapat memilih berkas instalasi Visual C# EE melalui berkas setup yang bersangkutan (misalnya dari CD TA Penulis). Program instalasi akan menyalin beberapa berkas instalasi yang dibutuhkan ke dalam sebuah folder sementara. Setelah penyalinan selesai, aplikasi setup akan ditampilkan dan hal tersebut yang menandakan bahwa instalasi siap dimulai.
18
19
Langkah 2 Pada halaman Welcome to Setup, pembaca dapat memberikan tanda centang (V) pada check box untuk mengirimkan user experience pada saat instalasi ke Microsoft. Pilih Next untuk melanjutkan.
Gambar 5 : Jendela Welcome to Setup Langkah 3 Aplikasi instalasi akan menampilkan halaman License Terms, pembaca dapat meluangkan waktu untuk memahami persyaratan tersebut, jika sudah pilih I have read and accept the license terms, setelah selesai, pilih Next untuk melanjutkan.
Gambar 6 : Jendela License Terms
20
Langkah 4 Halaman berikutnya berisi pilihan fitur program yang akan diinstal. Pada bagian ini, penulis menyarankan agar pembaca memasangkan semua fitur yang ada demi kelancaran dalam mengembangkan program. Pilih Next untuk melanjutkan.
Gambar 7 : Jendela Pilihan Fitur Program Langkah 5 Berikutnya akan ditampilkan folder tujuan instalasi. Secara default, folder tujuan telah ditentukan oleh program. Pilih lokasi yang sesuai dengan ruang disk yang tersedia, kemudian pilih Install.
Gambar 8 : Jendela Pilihan Lokasi Instalasi
21
Langkah 6 Proses instalasi akan berlangsung beberapa menit (kadang akan dilakukan restart jika program bermasalah, namun akan normal dan dilanjutkan lagi setelah restart). Setelah selesai, pilih Exit untuk keluar dari jendela setup.
Gambar 9 : Jendela Proses Instalasi
Gambar 10 : Jendela Keterangan Instalasi Visual C# Berhasil Langkah 7 Restart komputer agar aplikasi berjalan normal (sudah menyesuaikan dengan sistem operasi). Berikutnya pembaca dapat melakukan pengecekan hasil instalasi dengan membuka Visual C# yang bersangkutan.
22
2.
Menambahkan VisionLab ke Visual C# 2008 Express Edition Sebelum VisionLab ditambahkan ke Visual C# 2008 EE, terlebih dahulu
lakukan instalasi komponen VisionLab. Berikut ini cara instalasi VisionLab Langkah 1 Sebelum VisionLab diinstall, terlebih dahulu pastikan Microsoft Visual C# 2008 EE pembaca tidak mengalami masalah. Langkah 2 Unduh VisionLab (www.mitov.com), kemudian jalankan atau jalankan berkas setup yang telah penulis sertakan dalam CD TA. Klik dua kali berkas setup, akan muncul gambar di bawah ini :
Gambar 11 : Jendela Peringatan VisionLab (Tidak Menemukan Visual Studio 2005) Langkah 3 Pada gambar di atas muncul bahwa VisionLab tidak menemukan Visual Studio 2005 atau 2008, itu karena kita menggunakan Visual C# 2008 Express Edition. Klik OK, atau tekan Enter. Langkah 4 Pada halaman Welcome to Setup, pembaca dapat memilih tombol Next untuk melanjutkan.
23
Langkah 5 Aplikasi instalasi akan menampilkan halaman License Agreement, pembaca dapat meluangkan waktu untuk memahami persyaratan tersebut, jika sudah pilih I accept the agreement, pilih Next untuk melanjutkan.
Gambar 12 : Jendela License Agreement Langkah 6 Pada halaman Select installation type kita disuguhi pertanyaan mengenai tipe instalasi, karena penulis tidak memiliki tujuan komersial penulis memilih No Source code – Free For Non Commercial Use, pilih Next untuk melanjutkan.
Gambar 13 : Jendela Installaton Type
24
Langkah 7 Berikutnya akan ditampilkan folder tujuan instalasi. Secara default, folder tujuan telah ditentukan oleh program. Pilih lokasi yang sesuai dengan ruang disk yang tersedia, kemudian pilih Next untuk melanjutkan.
Gambar 14 : Jendela Pilihan Lokasi Instalasi Langkah 8 Halaman berikutnya berisi pilihan fitur program yang akan diinstal. Pada bagian ini, penulis menyarankan agar pembaca memasangkan semua fitur (full install) yang ada demi kelancaran dalam mengembangkan program. Pilih Next untuk melanjutkan.
Gambar 15 : Jendela Pilihan Fitur Instalasi
25
Langkah 9 Setelah yakin, dengan ringkasan pilihan setup (Ready to Install) yang ditampilkan halaman ini, pilih Install.
Gambar 16 : Jendela Pilihan Paket Instalasi Langkah 10 Tunggu proses instalasi, hingga muncul halaman Package Installation Options, klik Next saja, hingga Finish. 3.
Menambahkan VisionLab ke Visual C# 2008 Express Edition
Langkah 1 Sebelum library VisionLab ditambahkan ke Visual C# 2008 Express Edition, terlebih dahulu pastikan VisionLab dan Microsoft Visual C# 2008 Express Edition pembaca tidak mengalami masalah. Langkah 2 Jalankan Visual C# 2008 Express Edition Langkah 3 Buat tab baru pada toolbox (Ctrl + W + X), dengan cara pilih General Klik kanan Add tab, seperti terlihat pada gambar di bawah ini. dengan nama VideoLab.
26
Langkah 4 Seperti pada langkah ke-2 dan ke-3, tambahkan beberapa tab lagi dengan nama VisionLab.
Gambar 17 : Membuat Tab Baru Langkah 5 Agar item pada toolbox VideoLab, dan VisionLab keluar (dapat digunakan) lakukan hal berikut : Pilih untuk salah satu tab baru tadi, dalam praktek penulis memilih VideoLab terlebih dahulu, jadi klik VideoLab klik kanan Choose Items, seperti pada gambar di bawah ini :
Gambar 18 : Choose Items pada VideoLab
27
Langkah 6 Akan muncul form Choose Toolbox Items, seperti terlihat pada gambar di bawah ini, klik browse.
Gambar 19 : Form Choose Toolbox Items Langkah 7 Muncul dialog Open. Arahkan ke lokasi instalasi VisionLab. Pada proyek ini, penulis meng-install VisionLab di C:\Program Files\LabPacks\DotNET\Bin.
Gambar 20 : Lokasi Instalasi VisionLab Langkah 8 Pada form Open di atas, pilih VideoLabBasic.dll, lalu tekan Open. Pembaca akan kembali ke form Choose Toolbox Items.
28
Gambar 21 : Form Choose ToolBox Items Langkah 9 Biarkan Items yang bertanda centang tersebut, lalu klik OK. Langkah 10 Ulangi
langkah
5-9,
untuk
VideoLab
tambahkan
VideoLabAdditional.dll, dan untuk tab VisionLab tambahkan VisionLab.dll Langkah 11 Setelah langkah 1-10 akan terlihat bagian toolbox seperti ini :
Gambar 22 : Hasil Akhir Penambahan Items VisionLab
lagi
29
3.2. Abstraksi dan Desain Interface Setelah selesai melakukan tahap persiapan, pembaca kini sudah siap untuk membuat aplikasi. Namun sebelumnya (jika pembaca cukup sabar, dan berminat dengan ide penulis), mari kita deskripsikan dulu tujuan kita membuat program dengan bahasa alami (bahasa ibu programmer untuk membantu mendeskripsikan idenya). “Penulis ingin membuat aplikasi di mana aplikasi tersebut dapat mengendalikan webcam (input) untuk mendeteksi gerakan (motion detection) secara otomatis (process) dari rekaman realitas (video recoring) dan dapat menyimpannya (output) di folder yang sudah disediakan (storage media).” Beranjak ke model perintah yang sedikit rumit, penulis akan menjabarkan perintah tadi dengan abstraksi, agar dapat fokus ke objek yang akan diimplementasikan. Penulis akan memulai dengan memecah persoalan untuk mendapatkan domain solusi, dan berikut hasil abstraksi penulis : 1.
Abtraksi Pertama dan Hasil Interfacenya Untuk membuat aplikasi ini, dibutuhkan lima penyusun utama, penampil
(penampil berjumlah dua, display rekaman realitas, dan display motion detect), tombol yang mengontrol webcam untuk memulai motion detect, tombol untuk menghentikan motion detect, tombol untuk memilih sensitifvitas, dan tombol untuk memilih perangkat capture (webcam).
DISPLAY REKAMAN REALITAS
SELECT SOURCE
DISPLAY MOTION DETECT
MULAI
STOP
SENSITIFITAS
Gambar 23 : Interface Hasil Abstraksi Pertama
30
2.
Abstraksi Kedua dan Hasil Interfacenya Tombol untuk memulai dan menghentikan dapat dijadikan satu, dengan
logika percabangan. Karena pada display hasil motion detect, diinginkan gambar mudah tersimpan dengan ukuran sama yang mendukung konsep array maka penampil gambar ditambahkan lagi satu komponen sebagai tempat gambar agar mudah dikonversi yaitu PictureBox. Agar rapi kedua penampil lebih baik dijadikan grup masing-masing dengan groupbox.
DISPLAY REKAMAN REALITAS
PENAMPIL GAMBAR PICTURE BOX
SELECT SOURCE
START/STOP
SENSITIFITAS
Gambar 24 : Interface Hasil Abstraksi Kedua Selesai mengabstraksikan objek pada abstraksi kedua, berarti kita sudah dapat mulai mengidentifikasi bagaimana objek akan diimplementasikan. Select source diimplementasikan dengan pemilihan sumber device, start/stop
selain
mengganti label, juga berisi implementasi mulai atau menghentikan capture (menggunakan genericFilter). Dan terakhir, pada sensitifitas, penulis akan membandingkan nilai sensitifitas gerakan (berupa filter frekuensi sesuai efek doppler) dengan video rekaman realitas.
31
3.
Abstraksi DirectShow Filter (Perancangan Proses Aplikasi) Selesai mendesain interface mari kita rancang proses yang bekerja di
dalamnya. Adapun dengan mengacu bahasa alami dan abstraksi sebelumnya, kita dapatkan DirectShow filter sebagai berikut :
A
B
C
D
E
Gambar 25 : Abstraksi Komunikasi Data dengan DirectShow Keterangan : A : Filter Source (untuk mendapatkan sumber device) B : Filtergraph IMedia Control (memulai prosedur capture) C : Filter iMediaEvent (pemantauan event) D : Prosedur genericFilter1_ProcessData (untuk pembanding motion detect/efek doppler –kirim ke outputpin dan olah ke motion detect-) E : Filter Transform (mengubah menjadi gambar .*bmp) F : Filter Rendering dan IvideoWindow (keduanya berperan dalam menampilkan) 4.
Implementasi Penggerak Proses dengan VisionLab Sebelumnya kita sudah mengetahui bahwa VisionLab akan memudahkan
kita hingga setengah jalan jika sudah benar dalam mendefinisikan filter-filter sebagai komponen komunikasi data. Sekarang kita kerjakan setengah jalan yang lain, agar komunikasi data aplikasi ini menjadi jelas. Ibarat memerintah karyawan, seorang bos dalam kasus kita sebelumnya, ia juga harus membayangkan jalan dan transportasi apa yang digunakan karyawannya agar misinya berhasil. Berikut komunikasi data dari proses yang diimplementasikan dengan “penggerak proses” atau objek-objek yang akan kita komunikasikan hingga membentuk komunikasi data webcam berbantu komputer untuk mendeteksi gerakan secara otomatis :
32
Gambar 26 : Implementasi Komunikasi Data Objektif Motion Detection 3.3. Implementasi (Pembuatan Aplikasi) Berikut ini langkah-langkah pembuatan aplikasi motion detection dengan Visual C# 2008 Express Edition. Langkah 1 Jalankan Visual C# 2008 Express Edition, lalu klik File New Project. Langkah 2 Pada jendela New Project, pilih Window Forms Application dan beri nama motion_detect, lalu klik OK.
Gambar 27 : Jendela New Project Langkah 3 Simpan proyek dengan klik File Save All. Ketikkan nama, lokasi proyek, dan solution name, lalu klik Save.
33
Langkah 4 Pada Form1, tambahkan komponen berikut : 3 x Button (dapat ditambahkan dari toolbox tab All Windows Forms) 2 x GroupBox (dapat ditambahkan dari toolbox tab All Windows Forms) 2 x DSImageDisplay (dapat ditambahkan dari toolbox tab VideoLab) 1 x PictureBox (dapat ditambahkan dari toolbox tab All Windows Forms) 2 x DSCapture (dapat ditambahkan dari toolbox tab VideoLab) 1 x genericFilter (dapat ditambahkan dari toolbox tab VideoLab) 1 x motionDetect (dapat ditambahkan dari toolbox tab VisionLab) Langkah 5 Atur posisi dari komponen yang ditambahkan tadi sehingga terlihat seperti gambar di bawah ini :
Gambar 28 : Pengaturan Posisi Komponen Aplikasi
34
Langkah 6 Atur properti komponen (dengan klik kanan komponen pilih Properties) yang ditambahkan pada langkah 5 seperti pada ditunjukkan tabel berikut : Tabel 1 : Pengaturan Properti Komponen Aplikasi Komponeen
Properti
Nilai Properti
Form1
Text
Motion Detect
GroupBox1
Text
Video Source
GroupBox2
Text
Motion Detect
Button1
Text
Select Source
Button2
Text
Start
Enable
False
Text
Sensitifitas
Enable
False
DSImageDisplay1
Anchor
Top, Bottom, Left, Right
DSImageDisplay2
Anchor
Top, Bottom, Left, Right
dsCapture1
Enable
False
PictureBox
Visible
False
Button3
Sehingga tampak seperti pada gambar di bawah ini :
Gambar 29 : Tampilan Form Setelah Properti Diatur Langkah 7 Pada DSCapture1 pilih OuputPin, lalu klik tombol
35
Langkah 8 Pada open wire connection editor, pilih InputPin dari dsImageDisplay1 dan motionDetcct1, lalu klik OK.
Gambar 30 : Pemilihan InputPin untuk DSCapture1 Langkah 9 Pada motionDetect1, pilih OuputPin, lalu klik tombol Langkah 10 Pada
dialog
motionDetect1.OutputPin,
pilih
InputPin
dsImageDisplay2, dan genericFilter1, lalu klik OK.
Gambar 31 : Pemilihan InputPin untuk motionDetect.OutputPin Langkah 11 Pada motionDetect1, pilih MotionGrid, lalu tekan tombol
dari
36
Langkah 12 Ubah jumlah kolom dan baris berikut nilainya menjadi seperti gambar di bawah, lalu klik OK. Nilai sensitifitas ini berkisar antara 0-9. Nilai 0 menunjukkan sensitifitas rendah, sementara 9 menunjukkan sensitifitas tinggi.
Gambar 32 : Pengaturan Motion Grid (untuk Sensitifitas) Langkah 13 Klik tombol SelectSource, lalu tuliskan program di bawah ini. Private void button1_Click(object sender, EventArgs e) { dsCapture1.VideoCaptureDevice.ShowDeviceSelctDialog(); button2.Enabled = true; button3.Enabled = true; }
Program di atas berfungsi untuk menampilkan dialog pemilihan source device
yang
akan
digunakan,
yaitu
dsCapture1.VideoCaptureDevice.ShowDeviceSelctDialog();
pada
fungsi
37
Langkah 14 Klik tombol Start, lalu tuliskan program di bawah ini. Private void button2_Click(object sender,EventArgs e) { If (button2.Text == “Start”) { dsCapture1.Enabled = true; dsCapture1.Start(); button1.Enabled = false; button2.Enabled = “Stop”; } else { dsCapture1.Stop(); dsCapture1.Enabled = false; button1.Enabled = true; button2.Text = “Start”; button2.Enabled = false; button3.Enabled = false; } }
Untuk memulai capture digunakan fungsi dsCapture1.Start(); Untuk menghentikannya digunakan fungsi dsCapture1.Stop(); Langkah 15 Klik tombol Sensitifitas, lalu tuliskan program di bawah ini. Private void button3_Click(object sender, EventArgs e) { motionDetect1.MotionGrid.ShowDialog(); } Fungsi
motionDetect1.MotionGrid.ShowDialog();
menampilkan form sensitifitas pada langkah 12.
digunakan
untuk
38
Langkah 16 Klik genericFilter1 Event
, lalu klik ganda ProcessData. Tuliskan
program di bawah ini. Private Int16 ulang; private
void
genericFilter1_ProcessData(object
Sender,
Mitov.VideoLab.VideoProcessDataEventArgs Args) { System.Drawing.Bitmap ABitmap = Args.InBuffer.ToBitmap(); pictureBox1.Image = ABitmap; pictureBox1.Image.Save("E:/ " + Convert.ToString(ulang) + ".bmp"); ulang++; } Langkah 17 Untuk menjalankan program, klik Start Debuging
atau tekan F5
Langkah 18 Agar aplikasi dapat dijalankan di komputer lain (re-distribuadalbe), salin (copy) terlebih dahulu library VisionLab di lokasi instalasi VisionLab yang sudah dipilih
sebelumnya.
Files\LabPacks\DotNET\Bin..
Penulis
meng-install
di
C:\Program
BAB IV PENGUJIAN DAN ANALISA
4.1. Pengujian Sistem Sistem dapat diuji dengan cara sebagai berikut : 1.
Jika PC/laptop belum terinstall .NET framework 3.5 SP 1 (untuk user yang sudah meng-install Visual C# 2008 EE, otomatis sudah terinstall), install terlebih dahulu agar API general dikenali komputer.
2.
Jalankan
aplikasi
dari
folder
proyek
aplikasi,
misalnya
:
C:/motion_detect/motion_detect//bin/Debug/motion_detect.exe.
Gambar 33 : Jendela Awal Aplikasi 3.
Klik Select Source untuk memilih input webcam, bisa default jika ingin memilih webcam utama atau USB Video Device untuk pengguna USB webcam,
sedangkan
untuk
laptop
dapat
memilih
teridentifikasi sesuai merknya. Tekan OK jika setuju.
webcam
yang
40
Gambar 34 : Jendela Select Source 1.
Secara opsional pembaca dapat memberi nilai sensitifitas (1-10), dengan klik tombol Sensitifitas, kemudian isi cols dan rows pada dialog Edit Motion Grid. Tekan OK jika setuju.
Gambar 35 : Dialog Edit Motion Grid Sebagai Sarana Pemilihan Nilai Sensitifitas 2.
Untuk memulai tekan Start
3.
Gerakkan objek yang telah terfokus
4.
Jika ingin berhenti, klik tombol Stop
5.
Cek hasil capture pada lokasi yang telah ditentukan
41
Gambar 36 : Lokasi File Hasil Capture Pengujian sistem oleh penulis, dilakukan pada objek (botol bekas air minum) yang digerakkan berayun selama 8 detik dengan webcam VGA merk iTech (sensor CMOS). Variabel pokok adalah set nilai sensitivitas, yaitu acak (random) dan default (kolom 10, baris 10 (10:10)), yang menghasilkan lebih banyak gambar dengan sensitivitas tinggi (nilai 10:10, atau default). Untuk Pembuktian API DirectShow sendiri aplikasi dijalankan pada laptop Acer (embedded webcam 1,3 Mega Pixel, sensor CMOS). Adapun batasan lain dari pengujian ini adalah : 1.
Warna objek tidak boleh terlalu sama dengan warna latar belakang (background).
2.
Jarak objek dari kamera 10 centimeter.
3.
Jumlah objek yang digerakkan hanya 1 buah.
4.
Faktor acak posisi awal, dan kecerahan cahaya dalam ruangan diabaikan. Tabel 2 : Hasil Lengkap Pengujian Sistem pada USB Webcam dan Embedded Webcam
PC/Laptop
Banyak Pengujian
Banyak Pendeteksian Gerakan Set Sensitivitas (8:2) I
II
III IV
RT
Default I
II
III IV RT
PC
4
12 14 13 12 12.75 15 16 17 16
16
Laptop
4
13 14 14 15
17
14
17 17 18 16
42
Keterangan : RT = Rata-rata (jumlah total hasil percobaan.banyaknya pengujian) 12.75 dapat diartikan stabil antara 12-13 gambar.
Berikut gambar yang didapatkan pada PC dan Laptop
Gambar 37 : Gambar yang Dicapture dengan Webcam VGA
Gambar 38 : Gambar yang Dicapture dengan Webcam 1.3 MP Nampak bahwa jenis resolusi kamera menentukan jernihnya gambar, sedangkan jumlah capture relatif sama karena menggunakan sensor yang sama (CMOS). 4.2. Analisis 4.2.1. Cara Bekerjanya Sistem Blok diagram sistem untuk mendeteksi gerakan dan penyimpanan outputnya dalam format .bitmap (.*bmp) dapat dilihat pada Gambar: OBJEK TERFOKUS
FRAME
EFEK DOPPLER
KONVERSI
BANDINGKAN
Gambar 39 : Diagram Blok Cara Bekerjanya Sistem
43
Keterangan : 1.
Objek terfokus membentuk frame yang terlihat pada display video source (jika tidak bergerak, prosedur lanjut tidak dijalankan).
2.
Perubahan frame karena efek doppler (terlihat pada display video source dan motion detect) Simpan frame sebelumnya dalam memori buffer.
3.
Bandingkan dengan nilai sensitifitas (jika tidak sesuai, maka tidak tersimpan.
4.
Konversi gambar simpan dalam media storage (dengan lokasi yang telah ditentukan pada aplikasi) Dapat disimak bahwa proses cocok dengan abstraksi DirectShow API
(Gambar 25), maka analisa dilanjutkan pada analisa implementasi listing. 4.2.2. Analisis Implementasi Listing Pemrograman Dalam menganalisa listing (daftar perintah) pemrograman, programmer tidak akan pernah bisa lepas dari logika bahasa pemrograman yang digunakan. Adapun logika pemrograman yang digunakan untuk membangun aplikasi ini yaitu: 1.
Abstraksi Mengikuti kaidah OOP bahwa dalam pembuatan aplikasi, programmer
harus fokus pada domain masalah, aplikasi ini dibagi kelas-kelas yang mewakili event atau proses aplikasi. Adapun event dalam aplikasi ini yaitu : a.
Memilih perangkat yang teridentifikasi aplikasi (Select Source);
b.
Memilih sensitifitas;
c.
Memulai dan mengakhiri proses capture (pengambilan gambar);
d.
Proses penyimpanan gambar.
2.
Percabangan Saat aplikasi dijalankan dapat disimak bahwa tombol start dan stop saling
menggantikan dalam aplikasi ini, jika start hidup, stop mati dan sebaliknya (vice versa). Lebih jauh lagi, saat tombol dengan tulisan (text) start aktif, maka tombol dengan text select source juga ikut aktif. Berikut pembahasan listing yang diketikkan sehingga dapat menjelaskan proses ini:
44
// BERIKUT ADALAH BARIS MULAI PENJELASAN AKTIVASI If (button2.Text == “Start”) { dsCapture1.Enabled = true; dsCapture1.Start(); button1.Enabled = false; button2.Enabled = “Stop”; // BERIKUT ADALAH AKHIR DARI PENJELASAN AKTIVASI } // BERIKUT ADALAH BARIS MULAI PENJELASAN PENGHENTIAN else { dsCapture1.Stop(); dsCapture1.Enabled = false; button1.Enabled = true; button2.Text = “Start”; button2.Enabled = false; button3.Enabled = false; // BERIKUT ADALAH AKHIR PENJELASAN PENGHENTIAN }
Keterangan listing : Proses aktivasi capture : Proses DSCapture berjalan (enabled) jika tombol dengan tulisan (text) start (button2) ditekan, setelah itu, tulisan pada tombol start akan diganti dengan stop dan select source (button1) mati. Proses penghentian : Proses dihentikan jika tombol dengan tulisan stop ditekan, diikuti proses lain yaitu tombol dengan tulisan select source (button1) dan sensitiftas (button3) kembali aktif, setelah itu tulisan stop digantikan start. 3.
Penggunaan Library Tambahan (OOP) Telah dibahas sebelumnya bahwa melalui library tambahan, programmer
akan dibantu dalam menyederhanakan aplikasinya. Untuk aplikasi ini, programmer dimudahkan karena Visual C# dan library-nya sejak awal telah menerapkan konsep pewarisan, enkapsulasi, klasifikasi, polymorphism, dan pesan yang disebut logika OOP dasar (Hariyanto:2007).
45
Berikut dijabarkan fungsi lima konsep di atas pada aplikasi motion detection ini : a.
Proses enkapsulasi menyembunyikan perintah yang sejatinya dilakukan oleh library tambahan, melalui deklarasi private.
b.
Proses polymorphism diantarnya membuat perintah sensitifitas menjadi satu perintah.
c.
Proses klasifikasi membuat program kita modular (dapat dipisahkan) dalam tombol-tombol, dan display-display.
d.
Proses pewarisan diantaranya memudahkan kita dalam menjaga konsistensi ukuran input-outpu, dan dapat digunakannya konversi ke bitmap (*.bmp) dengan sekali panggil (melalui system.drawing.bitmap).
e.
Proses komunikasi pesan (lewat Open Wire Connection Editor), membuat objek-objek kita dapat bekerja bersama-sama karena membentuk kesatuan sebagai events. Berikut dua penerapan logika OOP pada aplikasi:
a.
Using System.Drawing Aplikasi dapat menggunakan semua kelas dalam library System.Drawing di mana terwujud dalam prosedur.yang digunakan dalam objek.
b.
dsCapture1.VideoCaptureDevice.ShowDeviceSelctDialog(); Aplikasi
menggunakan
library
dsCapture1.VideoCapture
untuk
menampilkan objek dialog show device. 4.
Array Seperti telah disinggung dalam pendahuluan, minimal suatu program
berinteraksi dengan memori dan prosesor. Dalam program ini agar dapat menangkap perubahan gerakan, webcam harus berinteraksi dengan memori yang dapat menyimpannya. Hal inilah yang menjadi kesamaan prinsip kerja sistem ini dengan “kawan lama kita” kamera gambar hidup. Dalam kamera gambar hidup, ada peristiwa “penglihatan yang tertinggal” pada pengamat (manusia) karena kecepatan bergantinya gambar dalam suatu peristiwa (frekuensi) lebih cepat dari kemampuan pengamat (sensitifitas pengamatan), dalam fisika hal ini dikenal
46
dengan istilah efek doppler. Untuk bidang komunikasi data, efek doppler dapat diartikan sebagai besar pergeseran frekuesni saja (Einstein:2005). Berangkat dengan teori efek doppler dalam bidang komunikasi data, dapat diaplikasikan bahwa dalam aplikasi ini dibutuhkan memori yang dapat diatur sensitifitasnya, di mana terwujud dengan implementasi kode sebagai berikut : Private void button3_Click(object sender, EventArgs e) { motionDetect1.MotionGrid.ShowDialog(); } Keterangan listing : Karena dijalankan fungsi motionDetect1.MotionGrid.ShowDialog(); maka aplikasi memberikan umpan balik dialog kepada user untuk memilih motion grid sebagai data input pembanding (daya sensitifitas yang diinginkan). Penyimpan daya sensitiftas yang diatur dengan dua nilai ini disebut array. Array adalah sekumpulan tempat penyimpanan data (variabel) yang bertipe sama, dan diberi nama sama (Darmawan:2009). Namun untuk membedakannya array juga memiliki index (terwujud dalam output foto dengan nama 0, 1, 2, dan seterusnya). Dalam pemrograman, array ini juga berfungsi sebagai pointer. Pointer adalah variabel khusus yang digunakan untuk menyimpan memori dari variabel lain (Darmawan:2009). Artinya kita dapat memesan tempat di dalam memori dan memberi nama sesuai variabel yang di-point (ditunjuk). Sehingga dengan sifat pointer memungkinkan programmer untuk menyimpan hasil capture aplikasi pada sebuah folder dengan implementasi sebagai berikut : private Int16 ulang; private
void
genericFilter1_ProcessData(object
Sender,
Mitov.VideoLab.VideoProcessDataEventArgs Args) { System.Drawing.Bitmap ABitmap = Args.InBuffer.ToBitmap(); pictureBox1.Image = ABitmap; pictureBox1.Image.Save("E:/ " + Convert.ToString(ulang) + ".bmp");
47
ulang++; } Keterangan listing : Setelah didapatkan hasil gerakan (melalui DSCapture pada array motionDetect, filter motionDetect menampilkan hasilnya pada DSImageDisplay dan mengolahnya pada genericFilter (lihat Gambar 26 (implementasi komunikasi data
objektif
motion
detection)).
GenericFilter
sesuai
listing
di
atas,
menyimpannya pada pictureBox dan mengonversi nilai yang ditangkap filter motionDetect sebagai String yang disimpan sebagai bitmap. 5.
Perulangan Pada pembahasan listing logika keempat (array) dapat diamati adanya
perintah private Int16 ulang; dan perintah unary (satu operand) ulang++ untuk memanggilnya. Perintah ini menandakan prosesor akan melakukan interupsi pengulangan capture, selama user tidak menekan tombol stop (menghentikan program) dan objek terus bergerak. 4.3. Pembuktian Hipotesis Setelah menyimak penjelasan mengenai abstraksi dan pembuatan aplikasi, mungkin pembaca sudah dapat memahami bahwa dengan Visual C# 2008 EE, programmer benar-benar dimudahkan untuk mengimplementasikan hasil abstraksi yang telah kita jabarkan Sehingga nampak jelas dengan sendirinya bahwa proses pemrograman motion detection ini dapat dijabarkan sebagai berikut: Abstraksi Organisasi objek-objek hasil abstraksi (akan lebih mudah jika kita mengetahui juga organisasi pemroses (komputer) dengan alat yang dikontrol, misalnya dengan bantuan DirectShow, untuk kasus webcam ini) Implementasi dengan C# dan library VisionLab. Namun masih timbul sebuah pertanyaan : “Bagaimana bisa webcam konektor USB dengan webcam embedded dapat diidentifikasi aplikasi tanpa pengaturan seperti solusi aplikasi terdahulu?” Inilah yang disebut dengan API. Dengan API semua hardware telah diidentifikasi sistem operasi sebagai objek umum sehingga mudah diabstraksikan.
48
Sama halnya dengan tongkat, martil, dan kayu yang dapat kita identifikasi sebagai alat pukul. Sejak komputer berevolusi menjadi mesin multimedia dan hiburan, pasar komputer dibanjiri oleh beragam perangkat multimedia, seperti digital video camcoder, webcam. Dengan banyaknya vendor dan jenis perangkat yang dirilis, menjadi tidak mudah bagi pengembang aplikasi untuk mendukung semua perangkat tersebut. Maka jelas bahwa ada kebutuhan akan sebuah Application Programming Interface (API) yang mampu menjembatani, dan memberi solusi masalah ini (Kurniawan:2010). Salah satu API tersebut adalah DirectShow yang digunakan dalam pembuatan aplikasi ini. Ada banyak API yang digunakan IDE non-Microsoft, seperti COM pada Delphi. Namun
dengan
makin
kompleksnya
masalah
yang
membutuhkan
penanganan dengan ICT, menjadi tidak efisien dan relatif kurang kreatif jika programmer hanya menggunakan satu jenis API saja, lebih tidak mengena lagi jika masih menggunakan pemrograman prosedural, karena listing yang begitu banyak. Berikut beberapa perbandingan penggunaan API tunggal dan general dan .NET framework : 1.
Dengan logika objektif sama-sama dapat menyentuh persoalan, namun dengan API tunggal, solusi inovatif biasanya buntu, dan memerlukan program pihak ketiga. Misalnya kontrol mikrokontroller untuk instrumentasi humiditas, jika mengandalkan API tunggal programmer hanya dapat menggunakan satu aplikasi saja (misalnya jika suhu sekian nyalakan kipas A), jika ingin menambahnya harus menggunakan API lain seperti phpMySQL (yang sekarang dikritik keamanannya) untuk basis data di web. Dengan API general cukup satu pemrograman saja, tanpa perlu belajar sintaks dasar SQL.
2.
Untuk kasus motion detection, tanpa menggunakan manajemen memori otomatis (salah satu fitur .NET), programmer akan kesulitan mendefinisikan memori yang digunakan, di mana hal tersebut sering mengurangi performa program.
49
3.
Untuk pemrograman yang belum mendukung framework objektif, komunikasi data harus menggunakan data biner atau heksadesimal, sehingga tidak hanya harus mempelajari prinsip kerja suatu alat, programmer harus mengetahui juga batasan data, dan debug-nya tidak efisien. Bahkan dalam banyak kasus penelitian hanya menghasilkan produk yang “itu-itu saja” karena inovasi terbentur sulitnya menguasai batasan data alat. Dalam pengujiannya hipotesis telah memenuhi kaidah penalaran deduktif,
sebagai berikut: 1.
Kaidah keacakan : Setidaknya ada satu alternatif mirip peluang (DirectShow)
2.
Riset alternatif lain (WIA:lihat daftar pustaka PCMedia), dan banyak dari artikel lain.
3.
Frekuensi relatif percobaan dengan hasil yang positif, membuktikkan hipotesis cocok dengan realitas saat ini. Dapat diambil kesimpulan bahwa : Semua anggota API Windows sebelumnya terbukti digeneralisasi Microsoft,
atau dapat diringkas dengan pernyataan sebagai berikut : Standar Tersendiri API (dimengerti oleh komputer sebagai objek dengan nama yang sudah ditentukan) yang dapat diatur dengan aplikasi pendukung API .NET Framework (API Windows tergeneralisasi) yang dapat diatur dengan Visual Studio. Atau dapat dirumuskan dengan bahasa matematis sebagai berikut : Setiap teori generalisasi yang tentunya bersifat umum, harus sedemikian rupa susunannya, sehingga hipotesis ditransformasikan ke bentuk yang persis sama bila peubah-peubah a a’, atau b b’ (domain masalah untuk solusi terdahulu (framework terpisah)), dinyatakan dalam bentuk baru (a, b, … n) A. Dalam kaitan ini, huruf dengan tanda aksen (a’, b’, ... n’) menandakan framework lama yang dipakai untuk pemecahan solusi, sedangkan A merupakan solusi yang telah digeneralisasi (NET Framework yang mendukung solusi lama, misalnya DirectShow, berarti kita dapat memakai NET 2.0 atau lebih tinggi).
50
4.4. Asas Manfaat Produk Dengan capaian kajian kita sejauh ini, kita sudah mendapati bahwa pemilihan program IDE C# (disertai library tambahannya) dan .NET Framework terbukti efektif dan efisien dalam perjalanannya, karena selain gratis (minim modal finansial), kita juga disediakan fitur-fitur yang berimplikasi pada cara pandang memecahkan masalah dengan ICT yang dapat dibilang mudah. Sehingga asas manfaat dasar (meminimalkan modal, memaksimalkan hasil yang didapatl) telah terpenuhi. Tiba pada kajian lanjut (pemasaran, pengembangan, dan lainnya) sehingga diskursus kita kali ini menjadi kompleks. Untuk pemasaran sendiri aplikasi ini sejatinya non-komersial, namun mengingat jumlah pengguna gadget yang ditanam fungsi kamera kian meningkat dari hari ke hari, terutama di kalangan urban, penulis menyarankan kepada pengembang aplikasi ini (penulis sendiri menyerahkan hak aplikasi ini kepada semua yang ingin mengembangkan (freeware open source)) nantinya dapat membuat aplikasi motion detection untuk suatu gadget misalnya iPod sehingga kita dapat menjualnya secara online, atau menawarkan kerjasama bundling dengan produk mereka.
BAB V PENUTUP
5.1. Simpulan Setelah melakukan perancangan dan implementasi pada sistem dapat disimpulkan bahwa : 1.
Webcam dapat digunakan sebagai sensor untuk mendeteksi gerakan, dengan bantuan aplikasi .NET yang terintegrasi (komunikasi data objektif).
2.
Penggunaan webcam sebagai input mengakibatkan keterbatasan pada sistem, seperti warna tersebut tidak boleh terlalu menyerupai background, dan jarak efektif yang cukup pendek karena citra kabur.
3.
Sebuah ide menjadi penemuan hanya ketika kita menunjukkan bahwa ide tersebut dapat bekerja. Pembuatan rencana yang sistematis-bekerja dengan abstraksi dan diakhiri dengan uji, pada pembuatan aplikasi komputer sangat membantu programmer.
4.
Integrasi Visual C# 2008 Express Edition – Library tambahan dari mitov (www.mitov.com) dapat menjadi solusi pembuatan dan pengembangan aplikasi yang powerfull. Dapat dilihat pada situsnya yang menyediakan banyak library yang dapat dimanfaatkan membuat aplikasi kaya guna, dari instrumentasi digital, signal processing, hingga penghitungan kompleks berbasis Artificial Intellegence dapat dibuat dengan integrasi ini dengan relatif mudah. Hal ini karena Microsoft melalui NET Framework membuat terobosan dengan mengintegrasikan banyak API yang telah mereka rilis.
5.
Menurut hemat penulis, aplikasi motion detection ini sudah cukup efektifefisien, karena selain dapat dibuat dengan modal yang relatif sedikit (cukup memerlukan webcam, karena Visual C# dan library tambahannya gratis), dibanding membeli kamera pendeteksi gerakan otomatis yang relatif mahal, kita masih dapat membuat sesuai keinginan kita selama potensi (kita dan teknologi) masih mendukung, misalnya sensitifitas yang dapat diatur pada aplikasi motion detection buatan penulis.
52
5.2. Saran Bertolak pada semua poin simpulan di atas, penulis menyarankan supaya pembaca mengembangkan alter ego (potensi diri) masing-masing seluas-luasnya, tidak hanya dalam ICT, tapi juga ilmu-ilmu mendasar (matematika (baik aliran simbolis-logikal-hukum), bahasa (baik era pra-modern, modern, postmodern), seni (baik filsafati-praktik), ilmu alam, dan humaniora), karena dalam proses kreatif (saturasi (kritis awal, mimpi) – inkubasi (riset) – iluminasi (pencerahan)), semua dapat dipetakan dengan poin-poin simpulan di atas. Mengenai ide pengembangan, C# dan library tambahannya (khusunya dari www.mitov.com) masih memiliki ranah yang luar biasa luas, karena seperti sudah disinggung pada manfaat penelitian, proyek TA penulis ini memang sengaja dibuat relatif mendasar yang mudah-mudahan dapat menjadi pintu masuk ke proyek yang lebih kreatif-inovatif. Khusus untuk pembaca yang tertarik mengkomersialkan produknya, dalam buku putih Kementerian Ristek dan Teknologi (dapat diunduh di www.ristek.go.id), mantan Menristek Kusmayanto Kadiman telah mencanangkan program resolusi riset Indonesia dengan sinergi ABG (Academic-Business-Government), di mana kita dapat mengajukan penelitian kita ke bagian akademik yang berwenang di UNS, yang akan membantu kita dalam langkah sinergis lanjutnya (Government-Business). Untuk yang ingin menjadi penemu lepas (independent), dapat membaca referensi lebih lanjut, salah satunya : Steven Caney – Buku Tentang Penciptaan, terbitan Karisma Publishing.
DAFTAR PUSTAKA
Buku Caney, Steven. 2008. Buku Tentang Penciptaan, Karisma Publishing : Tangerang. Darmawan, Erico. 2009. Pemrograman Dasar C – Java – C#, Penerbit Informatika : Bandung. Einstein, Albert. 2005. Relativitas : Teori Umum dan Khusus, Cetakan Pertama, Kepustakaan Populer Gramedia (KPG) : Jakarta, halaman : 59. Hariyanto, Bambang. 2007. Esensi-esensi Bahasa Pemrograman Java, Edisi 2, Cetakan Pertama, Penerbit Informatika : Bandung. Kurniawan, Dayat. 2010. Aplikasi Elektronika dengan Visual C# 2008 Express Edition (Menguasai Pembuatan Aplikasi Elektronika Sederhana Berbasis ATMega 8). Eles Media Komputindo : Jakarta, halaman : 95-103. Philbin, Tom. 2008. 100 Penciptaan Terbesar Sepanjang Sejarah, Cetakan Pertama. Karisma Publishing : Tangerang, halaman : 259-262. Popper, Karl R. 2008. Logika Penemuan Ilmiah, Cetakan Pertama. Pustaka Pelajar : Yogyakarta. Pranoto, Eka Dharma. 2007. The Art of Debugging, Cetakan Pertama, Andi Offset : Yogyakarta.
Majalah dan Tabloid Hutabarat, Bernaridho Immanuel. 2007. Sistem Olah Data: (Tidak) Asal Usul. PCMedia edisi 04/2007, halaman 80. Juhara, Zamrony P. 2010. DirectShow: Mengutak-atik Filter Graph. PCMedia edisi 02/2010, halaman 199-122 Juhara, Zamrony P. 2010. Pemrograman DirectShow. PCMedia edisi 01/2010 , halaman 112-115: Kurniawan, Agus. 2010. Integrasi Webcam de ngan Aplikasi .NET. PCMedia 05/2010, halaman 126-127:
Redaksi PCMild. 2010. How It Works : Augmented Reality. PCMild edisi 07/2010, halaman 3. Sarjono, Gunung. 2010. Kinerja Plug n Play. PCMedia edisi 01/2007, halaman 96.
Slide Presentasi (PDF – Impress/Powepoint) Rahman, Basirudin. 2009. PDF Presentasi Pemrograman .NET, diunduh gratis di geeks.netindonesia.net sebagai member. Stephen. 2007. Powerpoint Presentasi Pengantar Teknologi Informasi dan Telekomunikasi : SMA Negeri 1 Tengaran. Wely. Slide 2009. Powerpoint Presentasi C# Fundamental, diunduh gratis di geeks.netindonesia.net sebagai member.
Catatan Kuliah Palgunadi. 2007. Pengantar Algoritma. Universitas Sebelas Maret : Surakarta.
Seminar Tim MSDN Institut Teknologi Bandung, Microsoft Innovation Road Trip 2010 : Sesi Visual Studio, 8 Maret 2010 di Universitas Muhammadiyah Surakarta.
Wawancara Dayat Kurniawan, Peneliti Pusat Penelitian Elektronika dan Telekomunikasi, Lembaga Ilmu Pengetahuan Indonesia (LIPI), melalui e-mail dan SMS :
[email protected]
Internet Fotografer.net, team, 2007. Survey Alasan Orang Indonesia Membeli Kamera, diakses 16 April 2007. Kurniawan,
Erick.
2009.
OOP
dengan
C#
(Bagian
http://mugi.or.id/blogs/erick/default.aspx, diakses : 17 Juni 2009.
1-4).
MITOV
team,
2010.
VisionLab
Package.
http://turbomirror.com/wikidoc/index.php?title=Package_VisionLabPkg, diakses 15 Juni 2010. Setyadi, Gandhi Rahmawan. 2007. Beberapa Hal yang Gua Tahu dari Digital Photography,
http://gandirsetyadi.wordpress.com/2007/11/26/bahan-ii-
beberapa-hal-yang-gua-tahu-dalam-digital-fotografi/, diakses 15 Juni 2010. Wikipedia
Indonesia.
2010.
Microsoft
Visual
Studio
Express.
http://id.wikipedia.org/wiki/Microsoft_Visual_Studio_Express, diakses : 16 Juni 2010. Wikipedia
Indonesia.
2010.
Antarmuka
Pemrograman
Aplikasi.
http://id.wikipedia.org/wiki/Antar_Muka_Pemrograman_Aplikasi, diakses : 16 Juni 2010.