Aplikasi Web Cam Untuk Menangkap Obyek

86
PROYEK AKHIR APLIKASI WEB CAM UNTUK MENANGKAP OBYEK WARNA MERAH PADA ROBOT BANTENG DALAM PERMAINAN MATADOR Agung Pangestu Harseno NRP. 7103 030 036 Dosen Pembimbing: Eru Puspita, ST, M.Kom NIP. 132 127 285 JURUSAN TEKNIK ELEKTRONIKA POLITEKNIK ELEKTRONIKA NEGERI SURABAYA SURABAYA 2006

Transcript of Aplikasi Web Cam Untuk Menangkap Obyek

Page 1: Aplikasi Web Cam Untuk Menangkap Obyek

PROYEK AKHIR

APLIKASI WEB CAM UNTUK MENANGKAP OBYEKWARNA MERAH PADA ROBOT BANTENG DALAM

PERMAINAN MATADOR

Agung Pangestu HarsenoNRP. 7103 030 036

Dosen Pembimbing:Eru Puspita, ST, M.Kom

NIP. 132 127 285

JURUSAN TEKNIK ELEKTRONIKAPOLITEKNIK ELEKTRONIKA NEGERI SURABAYA

SURABAYA 2006

Page 2: Aplikasi Web Cam Untuk Menangkap Obyek

2

APLIKASI WEB CAM UNTUK MENANGKAP OBYEK WARNAMERAH PADA ROBOT BANTENG DALAM PERMAINAN

MATADOR

Oleh :AGUNG PANGESTU HARSENO

7103 030 036

Proyek Akhir ini Diajukan Sebagai Salah Satu Syarat UntukMemperoleh Gelar Ahli Madya (A.Md.)

diPoliteknik Elektronika Negeri Surabaya

Institut Teknologi Sepuluh Nopember Surabaya

Disetujui Oleh:

Tim Penguji Proyek Akhir : Dosen Pembimbing:

1. Firman Arifin, ST 1. Eru Puspita, ST, M.Kom NIP. 132 296 743 NIP. 132 127 285

2. Ir. Wahjoe Tjatur S, MT NIP. 131 964 945

3. Ir. Rika Rokhana, MT NIP. 132 206 863

Mengetahui :Ketua Jurusan Teknik Elektronika

Ir. Dedid Cahya Happyanto, MTNIP. 131 694 603

Page 3: Aplikasi Web Cam Untuk Menangkap Obyek

3

ABSTRAK

Pada proyek akhir ini dibuat software untuk mengontrolgerakan robot banteng dalam suatu permainan matador. Robot bantengakan bergerak mencari obyek warna merah. Untuk mendeteksi obyekwarna merah tersebut digunakan sensor kamera. Setelah obyektertangkap hasil capture akan di proses untuk mendapatkan obyek yangsesuai, metode yang digunakan adalah segmentasi warna. Hasil daripendeteksian obyek dari komputer akan dikirim melalui komunikasiserial RS232 ke mikrokontroller yang telah terhubung dengan motor.Dari hasil pengolahan capture tersebut robot diharapkan dapatmelakukan penyerangan terhadap robot matador secara berulang-ulangsampai beberapa kali. Dimana range penyeangan antara 63 pixels – 30pixels luas obyek pada layar. Jarak terjauh dimana obyek masihterdeteksi adalah 495 cm dan terdekat adalah 30 cm. Dalampenyelesaiannya, digunakan software Microsoft Visual Basic 6.0 yangmenyediakan berbagai macam tool yang diperlukan. Selain metodesegmentasi juga digunakan metode tresholding hal ini untuk mengaturpencahayaan.

Kata kunci: Robot, Kamera, Pengolahan gambar, Mikrokontroller, RS232.

Page 4: Aplikasi Web Cam Untuk Menangkap Obyek

4

ABSTRACT

At this final project was made software to control movement ofbull robot in matador game. Bull robot will have moved to look for redcolor object. Sensor camera uses to detect red color object. After objectcaught, result of capture will be process to get appropriate object bymethod of color segmentation. The Result of object detection fromcomputer will be sent through RS232 serial communication tomicrocontroller which have connected with motor. With imageprocessing result, robot will be claimed to attack the matador robot byrepeatedly until several times. Where range of attack between 63 pixels-30 pixels wide of object. Furthermost distance where object stilldetected in 495 cm and closest in 30 cm. The solution uses SoftwareMicrosoft Visual Basic 6.0 that provides tools. Besides segmentationmethod also used method of tresholding this matter to arrangeillumination.

Keyword : Robot, Camera, Image Processing, Microcontroller, RS232

Page 5: Aplikasi Web Cam Untuk Menangkap Obyek

5

KATA PENGANTAR

Alhamdulillah, segala puji hanya milik Allah SWT yang manakami memuji, memohon bantuan, memohon ampunan dan perlindungankepada-Nya, dari kejahatan jiwa dan keburukan perilaku kami. Sholawatserta salam pada junjungan nabi besar Muhammad SAW yang telahmemberikan kekuatan kepada kami sehingga dapat menyelesaikan bukulaporan tugas akhir ini yang berjudul:

APLIKASI WEB CAM UNTUK MENANGKAP OBYEK WARNAMERAH PADA ROBOT BANTENG DALAM PERMAINAN

MATADOR

Tugas akhir ini kami susun sebagai syarat untuk menyelesaikanprogram pendidikan Diploma III di Politeknik Elektronika NegeriSurabaya.

Penyusun sadar bahwa didalam penyusunan buku laporan tugasakhir ini masih jauh dari kesempurnaan, untuk itu dengan segalakerendahan hati penyusun mohon maaf apabila terdapat penulisan katayang tidak sesuai dan dengan besar hati menerima kritik dan saran yangbersifat membangun demi hasil yang lebih baik dimasa yang akandatang. Penyusun berharap semoga buku laporan tugas akhir ini akanbermanfaat bagi kita bersama.

Surabaya, Agustus 2006

Penyusun

Page 6: Aplikasi Web Cam Untuk Menangkap Obyek

6

UCAPAN TERIMA KASIH

Alhamdullillah, atas segala limpahan rahmat, taufik, hidayahyang diberikan oleh Allah swt sehingga Tugas Akhir ini dapatterselesaikan sesuai dengan jadwal yang telah ditentukan.

Disamping itu juga penulis ingin megucapkan terima kasihkepada semua pihak yang telah memberikan bantuan bimbingan dandorongan serta fasilitas sarana dan prasarana, baik material maupunspiritual sehingga penulis dapat menyusun buku laporan proyek akhir initepat pada waktunya. Diantaranya adalah :1. Ayah dan Ibu tercinta yang telah memberikan banyak sekali

dukungan, nasehat baik moral maupun spiritual, serta doa yangsenantiasa menyertai langkah kaki penulis kemana pun berada.Semoga Allah senantiasa memberikan lindungan kepada mereka,dan di golongkan bersama dengan orang-orang yang dicintaiNya.

2. Kakakku Wahyu, terima kasih atas saran, nasehat sertadukungannya.

3. Adikku Herri, semoga ini bisa menjadi contoh yang baik buat kamu.4. Bapak Ir. Titon Dutono, M.Eng, selaku direktur PENS-ITS.5. Bapak Ir. Dedid. CH, selaku kepala jurusan elektronika.6. Bapak Eru Puspita, ST, M.Kom, selaku dosen pembimbing yang

telah memberi pengarahan dan bimbingan dengan penuh kesabaranuntuk menyelesaikan Tugas Akhir ini.

7. Seluruh dosen penguji yang telah memberikan saran dan bimbingan.8. Mas Adi, bang Miko, kang Sobirin, Aa’ Rosyd, akh Wildan, den

TW dan senior-senior yang lain atas saran dan bimbingan mereka.9. Anggota Kalisari Damen fun’s club terima kasih atas supportnya.10. Crew (Baguz_good, Mr. Lee dan Robot d8) perjuangan kita belum

berakhir.11. Teman-teman seperjuangan 3EB (Ogrish fun’s club) semoga

persahabatan kita tidak hanya sampai disini, indahnya kebersamaanyang terjalin selama ini menimbulkan semangat untuk terusmenapaki perjalanan hidup ini.

12. Teman-teman Angkatan ”2003” terima kasih semuanya jaga teruspersahabatan ini.

13. Semua pihak yang tak dapat kami sebutkan satu persatu terimakasih atas bantuannya dalam penyelesaian tugas akhir ini.

Page 7: Aplikasi Web Cam Untuk Menangkap Obyek

7

DAFTAR ISI

Halaman Judul iLembar Pengesahan iiAbstrak iiiAbstract ivKata Pengantar vUcapan Terima Kasih viDaftar Isi viiDaftar Gambar ixDaftar Tabel x

BAB I. PENDAHULUAN1.1 Latar Belakang 11.2 Tujuan 11.3 Permasalahan 21.4 Perumusan Masalah 21.5 Batasan Masalah 21.6 Metodologi 21.7 Sistematika Penulisan 3

BAB II. TEORI PENUNJANG2.1 Model Warna 52.2 Pixel 72.3 Warna RGB 82.4 Grey Scale 102.5 Segmentasi 102.6 Operasi Peningkatan Citra 10

2.6.1 Kualitas Citra 102.6.2 Tresholding 11

2.7 Euclidean Distance 122.8 Bahasa Pemrograman 13 2.8.1 Variabel 13 2.8.2 Kontrol Program 14 2.8.2.1 If.....Then 15 2.8.2.2 If.....Then.....Else 15 2.8.2.3 Select.....Case 16 2.8.2.4 For......Next 16 2.8.2.5 GoTo 16 2.8.2.6 Exit 17

Page 8: Aplikasi Web Cam Untuk Menangkap Obyek

8

2.8.3 Prosedur 17 2.8.3.1 Sub Procedure 17 2.8.3.2 Function Procedure 18 2.8.4 Operator 21 2.8.4.1 Operator Matematik 21 2.8.4.2 Operator Perbandingan 22 2.8.4.3 Operator Logika 22

BAB III. PERENCANAAN DAN PEMBUATAN PERANGKATLUNAK3.1 Sistem Konfigurasi 253.2 Setting Mekanik 273.3 Pengolahan Gambar Oleh PC 283.4 Pengambilan Gambar 283.5 Pengenalan Obyek 29 3.5.1 Titik Tengah Obyek 30 3.5.2 Luas Obyek 313.6 Jarak Penyerangan Obyek 323.7 Komunikasi Data antara PC dengan Mikrokontroller 333.8 Komunikasi data dari PC ke PC 37

BAB IV. PENGUJIAN DAN ANALISA4.1 Pengujian dan Pengambilan Data 384.2 Analisa 44

BAB V. PENUTUP5.1 Kesimpulan 455.2 Saran 45

Daftar Pustaka 47LampiranDaftar Riwayat Hidup

Page 9: Aplikasi Web Cam Untuk Menangkap Obyek

9

DAFTAR GAMBAR

Gambar 2.1 Blok diagram 5Gambar 2.2 Nilai Hexadesimal 5Gambar 2.3 Konversi sistem koordinat citra diskrit 6Gambar 2.4 Definisi warna RGB dan CMY 9Gambar 3.1 Sistem diagram blok Robot Banteng 25Gambar 3.2 Diagram alir pengolahan citra 27Gambar 3.3 Peletakan kamera pada mekanik robot 28Gambar 3.4 Kamera Vimicro USB PC Camera 29Gambar 3.5 Kontrol Kamera Logitech Quick Zoom 29Gambar 3.6 Proses scanning dan pencarian titik tengah 31Gambar 3.7 Sintak program penentuan posisi robot 32Gambar 3.8 Jalur RS232 pada DB9 33Gambar 3.9 Form dan properties pada Visual Basic 34Gambar 3.10 Daftar komponen pada Visual Basic 35Gambar 3.11 Daftar komponen Winsock 37Gambar 3.12 Properties Winsock 38Gambar 4.1 Tampilan form program 40Gambar 4.2 Posisi 1 41Gambar 4.3 Posisi 2 42Gambar 4.4 Posisi 3 42Gambar 4.5 Posisi 4 42Gambar 4.6 Posisi 5 43Gambar 4.7 Posisi 6 43Gambar 4.8 Posisi 7 44

Page 10: Aplikasi Web Cam Untuk Menangkap Obyek

10

DAFTAR TABEL

Tabel 2.1 Tipe Data Pada Visual Basic 14Tabel 2.2 Fungsi-Fungsi Manipulasi String 20Tabel 2.3 Fungsi-Fungsi Konversi Data 21Tabel 2.4 Tabel Operator Matematik 22Tabel 2.5 Tabel Operator Perbandingan 22Tabel 2.6 Tabel Operator Logika 23Tabel 4.1 Tabel Data Hasil Pengujian 41

Page 11: Aplikasi Web Cam Untuk Menangkap Obyek

11

BAB IPENDAHULUAN

1.1 Latar BelakangImage proccessing telah banyak di aplikasikan dalam berbagai

bidang teknologi, diantaranya bidang kesehatan, entertainment, militer,IPTEK, industri, robotika dan lain sebagainya.

Image I/O merupakan proses pemasukan dan pengeluaran datayang berupa gambar atau citra kedalam sebuah program aplikasi dalamhal ini Microsoft Visual Basic 6.0. Sehingga didapatkan informasitertentu yang untuk selanjutnya dapat diolah, dianalisa dan diberikansebuah keputusan yang tepat untuk pengendalian, dalam hal ini sebagaipandangan (vision) dari sebuah robot banteng.

Pembuatan robot banteng sebelumnya telah direalisasikan oleh‘Dewi Supriatin Resmah cs’. Meskipun memiliki kelebihan dapatmengikuti obyek warna merah, tetapi teknik ini kurang menarik apabiladipertontonkan di depan umum. Karena tidak ada aksi lebih lanjut yangdilakukan robot setelah mengikuti obyek warna merah.

Dalam proyek akhir ini, akan direalisasikan pengolahan obyekwarna merah, menggunakan image processing dalam robot banteng.Proyek ini meliputi dua bagian yaitu hardware dan software. Robot inimemiliki kelebihan antara lain dapat mencari obyek warna merah,mengatur jarak dengan obyek dan melakukan penyerangan kemudianakan melakukan pencarian ulang obyek tersebut layaknya sepertibanteng yang sebenarnya.

Untuk mengatur pergerakan motor dan syncronisasi dengan webcam digunakan microcontroller AT89S51, karena di dalamnya sudahada program untuk mengenali software compilernya.

Untuk image processing menggunakan software MS Visual Basic6.0 karena bahasa lebih sederhana dan lebih aplikatif walaupun memilikikelemahan kinerja lebih lambat. Tetapi hal ini bisa diatasi denganpenggunaan algoritma yang benar dan tepat.

1.2 TujuanTujuan dari pembuatan proyek akhir ini adalah untuk membuat

suatu robot otomatis dengan menggunakan sensor kamera yang dapatmengidentifikasi obyek warna merah dan kemudian diproses untukdapat melakukan action, dalam hal ini dapat menyerang obyek tersebutsecara berulang-ulang.

Page 12: Aplikasi Web Cam Untuk Menangkap Obyek

12

1.3 PermasalahanDalam perancangan alat pendeteksi, dalam hal ini adalah kamera,

diperlukan suatu cara bagaimana hasil dari gambar yang ditangkap olehkamera dapat diolah oleh komputer. Dari pengolahan tersebut, data yangdiperoleh kemudian dijadikan acuan untuk melakukan suatu tindakan.Dalam tugas akhir ini robot diharapkan dapat mendeteksi keberadaanobyek berupa Matador. Robot dapat menentukan tindakan yang harusdiambil setelah mengetahui posisi obyek yang telah ditentukan.

1.4 Perumusan MasalahBentuk permasalahan yang dihadapi dalam proyek akhir ini

adalah sebagai berikut:1. Pengiriman data ke microcontroller.2. Pengaturan kecepatan pergerakan robot.3. Respon kecepatan WebCam dalam pengambilan gambar obyek.4. Pencarian obyek yang dilakukan berulang-ulang.5. Komunikasi dari PC ke PC.6. Pengaturan jarak robot dengan obyek.7. Pengenalan warna merah pada berbagai macam kondisi cahaya.

1.5 Batasan MasalahAsumsi berikut ini sebagai batasan masalah yang dipakai dalam

tugas akhir untuk mengoptimalkan kinerja dari alat:1. Simulasi robot berlokasi di suatu arena.2. Mobilitas robot hanya pada lantai yang rata atau memiliki

ketinggian yang sama.3. Posisi bendera yang akan di deteksi berada pada sumbu X4. Pencahayaan pada arena haruslah cukup terang.5. Obyek berwarna merah dengan bentuk persegi.6. Kaki robot diganti dengan roda.7. Software yang digunakan untuk image processing adalah MS

Visual Basic 6.0.

1.6 MetodologiUntuk mencapai penyelesaian proyek akhir, langkah yang akan

dilakukan adalah:1. Melakukan studi literatur yaitu mempelajari literatur yang

berhubungan dengan perangkat lunak yang akan digunakan danjuga mikrokontroller. Software yang digunakan adalah Visual Basic6.0 untuk melakukan pengolahan citra.

Page 13: Aplikasi Web Cam Untuk Menangkap Obyek

13

2. Melakukan perancangan perangkat lunak yaitu merancang softwareyang akan di terapkan didalam sistem robot. Robot yang akandibuat memiliki ketentuan sebagai berikut:• Obyek yang dideteksi adalah bendera warna merah.• Setelah robot dapat mendeteksi letak obyek maka robot akan

melakukan penyerangan terhadap obyek tersebut.• Sebelum melakukan penyerangan robot akan melakukan

perhitungan jarak yang tepat sesuai dengan setting point yangtelah di tentukan sebelumnya.

• Jika jarak yang diperoleh sudah sesuai robot akan melakukanpenyerangan terhadap obyek tersebut.

• Setelah melakukan penyerangan robot akan melakukan prosespencarian ulang lagi beberapa kali.

3. Melakukan pembuatan dan pengujian perangkat lunak yaitumembuat perangkat lunak untuk mendeteksi obyek warna merahdalam hal ini adalah robot matador yang berada didepannya denganbahasa pemrograman MS. Visual Basic 6.0. Proses pengolahandisini antara lain : Pengambilan gambar, segmentasi denganthresholding sehingga didapat RGB dari obyek, scanning untukmenentukan titik tengah obyek yang terlihat dilayar.

4. Melakukan integrasi dan pegujian sistem yaitu menghubungkanantara perangkat lunak yang telah dibuat dengan perangkat keraskemudian dilakukan pengujian pada keseluruhan sistem agardiketahui kinerjanya.

5. Melakukan evaluasi dan presentasi hasil yaitu melakukan evaluasicara kerja dari sistem yang telah dibuat untuk mengetahui aspek-aspek yang mempengaruhinya, seperti : keberhasilan pengambilangambar, pengujian data dan ketepatan dengan kontrol robot.

6. Melakukan penyusunan buku tugas akhir yaitu melakukan penulisanlaporan lengkap dan detail tentang tugas akhir.

1.7 Sistematika PenulisanSistematika penulisan dapat dijelaskan sebagai berikut:

BAB I. PENDAHULUANBerisi latar belakang masalah, tujuan, perumusan masalah, batasanmasalah, kontribusi proyek akhir, metodologi, dan sistematikapenulisan.BAB II. TEORI PENUNJANGMenjelaskan mengenai teori-teori yang dijadikan landasan dan rujukanperhitungan dalam mengerjakan proyek akhir ini.

Page 14: Aplikasi Web Cam Untuk Menangkap Obyek

14

BAB III. PERENCANAAN DAN PEMBUATAN PERANGKATLUNAKBerisi tentang perencanaan dan pembuatan perangkat lunak yang akanditerapkan pada robot.BAB IV. PENGUJIAN DAN ANALISABerisi pembahasan tentang pengujian dari sistem yang telah dibuatbeserta analisanya.BAB V. PENUTUPBerisi tentang kesimpulan dan saran yang didapat selama prosesperencanaan dari sistem yang diterapkan.DAFTAR PUSTAKABerisi tentang referensi-referensi yang digunakan dan dijadikan acuanselama pembuatan proyek akhir ini.

Page 15: Aplikasi Web Cam Untuk Menangkap Obyek

15

BAB IITEORI PENUNJANG

1Image I/O merupakan proses pemasukan dan pengeluaran datayang berupa gambar atau citra kedalam sebuah program aplikasi dalamhal ini MS Visual Basic 6.0. Sehingga didapatkan informasi tertentuyang untuk selanjutnya dapat diolah, dianalisa dan diberikan sebuahkeputusan yang tepat untuk pengendalian, dalam hal ini sebagaipandangan (vision) dari sebuah perangkat keras atau robot.

Gambar 2.1 Blok Diagram

Dasar dari robot vision adalah pengolahan citra dimana informasiyang dapat diambil dari sebuah perangkat I/O adalah berupa informasiwarna RGB (Red, Green dan Blue) pada posisi tertentu. Dalampengolahan citra warna direpresentasikan dengan nilai hexadesimal dari0x00000000 sampai 0x00ffffff. Warna hitam adalah 0x00000000 danwarna putih adalah 0x00ffffff.

Gambar 2.2 Nilai Hexadesimal

Berikut akan dijelaskan secara singkat hal-hal yang berhubungandengan pengolahan citra.

2.1 Model Warna2Citra merupakan matrik dua dimensi dari fungsi intensitas

cahaya, maka referensi citra menggunakan dua variabel yang

1 B.D, Bima Sena, Image Prosesing dan Aplikasinya, hal.22 Bachtiar Novan, Andi, Robot Penyerang dalam Permainan Sepak Bola , hal.16

Page 16: Aplikasi Web Cam Untuk Menangkap Obyek

16

menunjukkan posisi pada bidang dengan sebuah fungsi intensitas cahayayang dapat dituliskan sebagai f(x,y) dimana f adalah nilai amplitudopada koordinat spasial (x,y). Karena cahaya merupakan salah satubentuk energi, f(x,y) tidak berharga nol atau negatif dan merupakanbilangan berhingga, yang dalam pernyataan matematis adalah sebagaiberikut, 0 < f (x,y).

Konversi sistem koordinat citra diskrit ditunjukkan oleh gambarberikut,

Gambar 2.3 Konversi sistem koordinat citra diskrit

Citra yang kita lihat sehari-hari merupakan cahaya yangdirefleksikan oleh sebuah obyek. Fungsi f(x,y) dapat dilihat sebagaifungsi dengan dua unsur, pertama merupakan besarnya sumber cahayayang melingkupi pandangan kita terhadap obyek (illumination), keduamerupakan besarnya cahaya yang direfleksikan oleh obyek dalampandangan kita (reflectance component). Keduanya dituliskan denganfungsi yang berturut-turut i(x,y) dan r(x,y). Fungsi i(x,y) dan r(x,y)merupakan kombinasi perkalian untuk membentuk fungsi f(x,y) yangdapat dituliskan dengan persamaan,

F (x,y) = i (x,y) . r (x,y)0 < i (x,y) < ~ ......(2-1)0 < r (x,y) < 1

Persamaan diatas menandakan bahwa nilai kerefleksian dibatasioleh nilai 0 (total absorption) dan nilai 1 (total reflectance). Fungsi (x,y)ditentukan oleh sumber atau asal sinar, sedangkan fungsi r(x,y)ditentukan oleh karakteristik dari obyek.

Citra digital adalah citra kontinyu f(x,y) yang sudah didiskritkanbaik koordinat spasial maupun tingkat kecerahannya. Kata kontinyudisini menjelaskan bahwa indeks x dan y hanya bernilai bulat. Kita dapatmenganggap citra digital sebagai matrik dengan ukuran MxN yang baris

Page 17: Aplikasi Web Cam Untuk Menangkap Obyek

17

dan kolomnya menunjukkan titik-titiknya, yang diperlihatkan padapersamaan berikut,

f(0,0) f(0,1)................f(0,N-1)f(1,0) f(0,1)................f(1,N-1)

f(0,0)= .............................................. ....................................(2-2)f(M-1,0) f(M-1,1)......f(M-1,N-1)f(M,0) f(M,1)................f(M,N)

Citra yang tidak berwarna atau hitam putih dikenal pula sebagaicitra dengan derajat keabuan (citra grey level). Derajat keabuan yangdimiliki ini bisa beragam mulai dari 2 derajat keabuan (yaitu 0 dan 1)yang dikenal juga sebagai citra monochrome, 16 derajat keabuan dan256 derajat keabuan. Semakin besar derajat keabuan yang dimiliki makasemakin halus citra tersebut.

Dalam sebuah citra monochrome, sebuah pixel diwakili oleh 1 bitdata yang berisikan data tentang derajat keabuan yang dimiliki pixeltersebut. Data akan berisikan 1 bila pixel tersebut berwarna putih dandata tersebut akan berisikan 0 bila pxel tersebut berwarna hitam.

Citra yang memiliki 16 derajat keabuan (mulai dari 0 yangmewakili warna hitam sampai dengan 15 yang mewakili warna putih)direpresentasikan oleh 4 bit data, sedangkan citra dengan 256 derajatkeabuan (nilai 0 mewakili warna hitam sampai 255 yang mewakiliwarna putih) direpresentasikan oleh 8 bit data.

Dalam citra berwarna, jumlah warna bisa beragam mulai 16, 256,65536, atau 16 juta warna, yang masing-masing direpresentasikan ole 4,8, 16, atau 24 bit data untuk setiap pixelnya. Warna yang terdiri darikomponen utama, yaitu nilai merah (red), nilai hijau (green), dan nikaibiru (blue). Paduan ketiga komponen utama pembentuk warna inidikenal sebagai RGB color.

2.2 Pixel3Salah satu komponen dari gambar yang menentukan resolusi dari

gambar tersebut adalah pixel, misalnya sebuah gambar dikatakanresolusinya sebesar 800 x 600 maka berarti panjang pixel horisontalnya800 dan panjang pixel vertikalnya 600 dan jumlah total keseluruhan

3 Bachtiar Novan, Andi, Robot Penyerang dalam Permainan Sepak Bola , hal. 18

Page 18: Aplikasi Web Cam Untuk Menangkap Obyek

18

pixel dari gambar tersebut yaitu 480000 atau dapat dikatakan bahwagambar tersebut terdiri dari 480000 pixel.

Dalam pengolahan citra, pixel mempunyai hubungan antara satudengan yang yang lainnya. Sebuah pixel p pada koordinat (x,y)mempunyai empat tetangga horisontal dan vertikal yang koorfinat-koordinatnya sebagai berikut,

(x+1,y+1), (x+1,y-1), (x,y+1), dan (x,y-1) .................(2-3)

Kumpulan dari pixel diatas yang disebut 4-neighbours of p dapatdinyatakan sebagai N4(p), kecuali jika p(x,y) posisinya terletak digarisbatas gambar, sehingga jumlah pixel tetangga tidak terdiri dari 4tetangga. Selain 4 tetangga diatas, p juga mempunyai 4 tetanggadiagonal, yaitu :

(x+1,y+1), (x+1,y-1), (x-1,y+1), dan (x-1,y-1) .................(2-4)

Pixel-pixel tersebut dinyatakan sebagai Np(p). Gabungan dari

N4(p) dan N

p(p) didefinisikan sebagai 8-neighbours of p dan dinyatakan

sebagai N8(p).

Hubungan antar pixel merupakan suatu konsep yang sangatpenting, yang digunakan untuk mendefinisikan batas-batas dari suatuobyek serta bagian-bagian daerah kecil dari suatu gambar. Hubunganantar pixel ada beberapa kriteria, diantaranya adalah prinsip kedekatankedua pixel yang sesuai dengan konsep yang telah ditentukan, sepertikonsep 4-neighbours atau 8-neighbours. Selain itu, apakah kedua pixeltersebut memiliki nilai gray scale yang sesuai dengan kriteria yangdiinginkan. Sebagai contoh, bila dua pixel mempunyai nilai masing-masing 0 dan 1 dan keduanya merupakan bagian dari 4-neighbours,maka dinyatakan bahwa kedua pixel tersebut tidak ada hubungan, hal inikarena keduanya memiliki nilai yang berbeda.

2.3 Warna RGB4Model warna RGB (Red, Green, Blue) mendiskrpsikan warna

sebagai kombinasi positif dari warna yaitu: merah, hijau dan birusehingga membentuk sebuah warna C dengan rumusan sebagai berikut:

C = rR + gG + bB ..................................................(2-5)

4 Bachtiar Novan, Andi, Robot Penyerang dalam Permainan Sepak Bola , hal. 19

Page 19: Aplikasi Web Cam Untuk Menangkap Obyek

19

Jika skalar r, g, b diberi harga antara 0 dan 1 maka definisi warnaakan berada dalam kubus seperti gambar beikut:

Gambar 2.4 Definisi warna RGB dan CMY

Ruang warna ini adalah dasar dari warna display monitorkomputer. Garis sepanjang titik hitam (0,0,0) RGB hingga titik putih(1,1,1) RGB disebut dengan titik keabuan atau greyscale. Sehinggadengan mudah kita dapatkan hubungan antara rgb dengan greyscalesebagai berikut:

(a)G (a,a,a) RGB ...........................(2-6)

Sementara hubungan antara RGB dengan CMY diberikan olehrumusan,

(r,g,b) RGB = (1,1,1) + (c,m,y) CMY ......(2-7)

Sehingga apabila nilai dari b diturunkan akan menyebabkan warnabergeser menjadi kekuningan.

Pada proses penjumlahan warna, warna yang dideskripsikandengan RGB adalah pemetaan yang mengacu pada panjang gelombangdari RGB. Pemetaan tersebut menghasilkan nuansa warna sekitar 16 juta(2563=16.777.216) yaitu 256 (8 bit) untuk masing-masing R, G, dan B.

Masing-masing R, G, dan B didiskritkan dalam skala 256,sehingga RGB akan memiliki indeks antara 0 sampai 255. penjumlahanwarna RGB ini adalah,

C = C1 + C2 =2

)2,2,2()1,1,1( bCgCrCbCgCrC + .......(2-8)

Page 20: Aplikasi Web Cam Untuk Menangkap Obyek

20

Penjumlahan ini menghasilkan nilai RGB yang tidak bulat,sehingga kita harus membulatkannya nilainya, yaitu dengan metodebulat keatas atau kebawah. Misalkan dua warna yaitu hitam (0, 0, 0) kitajumlahkan dengan warna putih (255, 255, 255) akan menghasilkanwarna abu-abu antara warna hitam dan putih (127, 127, 127). Hasil akhirdibulatkan kebawah. Contoh lain misalnya ingin menjumlahkan warnamerah (255, 0, 0) dengan warna hijau (0, 255, 0) maka akanmenghasilkan warna kuning (127, 127, 0).

2.4 Grey ScaleAdalah sebuah format warna dengan mengambil rata dari nilai r,

g, b dari sebuah format gambar berwarna. Persamaan yang digunakanadalah sebagai berikut:

Gray scale=( R+ G+ B) / ( + ) ........(2-9)

Dengan nilai =0.35, =0.25, dan =0.4 sehingga nilai + = 1.Fungsi dari format warna gray ini adalah untuk memudahkan

proses selanjutnya karena kita akan kesulitan apabila kita menjalankanproses selanjutnya dengan menggunakan format gambar berwarnakarena nilai r, g, dan b yang dihasilkan dengan format gambar itu akanbervariasi. Dengan format warna gray ini maka dihasilkan nilai R=G=B.

2.5 Segmentasi5Segmentasi adalah suatu proses untuk memisahkan obyek yang

kita ambil dengan sisi latar belakangnya, dimana pendekatan yangdiambil adalah dengan mengelompokkan (clustering) warna-warnasehingga mendekati bagian warna yang sejenis dengan menggunakanteknik filtering. Pada akhir proses segmentasi ini akan diperoleh duawarna yang menonjol yaitu hitam dan putih

2.6 6Operasi Peningkatan Citra2.6.1 Kualitas Citra

Seringkali citra yang kita hasilkan memiliki kualitas yang kurangbagus. Hal ini dikarenakan adanya gangguan teknis peralatan yang kitagunakan atau ada tidaknya noise disekitarnya, dapat juga karena kurang

5 Bachtiar Novan, Andi, Robot Penyerang dalam Permainan Sepak Bola , hal. 216 Bachtiar Novan, Andi, Robot Penyerang dalam Permainan Sepak Bola , hal. 21

Page 21: Aplikasi Web Cam Untuk Menangkap Obyek

21

bagusnya pencahayaan. Untuk itu perlu dilakukan manipulasi data-datauntuk memperbaiki kualitas citra.

Opersi peningkatan kualitas citra banyak dilakukan untukmendapatkan suatu perbaikan kualitas citra dengan melakukanpemanipulasian data-data atau parameter-parameter yang ada pada citratersebut. Beberapa manipulasi yang dilakukan pada proses peningkatankualitas citra adalah proses filtering, sharpening, dan softening.

Setiap gambar dapat dianalisa dengan melihat image histogram-nya. Image histogram adalah grafik yang menunjukkan frekuensi suatuwarna, dimana sumbu horisontalnya menunjukkan nomor warna yangdipakai (skala 0 sampai 255). Sedangkan sumbu vertikal menunjukkanjumlah titik yang mempergunakan titik yang bersangkutan. Denganadanya analisa histogram ini kita dapat memodifikasi gambar tersebutdiantaranya adalah dengan jalan:

1. Linier AdditionDengan jalan penambahan intensitas dari setiap titik hinggamemiliki nomor warna yang lebih besar (lebih terang) tanpamengubah perbedaan warnanya.

2. Linier ScalingSelain melakukan penambahan intensitas pada setiap warnatitik, juga dilakukan perkalian setiap titik dengan suatu variabelsehingga diperoleh perbedaan warn yang besar.

3. Linier MultiplicationDengan cara mengkuadratkan warna seluruh titik pada citrasehingga diperoleh gambar yang jauh lebih terang karenaperbedaan warna sangatlah besar.

Dengan beberapa cara lain seperti histogram equalitation,pembersih gambar dengan intensity filtering yang diantaranya denganlow pass dan high pass filtering.

2.6.2 TresholdingPrinsip kerja dari metode ini adalah untuk mengurangi pemakaian

intensitas cahaya warna yang ada dalam suatu citra, dimana dalammetode ini ditentukan nilai T setelah melihat greyscale dari citratersebut. T adalah nilai minimum diantara dua nilai maksimum yang adapada greyscale dari citra tersebut. Proses selanjutnya adalah menggantisetiap intensitas warna yang ada dalam citra tersebut. Jika intensitasnyadiganti dengan ‘0’, sedangkan jika intensitas warnanya lebih besar makaintensitasnya diganti dengan K-1, dimana K adalah konstanta yangsudah ditentukan sebelumnya, misalnya 256.

Page 22: Aplikasi Web Cam Untuk Menangkap Obyek

22

Metode tresholding ini sangat baik digunakan untuk memisahkanobyek dengan background yang agak gelap atau sebaliknya. Secaramatematis metode tersebut memiliki model sebagai berikut:

g2 (x,y)=

>−

<

TyxgK

Tyxg

),(1,1

),(1,0 ..........(2-10)

Metode ini digunakan untuk mengkonversi data image menjadidata biner dengan tujuan agar proses selanjutnya menjadi lebih mudah.Dari proses tresholding ini, akan didapat hasilnya apabila jumlah warnapixel mempunyai intensitas kedalaman warna kurang dari hargatresholding maka warna pixel tersebut akan menjadi warna putih (255).

Teknik in berdasarkan pada konsep yang sederhana. Parameter Trdisebut dengan ambang kecerahan yang dipilih dan diterapkan padasuatu citra. Jadi warna background dengan warna obyek salingberkebalikan. Berikut ini dijelaskan dua jenis alternatif pemilihantreshold.

a) Fixed treshold (nilai Tr yang selalu tetap)Salah satu alternatif memilih nilai treshold secara bebas dari datacitra. Hal ini diterapkan dengan memacu suatu ketetapan. Missalcitra mempunyai perbedaan yang sangat tinggi dan obyek yangdiamatidalam citra tersebut adalah gelap dan background dari citraadalah hamper sama dengan terang dan kemudian konstan thresholdkita pilih 128 pada skala 0 sampai 255. Hal ini mungkin akanmenghasilkan hasil yang cukup akurat. Akurat disini berarti kitameminimumka pixel yang salah dalam pengelompokannya.

b) Histogram devided tresholdDidalam banyak kasus, nilai treshold (ambang) dipilih berdasarkanhistogram kecerahan dari suatu citra yang diamati.

2.7 Euclidean Distance7Euclidean distance adalah suatu metode statistika yang

digunakan untuk mengelompokkan data dengan jarak tertentu terhadapmean data tersebut sehingga diperoleh suatu penyebaran data yang

7 Bachtiar Novan, Andi, Robot Penyerang dalam Permainan Sepak Bola , hal. 23

Page 23: Aplikasi Web Cam Untuk Menangkap Obyek

23

memiliki pola terhadap nilai mean. Rumus dari Euclidean distanceadalah sebagai berikut:

§ Akar kuadrat : E = ( )212 XX − ......(2-11)Atau§ Absolut : E = )12( XX − ......(2-12)

Dimana:E = Euclidean DistanceX1 = Titik tengah layar monitorX2 = Titik tengah obyek

Karakteristik dari metode ini cukup sederhana karena tidakmemiliki penguatan sehingga bidang atau luasan yang terbentukcenderung berbentuk lingkaran. Alasan digunakan metode ini adalahsesuai dengan konsep yang telah kami buat, yaitu untuk perhitunganselisih titik tengah obyek yang terlihat dilayar dengan titik tengah layaryang mana hasilnya digunakan untuk kontrol robot.

2.8 Bahasa Pemrograman8Bahasa Pemrograman yang digunakan untuk menyelesaikan

tugas akhir ini adalah bahasa pemrograman Visual Basic 6.0. Berikutakan dijelaskan beberapa hal mengenai bahasa pemrograman VisualBasic.

2.8.1 VariabelDalam melakukan pemrograman akan selalu diperlukan tempat

penyimpanan data, misalnya untuk menampung data hasil perhitungan,menampung data hasil pembacaan integer, atau lainnya. Seperti padabahasa pemrograman lainnya, dalam penggunaan variabel harusmemiliki nama dan tipe data tertentu. Nama variabel menunjukkan suatutempat dalam memori komputer sedangkan tipe data mengontrolbesarnya memori yang disediakan untuk variabel tersebut. Berikut iniadalah tipe data pada Visual Basic beserta ukuran byte dan range tipedata tersebut.

8 Retna P, Catur Edi W, Interfacing Port Paralel dan Port Serial Komputer dengan Visual Basic 6.0, hal. 23

Page 24: Aplikasi Web Cam Untuk Menangkap Obyek

24

Tabel 2.1 Tipe Data Pada Visual Basic

Tipe Data Ukuran Byte RangeInteger 2 byte -32.768 sampai 32.767Long Integer 4 byte -2.147.483.648 sampai

2.147.483.647Single-precisionFloating point

4 byte -3,402823 E38 sampai3,402823 E38

Double-precisionFloating point

8 byte -1,79769313486232D303 sampai1,79769313486232D303

Currency 8 byte -922337203685477,5808sampai922337203685477,5808

String 1 byte per karakter 0 sampai 65.535

Boolean 2 byte True atau FalseDate 8 byte 1 january 100 sampai 31

Desember 9999Byte 1 byte 0 sampai 255

2.8.2 Kontrol Program9Kekuatan pemrograman adalah terletak pada kontrol program

ini. Dengan kontrol program ini, kita akan mengendalikan alur eksekusiprogram dan menentukan keputusan apa yang harus dikerjakan olehprogram pada kondisi tertentu. Kontrol program pada Visual Basicmeliputi kontrol pertimbangan kondisi dan keputusan, kontrolpengulangan serta kontrol penyaluran alternatif. Pada bagian ini akandijelaskan beberapa kontrol yang disediakan Visual Basic dan digunakanpada pemrograman tugas akhr ini.

9 Bachtiar Novan, Andi, Robot Penyerang dalam Permainan Sepak Bola , hal. 25

Page 25: Aplikasi Web Cam Untuk Menangkap Obyek

25

2.8.2.1 If .......ThenDengan peryataan seperti ini kita dapat mengetes suatu kondisi

tertentu dan kemudian menentukan suatu tindakan jika kondisi tersebutterpenuhi. Sintak penulisannya adalah sebagai berikut:

If <syarat kondisi> Then <pernyataan>

Bisa juga dengan multiple-line, sebagai berikut:

If <syarat kondisi> Then <pernyataan pertama> <pernyataan kedua> . . <pernyataan ke-n>End If

2.8.2.2 10If ..Then .ElsePernyataan ini hamper sama dengan pernyataan If ..Then, yaitu

digunakan untuk mentes suatu kondisi tertentu. Hanya saja, jika kondisitidak terpenuhi, maka alur program akan mengeksekusi pernyataan lain.Berikut adalah sintak penggunaannya.

If <syarat kondisi> Then <blok pernyataan pertama>Else If <syarat kondisi> Then <blok pernyataan kedua>

..Else If <syarat kondisi> Then <blok pernyataan ke-n>Else <blok pernyataan>End If

Visual Basic pertama kali akan mentes kondisi 1. jika kondisi 1tidak terpenuhi, Visual Basic akan mentes kondisi 2 dan seterusnyasampai menemukan kondisi yang terpenuhi. Jika Visual Basicmenemukan kondisi yang memenuhi, maka Visual Basic akanmengerjakan blok pernyataannya. Jika Visual Basic tidak menemukankondisi yang memenuhi maka blok pernyataan Else yang akandieksekusi.

10 Retna P, Catur Edi W, Interfacing Port Paralel dan Port Serial Komputer dengan Visual Basic 6.0, hal. 29

Page 26: Aplikasi Web Cam Untuk Menangkap Obyek

26

2.8.2.3 11Select ..CasePada dasarnya perintah ini sama dengan perintah

If....Then Else, yaitu akan mengeksekusi satu blok pernyataan daribeberapa pilihan blok pernyataan. Hanya saja penulisannya lebih ringkasdan lebih mudah dimengerti. Sintak penulisannya adalah sebagaiberikut:

Select....Case <kondisi yang diujikan>Case <syarat kondisi 1>

<blok pernyataan pertama> Case <syarat kondisi 2><blok pernyataan kedua>.........

Case Else<blok pernyataan ke-n>

End Select

2.8.2.4 For.........NextPerintah ini digunakan untuk melakukan perulangan suatu blok

pernyataan sampai dipenuhi syarat kondisi yang ditetapkannya. DenganFor bisa ditentukan nilai awal dan nilai akhir perulangan serta nilaikenaikannya. Sintak penggunannya adalah sebagai berikut:

For <namavariable>=<nilai_awal> To <nilai_akhir> [Step <nilai_kenaikan>] <Blok pernyataan>Next

2.8.2.5 GoToPerintah GoTo digunakan untuk melakukan percabangan ke suatu

baris label tertentu. Dengan perintah GoTo, program dapat langsungmelompat ke baris tertentu sehingga kode-kode program yangdilewatinya tidak akan dieksekusi. Sintak penulisannya adalah sebagaiberikut:

GoTo <nama_label><blok pernyataan><nama_label>:

Biasanya perintah GoTo digunakan bersama dengan perintah OnError untuk menangani error, yaitu untuk memerintahkan program

11 Retna P, Catur Edi W, Interfacing Port Paralel dan Port Serial Komputer dengan Visual Basic 6.0, hal. 30

Page 27: Aplikasi Web Cam Untuk Menangkap Obyek

27

melompat ke baris tertentu jika terjadi kesalahan / error. Error dapatterjadi karena kesalahan logika program kita, kesalahan perhitungan(misal pembagian dengan nol), kesalahan yang disebabkan olehhardware, maupun kesalahan lainnya. Penanganan error dalampemrograman adalah sangat penting karena error dapat menyebabkanprogram berhenti dan dapat menyebabkan komputer menjadi hang.Sintak penulisannya adalah sebagai berikut:

On Error GoTo <nama_label><Blok pernyataan><nama_label>

2.8.2.6 ExitPerintah exit digunakan untuk keluar secara langsung dari blok

program For.....Next, Do.....Loop, Sub Procedure, atau FunctionPrcedure. Sintak penulisannya adalah sebagai berikut:ü Exit....Do, digunakan untuk keluar dari blok program Do....Loop.ü Exit....For, digunakan untuk keluar dari blok program For....Next.ü Exit Sub, digunakan untuk keluar dari Sub Procedure.ü Exit Function, digunakan untuk keluar dari Function Procedure.

2.8.3 ProsedurKita bisa membangun program lebih mudah dengan memecah

program menjadi blok-blok komponen yang lebih kecil yang disebutprosedur. Prosedur sangat berguna ketika kita sering menggunakanberulang-ulang tugas yang sama atau bermaksud membagikannya padaprogram lain. Dengan prosedur, kita akan lebih mudah men-debugprogram karena kita dapat melakukan pengujian per prosedurdaripadapengujian seluruh program.

2.8.3.1 Sub ProcedureSub prosedur adalah blok kode yang dijalankan sebagai

tanggapan atas terbentuknya even, baik even itu merupakan evenpemanggilan dari prosedur lain maupun even yang terjadi dari pemakaiprogram, misal even penekanan tombol kiri mouse. Sintak penulisan subprosedur adalah senagai berikut:

[Private/Public][Static] Sub <nama_prosedur> (argumen) <blok pernyataan>…………..…………..

End Sub

Page 28: Aplikasi Web Cam Untuk Menangkap Obyek

28

Setiap kali procedur dipanggil, blok pernyataan yang ada diantaraSub dan End Sub akan dijalankan. Argumen untuk sebuah proseduradalah mirip dengan deklarasi variabel, yaitu pemakaian suatu nilai yangmelewati pemanggilan prosedur. Berikut contoh pemakaiannya.

Private Sub Tebak_angka(Angka As Integer )Select Case Angka

Case Is > 10Print angka > 10 Case Is < 10Print angka < 10 Case ElsePrint angka = 10 End Select

End Sub

Untuk memanggilnya kita bisa menuliskan nama prosedurtersebut disertai argumennya dengan tipe data yang harus sama. Setiapkali prosedur ini dipanggil, prosedur ini akan menentukan angka apayang dilewatkan pada argumen dan akan mencetaknya pada form.Berikut adalah contoh pemanggilan prosedur tersebut melalui prosedureven, yaitu prosedur Command1_Click.

Private Sub Command1_Click() Input_angka% = InputBox( Masukkan angka sembarang! , Masukkan angka ) Tebak_angka input_angka%End Sub

Command1_Click juga merupakan Sub Procedur yang tanpaargument. Procedure Command1_Click akan dipanggil jika pemakaiprogram menekan tombol kiri mouse pada obyek Command1. Prosedursemacam ini disebut Event Procedure.

2.8.3.2 Function Procedure12Function Procedure sebenarnya hampir sama dengan Sub

Procedure, tetapi Function Procedure ini akan mengembalikan nilaitertentu setelah pemanggilannya. Sintak penulisannya adalah sebagaiberikut.

12 Retna P, Catur Edi W, Interfacing Port Paralel dan Port Serial Komputer dengan Visual Basic 6.0, hal. 38

Page 29: Aplikasi Web Cam Untuk Menangkap Obyek

29

[Private/Public] [Static] Function<nama_prosedur> (argumen) [As tipe data]<blok pernyataan>

End Sub

Berikut adalah contoh penggunaannya. Kita akan membuat fungsitebak_angka seperti pada contoh sebelumnya.

Function Tebak_angka(Angka As Integer ) As StringSelect Case Angka

Case Is > 10 Tebak_angka = angka > 10 Case Is < 10 Tebak_angka = angka < 10 Case Else Tebak_angka = angka = 10 End Select

End Sub

Cara kerja fungsi tebak-angka ini adalah sama seperti prosedurtebak_angka, yaitu menentukan nilai angka yang dilewatkan padaargumen. Akan tetapi, fungsi tebak_angka ini langsung mengembalikankarakter string yang bisa dilewatkan sebagai argumen pada fungsi atauprosedur lain. Berikut contoh pemanggilan fungsi tebak_angka sehinggajelas perbedaannya dengan prosedur tebak_angka.

Private Sub Command1_Click()Input_angka% = InputBox( Masukkan angkasembarang! , Masukkan angka )Print Tebak_angka input_angka%Label1.Caption = Tebak_angka (Input_angka%)

End Sub

Pada contoh pemanggilan tersebut dapat kita lihat. Karena fungsiTebak_angka adalah mengembalikan nilai karakter string, maka nilai inidapat langsung dilewatkan pada fungsi Print maupun sebagai nilai dariproperti Caption obyek Label1. hal ini tidak dapat dilakukan denganmenggunakan Sub Procedure.

Selain fungsi yang dapat kita buat sendiri seperti pada contoh diatas, Visual Basic telah menyediakan banyak sekali fungsi yang siappakai. Kita tinggal memanggil nama fungsi tersebut beserta argumenyang harus dilewatkan. Berikut adalah sebagian fungsi yang telahdisediakan oleh Visual Basic yang sering digunakan.

Page 30: Aplikasi Web Cam Untuk Menangkap Obyek

30

Fungsi-Fungsi Manipulasi StringFungsi-fungsi dalam kelompok manipulasi string ini biasa

digunkan untuk tugas-tugas yang berhubungan dengan pemrosesanstring. Berikut adalah tabel fungsi_fungsi tersebut dan contohpenggunaannya.

Tabel 2.2 Fungsi-Fungsi Manipulasi String

NamaFungsi Keterangan Contoh Penggunaan

Len Menentukan panjang sebuah string. Len(”pipit”)Menghasilkan 5

Ucase Mengubah huruf string menjadi hurufbesar.

Ucase(”pipit”)Menghasilkan PIPIT

Lcase Mengubah huruf string menjadi hurufkecil.

Lcase (”PIPIT”)Menghasilkan pipit

Right Menghasilkan karakter yang dihitungdari sisi kanan string

Right (”abcdefg”,3)Menghasilkan ”efg”

Left Menghasilkan karakter yang dihitungdari sisi kiri string

Left (”abcdefg”,3)Menghasilkan ”abc”

MidMenghasilkan karakter yang dihitungdari tengah-tengah string dimulai darititik awal tertentu.

Mid (”abcdefg”,3,3)Menghasilkan ”cde”

String Mengulangi karakter string String (3,”a”)Menghasilkan ”aaa”

Asc Menghasilkan kode ASCII dari huruftertentu.

Asc (”A”)Menghasilkan 65

Chr Menghasilkan karakter untuk kodeASCII tertentu.

Chr$ (65)Menghasilkan ”A”

Trim Menghasilkan karakter denganmenghilangkan karakter space-nya.

Trim (” <a> ”)Menghasilkan ”<a>”

StrMenghasilkan karakter yangmempresentasikan angkanumeriknya.

Str$ (-12.34)Menghasilkan”-12.34”

InStr Mencari titik awal dari sebuah stringdalam string yang besar.

Instr (”abcdef”,”cd”)Menghasilkan 3.

Val Menghasilkan numerik angka yangterkandung dalam string.

Val (”12.34abcdefg”)Mengahasilkan 12,34

Page 31: Aplikasi Web Cam Untuk Menangkap Obyek

31

13Fungsi-Fungsi Konversi DataFungsi-fungsi dalam kelompok konversi data ini biasa digunakan

untuk konversi data.

Tabel 2.3 Fungsi-Fungsi Konversi Data

NamaFungsi Keterangan Contoh

Penggunaan

CintMengembalikan nilai integer danmembulatkan pecahan ke integertertinggi.

Cint(”12.34”)Menghasilkan 12

CStr Mengembalikan nilai stringCStr (12.34)Menghasilkan”12,34”

Cbyte Mengembalikan nilai Byte, nilaimaksimumnya adalah 255.

Cbyte (”12.34”)Menghasilkan 13

Fix

Memotong bagian fraksial, tetapiuntuk bilangan negatif akanmengembalikan nilai yang lebih besaratau sama dengan bilangan tersebut.

Fix (1.23)Menghasilkan 1Fix (-1.23)Menghasilkan -1

Int

Memotong bagian fraksial, tetapiuntuk bilangan negatif akanmengembalikan nilai yang lebih kecilatau sama dengan bilangan tersebut.

Fix (1.23)Menghasilkan 1Fix (-1.23)Menghasilkan -2

Hex Menghasilkan nilai hexadesimal darinilai numerik yang dilewatkan.

Hex (10)Menghasilkan”A”

2.8.4 OperatorOperator digunakan pada Visual Basic untuk memanipulasi data

maupun untuk melakukan perhitungan. Operator Pada Visual Basicdapat dikelompokkan menjadi tiga kelompok, yaitu operator matematik,operator perbandingan, dan operator logika.

2.8.4.1 Operator MatematikOperator matematik digunakan untuk melakukan operasi

perhitungan matematik. Dalam Visual Basic, jika suatu ekspresi

13 Retna P, Catur Edi W, Interfacing Port Paralel dan Port Serial Komputer dengan Visual Basic 6.0, hal. 41

Page 32: Aplikasi Web Cam Untuk Menangkap Obyek

32

mempunyai operator lebih dari satu kategori, maka operator matematikyang akan dievaluasi lebuh dulu dilanjutkan dengan operatorperbandingan, dan terakhir operator logika. Berikut adalah tabel operatormatematika dimulai dari hirarki paling tinggi ke paling rendah.

Tabel 2.4 Tabel Operator Matematik

Operator Operasi.^ Pemangkatan.- Tanda negatif.*,/ Perkalian dan pembagian .\ Pembagian integer.Mod Modulus (sisa pembagian).+,- Penambahan dan pengurangan.& Penggabungan String

2.8.4.2 Operator PerbandinganOperator perbandingan digunakan untuk membandingkan suatu

ekspresi dengan ekspresi yang lain yang menghasilkan nilai Boolean(False atau True). Berikut adalah operator perbandingan pada VisualBasic.

Tabel 2.5 Tabel Operator Perbandingan

Operator Operasi.= Sama dengan.

<> Tidak sama dengan.< Lebih kecil.> Lebih besar.

<= Lebih kecil atau sama dengan.>= Lebih besar atau sama dengan.

Like Mempunyai ciri yang sama.Is Mempunyai referensi obyek yang sama.

2.8.4.3 Operator LogikaOperator logika digunakan untuk mengespresikan satu atau lebih

ekspresi logika yang akan menghasilkan nilai boolean. Tabel berikutadalah operator logika dimulai dari hirarki paling tinggi ke paling rendahbeserte tabel kebenarannya.

Page 33: Aplikasi Web Cam Untuk Menangkap Obyek

33

Tabel 2.6 Tabel Operator Logika

Tabel Kebenaran OperasiOperator Keterangan Operan HasilNot True False

NotAkan menghasilkan nilaikebalikan dari nilai eksprresioperan Not False True

True And True TrueTrue And False FalseFalse And True FalseAnd

Akan menghasilkan nilaiTrue hanya jika opersioperannya keduanya bernilailogika True False And False False

True Or True TrueTrue Or False TrueFalse Or True TrueOr

Akan menghasilkan nilaiTrue jika salah satu operasioperannya bernilai logikaTrue False Or False False

True Xor True FalseTrue Xor False TrueTrue Xor False TrueXor

Akan mengembalikan nilaiTrue jika ekspresi operannyabernilai logika berbeda

False Xor False FalseTrue Eqv True TrueTrue Eqv False FalseTrue Eqv False FalseEqv

Akan menghasilkan nilaiTrue jika eksoresi operannyabernilai logika sama.

False Eqv False TrueTrue Eqv True TrueTrue Eqv False FalseTrue Eqv False TrueImp

Akan menghaslkan nilai falsejika ekspresi operan sebelahkiri operator bernilai logikaTrue dan kanan bernilailogika false. False Eqv False True

Page 34: Aplikasi Web Cam Untuk Menangkap Obyek

34

Halaman Ini Sengaja Di Kosongkan

Page 35: Aplikasi Web Cam Untuk Menangkap Obyek

35

DRIVERMOTOR DC

MIKROKONTROLLER AT89S51

RS232USB

BAB IIIPERENCANAAN DAN PEMBUATAN PERANGKAT

LUNAK

Didalam bab tiga ini pembahasan materi meliputi perencanaandan pembuatan perangkat lunak yang akan diterapkan dalam sistemkerja Robot Banteng.

3.1 Sistem KonfigurasiSecara keseluruhan kerja Robot Banteng ini sangat ditentukan

oleh perangkat lunak yang diterapkan didalamnya. Perangkat lunak yangdibangun didalam robot ini adalah perangkat lunak untuk pengolahangambar. Agar robot dapat berjalan dengan baik dan sesuai dengan yangdiinginkan maka sangat diperlukan piranti keras sebagai pendukungnya,antara lain mekanik robot itu sendiri, penggerak motor sertamikrokontroller AT89S51 sebagai penghubung antara PC denganpenggerak motor.

Secara keseluruhan gambaran sistem yang dibangun di robotbanteng adalah sebagai berikut:

Gambar 3.1 Sistem diagram blok Robot Banteng

Page 36: Aplikasi Web Cam Untuk Menangkap Obyek

36

Berikut adalah diagram alir untuk pengolahan gambar (imageprocessing):

Page 37: Aplikasi Web Cam Untuk Menangkap Obyek

37

Gambar 3.2 Diagram alir pengolahan citra

3.2. Setting MekanikAgar robot dapat berjalan sesuai yang diharapkan, maka perlu

dilakukan pengaturan posisi kamera dengan baik pada mekanik robot.Hal ini bertujuan agar gerakan robot selaras dengan obyek yangditangkap oleh kamera. Berikut gambar mengenai pengaturan letakkamera pada mekanik robot:

Page 38: Aplikasi Web Cam Untuk Menangkap Obyek

38

Gambar 3.3 Peletakan kamera pada mekanik robot

3.3. Pengolahan gambar oleh PCDalam pengolahan gambar digunakan segmentasi untuk

memisahkan obyek tersebut dengan latar belakangnya. Metode yangdipakai adalah segmentasi warna. Obyek yang akan di deteksi adalahbendera berwarna merah dalam hal ini adalah robot matador. Pada saatpertama kali robot dijalankan gerakan robot adalah memutar kekanan.Gerakan memutar ini dilakukan untuk mendapatkan obyek yangdimaksud.

Apabila obyek telah ditemukan, maka akan dilakukanperhitungan-perhitungan untuk mendapatkan titik-titik (x,y) bendera.Untuk menentukan jarak penyerangan obyek oleh robot, dilakukanlangkah-langkah perhitungan titik-titik x,y yang telah ditemukan tadi.Secara garis besar langkah-langkah yang diproses didalam PC adalahsebagai berikut:

1. Pengambilan gambar.2. Segmentasi warna.3. Proses penentuan titik tengah obyek (x,y), panjang

obyek(nX), lebar obyek(nY) dan Luas obyek (L).4. Proses perhitungan jarak penyerangan obyek dengan

menghitung luas obyek..5. Proses penyerangan.

Setelah dilakukan berbagai macam perhitungan, maka akandihasilkan suatu keputusan yang kemudian dikirim ke mikrokontrollermelalui komunikasi serial.

3.4. Pengambilan GambarUntuk pengambilan gambar digunakan web cam Vimicro USB PC

Camera dengan USB sebagai konektornya. Kamera tersebut memilikifokus yang harus diset secara manual (bukan autofokus).

Page 39: Aplikasi Web Cam Untuk Menangkap Obyek

39

Gambar 3.4 Kamera Vimicro USB PC Camera

Untuk mengatasi pencahayaan agar obyek yang ditangkap dapatbenar-benar baik, maka kita juga perlu mengeset tingkat kecerahan,kontras serta ketajaman pada saat kamera mengambil gambar. Caramengesetnya adalah dengan cara manual. Untuk melakukannya kitacukup menggunakan fasilitas software dari Vimicro itu sendiri.

Gambar 3.5 Kontrol Kamera Logitech Quick Zoom

3.5. Pengenalan ObyekPengenalan Obyek yang dimaksud disini adalah obyek matador.

Pengenalan obyek tersebut dilakukan dengan cara scanning. Scanningdigunakan untuk menelusuri frame setelah dilakukan segmentasi, apakahada obyek yang dimaksud atau tidak. Sebelum dilakukan scanningobyek, terlebih dahulu dilakukan penskalaan untuk memperkecil ukuran

Page 40: Aplikasi Web Cam Untuk Menangkap Obyek

40

gambar sehingga lebih cepat diproses. Setelah obyek yang di maksuddidapatkan selanjutnya akan dilakukan langkah-langkah sebagai berikut:

3.5.1. Titik Tengah ObyekAgar gerakan robot sesuai dengan yang diharapkan, maka

diperlukan perhitungan antara titik tengah obyek yang ditangkap dengantitik tengah layar. Hal ini dilakukan agar gerakan robot dapat lurusterhadap obyek. Sebelumnya dilakukan proses scanning obyek terlebihdahulu.

Scanning dimulai secara vertikal dengan memanfaatkan titikkoordinat antara y = 0 sampai y = 23 (dari bawah ke atas frame),kemudian dilanjutkan scanning secara horisontal dengan titik koordinatantara x = 0 sampai x = 31 (dari kiri ke kanan frame). Apabila pada saatproses scanning tersebut ditemukan perubahan warna maka akandiketahui nx sebagai koordinat titik x dan ny sebagai koordinat titik ydari obyek. Apabila nilai dari x dan y dari hasil proses scanning tersebutsudah didapatkan, maka dilakukan proses perhitungan hinggadidapatkan nilai titik tengah obyek. Persamaan pencarian titik tengahobyek seperti berikut:

xObyek = nx / n * 10 + 5 yObyek = ny / n * 10 + 5

dimana: xObyek = titik tengah pada sumbu x yObyek = titik tengah pada sumbu y nx = perubahan nilai x ny = perubahan nilai y n = jumlah perubahan

Pada proses segmentasi sebelumnya telah didapatkan nilai r, gdan b sebesar 255, hal tersebut akan menyebabkan obyek berwarna putihdan latar belakangnya berwarna hitam. Gambaran dari proses scanningdan pencarian titik tengah adalah sebagai berikut:

Page 41: Aplikasi Web Cam Untuk Menangkap Obyek

41

Gambar 3.6 Proses scanning dan pencarian titik tengah

Pada robot nilai treshold dapat diatur secara manual. Hal inidilakukan untuk mempermudah user mengoperasikannya. Karena warnaobyek yang ditangkap kamera tidak semua bagiannya sama. Seperticontoh yang kita ketahui bahwa buah apel yang berwarna merah tidakseluruh bagiannya berwarna merah, mungkin pada bagian pinggirnyaada yang berwarna terang dan ada yang berwarna gelap. Hal tersebutmenyebabkan nilai warna merah untuk setiap pixel gambar menjaditidak sama. Untuk mengatasi hal tersebut maka diperlukan penentuannilai treshold.

3.5.2. Luas ObyekPenentuan Luas obyek dimaksudkan untuk mengetahui seberapa

besar pixel obyek dilayar. Hal ini perlu diketahui untuk menentukanjarak tendang obyek. Sebelumnya dicari dahulu panjang dan lebar obyekdengan menggunakan rumus berikut:

xL = xMax - xMin + 1 yL = yMax - yMin + 1

dimana: xL = panjang obyek (sumbu x) yL = lebar obyek (sumbu y) xMax = nilai x hasil scanning yang lebih besar dari -1 xMin = nilai x hasil scanning yang kurang dari 32 yMax = nilai x hasil scanning yang lebih besar dari -1 yMin = nilai x hasil scanning yang kurang dari 24

: Arah scanning

(0,0)

24

32

Keterangan:

Page 42: Aplikasi Web Cam Untuk Menangkap Obyek

42

Apabila panjang dan lebar obyek sudah didapatkan, makadilakukan perhitungan hingga didapatkan luas obyek. Untuk mencariLuas tersebut digunakan persamaan sebagai berikut:

Luas = xL * yL

3.6. Jarak Penyerangan ObyekJarak penyerangan pada robot banteng dapat diatur dengan

memperhatikan luas obyek yang telah didapat. Jarak penyerangan dapatkita atur sesuai dengan keperluan. Panjang obyek yang akan di deteksiadalah 18 cm dan lebar 15 cm. Dengan panjang dan lebar seperti itudapat diketahui luas obyek. Untuk mendapatkan jarak sesuai denganyang diperlukan maka dilakukan pengukuran langsung. Misal kitamenginginkan jarak sejauh 1 meter, maka ukur jarak kamera denganobyek sejauh 1 meter. Kemudian lihat besar luas obyek pada layar. Nilailuas pixel pada layar tersebut mewakili jarak antara robot dengan obyek.

Pada robot banteng jarak penyerangan ditentukan antara range 80cm (63 pixel) sampai dengan 120 cm (30 pixel). Apabila luas obyeklebih besar dari 63 pixel robot akan mundur dan sebaliknya apabila luaskurang dari 30 pixel robot akan maju. Untuk mempermudahkanpenggunaan range penyerangan juga dapat diatur secara manual denganmemasukkan nilai Luas pada textbox yang telah ditentukan.

Untuk menentukan obyek sudah tepat berada pada tengah layarmaka dilakukan perhitungan error seperti berikut:

e = ( 160-x ) \ 40

dimana : x = nilai titik tengah obyek pada sumbu x

Berikut sintak programnya:

Gambar 3.7 Sintak program penentuan posisi robot

If e = 0 Then frmUtama.txtPerintah = "Maju" frmUtama.MSComm1.Output = "F"ElseIf e < 0 Then frmUtama.txtPerintah = "Putar ke Kiri : " & Abs(e) frmUtama.MSComm1.Output = "L"Else frmUtama.txtPerintah = "Putar ke Kanan : " & Abs(e) frmUtama.MSComm1.Output = "R"End If

Page 43: Aplikasi Web Cam Untuk Menangkap Obyek

43

apabila nilai error (e) sama dengan 0 berarti posisi obyek sudah tepatditengah-tengah layar. Apabila kurang dari 0 posisi obyek terlalu kekanan dan sebaliknya bila lebih besar dari 0 posisi obyek terlalu ke kiri.

3.7. Komunikasi Data antara PC dengan MikrocontrollerUntuk mengaktifkan seluruh sistem sesuai dengan fungsinya,

perlu dibuat perangkat keras dan perangkat lunak. Perangkatlunak disini yaitu untuk mengatur jalannya data yang dikirim olehkomputer ke mikrokontroller agar data yang terkirim diterimadengan sempurna oleh mikrokontroller. Ada dua perangkat lunakpada komunikasi data yaitu perangkat lunak untuk komunikasidata pada PC dan perangkat lunak untuk komunikasi data padamikrokontroller.

Dalam proyek akhir ini akan membuat robot otomatis denganmenggunakan komunikasi serial. Pada bagian pemroses gambar dalamhal ini warna terdiri dari kamera, USB (Universal Serial Bus), komputer,rangkaian pengubah level tegangan, sedangkan bagian pengaturan gerakrobot terdiri dari rangkaian mikrokontroller dan rangkaian driver sebagaipenggerak motor. Sedangkan untuk perancangan komunikasi datamenggunakan RS232. Dengan perangkat tersebut dapat digunakan untukmengirimkan data/karakter dari komputer ke mikrokontroller dengansempurna.

Gambar 3.8 Jalur RS232 pada DB9

Saat ini penggunaan bahasa pemrograman berbasis objek sedangmenjadi trend yang tak terhindarkan. Vendor perangkat lunakmenawarkan bahasa dengan karakter tersebut dengan sebuah kosakatayang cantik, yakni Visual, sehingga kita kenal Delphi milik Borland,Visual C++, Visual Basic, atau Oracle, PowerBuilder, Visual dBase,Visual Foxpro, untuk aplikasi database. Tak terkecuali dalam aplikasisistem kontrol industri, perangkat yang ditawarkan para vendor-nya juga

Page 44: Aplikasi Web Cam Untuk Menangkap Obyek

44

semakin mendukung penggunaan pemrograman visual. Seperti VisualBasic, misalnya, kalangan industri sistem kontrol memberikan peluanguntuk pengembangan sistem mereka dengan bahasa ini, terutama dikalangan pengguna sistem berbasis Windows. Yokogawa, ABB,Wonderware, adalah nama yang bisa disebutkan untuk hal ini. Padaaplikasi ini, akan dibahas menggunakan Visual Basic denganpertimbangan bahasa pemrograman yang paling banyak dipakai padadevelop sistem.Komuniaksi serial dapat digolongkan menjadi dua:

• Pooling yaitu suatu teknik pengiriman dan penerimaan datasecara terus menerus.

• Interupt yaitu suatu pengiriman data jika ada data yangmasuk baru akan mendapat respon dan begitu sebaliknyasehingga computer tidak terlalu sibuk.

Gambar 3.9 Form dan properties pada Visual Basic

Pengiriman informasi dari PC menuju mikrokontrolermenggunakan data serial dengan baudrate 9600 bps non parity data bit 8dan stop bit 1 (9600, n, 8, 1). Untuk mengatur data serial pada visualbasic telah disediakan properti pengaturan (lihat gambar diatas). Untukmenambahkan serial comm pada visual basic lakukan langkah sebagaiberikut :Klik kanan toolbox kemudian klik component, kemudian pilih microsoftcomm control 6.0, lalu klik OK. Lihat gambar berikut:

Page 45: Aplikasi Web Cam Untuk Menangkap Obyek

45

Gambar 3.10 Daftar komponen pada Visual Basic

Untuk membuat aplikasi sederhana, kita berikan contohpemrograman chating atau pengiriman data dari PC1 ke PC 2 (dari DTEke DTE) menggunakan system interrupt.Langkah-langkah :1. Buat form seperti pada gambar form diatas ,tambahkan komponen

komunikasi serial menggunakan Microsoft Comm Control dan ubahpropertiesnya sesuai dengan keperluan, boudrate, parity, databit danstop bitnya.

2. Pada Load Form aktifkan port komunikasi serial

Private Sub Form_Load()MSComm1.PortOpen = TrueText2 = ""

End Sub

3. Untuk prosedure pengiriman data dari PC ke PC lain maka setelahdata pada Text1(textbox) diisi dengan data, maka agar commandbutton Kirim bias melakukan pengiriman data lakukan perintahdibawah ini :

Private Sub Command1_Click() MSComm1.Output = Text1 + Chr(13) + Chr(10)

End Sub

Page 46: Aplikasi Web Cam Untuk Menangkap Obyek

46

4. Sedangkan untuk menerima hasil kiriman data dari PC lain makahasil informasinya tampilkan pada Text2 (Textbox) tetapi propertymultiline jadikan true agar bisa menampilkan lebih dari satu baris.Kemudian lakukan pengecekan, apakah ada data yang masuk,gunakan procedure OnComm dengan cara double clik komponenMsComm1 lalu ketik listing program seperti dibawah ini :

Private Sub MSComm1_OnComm() Text2 = Text2 + MSComm1.Input If Right(Text2, 1) = Chr(13) Then Text2 = Text2 + Chr(10) End If

End Sub

Pada perancangan perangkat lunak ini untuk pengiriman data darikomputer ke mikrokontroler digunakan komunikasi serial secara interuptyaitu apabila ada data yang dikirimkan ke mikrokontroler maka datatersebut langsung diolah oleh mikrokontroler untuk diperolehresponnya. Untuk mempermudah pengolahan serta pengiriman datamelalui komunikasi serial, maka pada perancangan perangkat lunak datayang dikirimkan ke mikrokontroler adalah berupa satu karakter hurufatau satu karakter angka. Pada mikrokontroler huruf atau karakter angkayang diterima tersebut akan diolah sesuai dengan subrutin yang telahditunjukkan pada program mikro itu sendiri. Karakter yang dikirimkanke mikrokontroler tersebut antara lain adalah:

Karakter ‘F’ = untuk perintah majuKarakter ‘B’ = untuk perintah mundurKarakter ‘R’ = untuk perintah berputar kekananKarakter ‘L’ = untuk perintah berputar kekiriKarakter ‘S’ = untuk perintah berhentiKarakter ’A’ = untuk perintah SerangKarakter ’C’ = untuk perintah Scanning obyekKarakter ’E’ = untuk perintah menghentikan seluruh proses

penerimaan data dari PC

Untuk mengirimkan karakter diatas pada Visual Basic, cukupdigunakan perintah sebagai berikut:

Mscomm1.Portopen = TrueMscomm1.Output = ’karakter’

Page 47: Aplikasi Web Cam Untuk Menangkap Obyek

47

3.8. Komunikasi data dari PC ke PCKomunikasi data dari PC ke PC pada robot banteng digunakan

untuk mengirimkan data dari robot matador apabila robot banteng telahtertusuk. Apabila data telah diterima oleh robot banteng maka akanterjadi interrupt untuk menghentikan semua aktifitas robot banteng.Sehingga pertandingan dianggap telah selesai. Apabila belum ada datayang dikirim oleh robot matador maka robot banteng akan melakukanpencarian obyek terus menerus sampai beberapa kali looping.

Untuk komunikasi digunakan kontrol winsock. Kontrol initerdapat dalam komponen Microsoft Winsock Control. Untukmengaktifkan control ini Klik kanan toolbox kemudian klik component,kemudian pilih microsoft winsock control 6.0, lalu klik OK. Lihatgambar berikut:

Gambar 3.11 Daftar komponen Winsock

Untuk membuat aplikasi pertama adalah setting dahulu nilaiLocalPort(terserah), RemotePort (sesuai dengan LocalPort PC yang akandikoneksikan), RemoteHost (IP PC yang akan dikoneksikan), Protocol(1-sckUDPProtokol).

Page 48: Aplikasi Web Cam Untuk Menangkap Obyek

48

Contoh aplikasi dari control winsock adalah sebagai berikut:1. Buat form seperti dibawah ini dan tambahkan komponen

winsock pada form tersebut, ubah propertiesnya sepertiketerangan diatas.

Gambar 3.12 Properties Winsock

2. Pada load form aktifkan winsock

Private Sub Form_Load()Winsock1.Bind

End Sub

3. Untuk prosedure pengiriman data dari PC ke PC lain maka digunakan commandbutton isi dari perintahnya adalah sebagaiberikut:

Private Sub Command1_Click()Winsock1.SendData "stop"

End Sub4. Sedangkan untuk menerima hasil kiriman data dari PC lain

maka datanya ditampilkan pada Text1 (Textbox) tetapiproperty multiline jadikan true agar bisa menampilkan lebihdari satu baris. Lalu ketik listing program seperti dibawah ini :

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim data

Winsock1.GetData data, vbStringText1 = Text1 + data + Chr(13) + Chr(10)

End Sub

Page 49: Aplikasi Web Cam Untuk Menangkap Obyek

49

BAB IVPENGUJIAN DAN ANALISA

Pada bab ini akan dilakukan pengujian untuk mengetahui tingkatkeberhasilan proyek akhir yang telah direncanakan seperti pada Bab III .Dengan adanya pengujian akan diketahui kekurangan-kekurangan yangada, sehingga dapat dilakukan perbaikan.

Secara keseluruhan jalannya program yang telah dibuat denganbahasa pemrograman Visual Basic 6.0 ini berjalan dengan baik sesuaidengan yang diharapkan. Dalam sistem perangkat lunak penyusunmenggunakan komputer dengan spesifikasi sebagai berikut :ü Prosesor Pentium IV LGA 2,66 GHzü Memori 256 MBü 4 buah port USBü 1 buah port serialü Operating system Windows XP Profesional

4.1 Pengujian dan Pengambilan DataProses pengujian dan pengambilan data dilakukan di dalam

ruangan yang memiliki cahaya cukup terang. Sehingga pengaturanthreshold pun dapat dilakukan dengan mudah. Pengambilan gambarharus dilakukan dengan cepat dan tepat untuk mendapatkan hasil yangmaksimal. Dalam setiap pengambilan gambar frame rate adalah 12 fps.Frame rate adalah jumlah gambar yang dapat ditangkap kamera setiapdetiknya. Data yang akan diambil pada pengujian ini adalah panjang,lebar, luas, posisi dan jarak obyek. Berikut tampilan form untukmempermudah membaca data-data tersebut serta melihat prosespengolahan gambar bagi para pengguna:

Page 50: Aplikasi Web Cam Untuk Menangkap Obyek

50

Gambar 4.1 Tampilan form program

Pada saat pertama kali robot dijalankan, robot akan menscanobyek secara otomatis apabila obyek yang dicari tidak di temukan robotakan bergerak memutar kekanan untuk mencari obyek tersebut. Setelahdapat menemukan obyek yang dimaksud, maka akan dilakukanperhitungan untuk mencari titik tengahnya terhadap frame kamera.

Setelah robot dijalankan, gerakan yang didapat sesuai denganyang diharapkan. Robot akan bergerak maju apabila jarak penyerangankurang dekat. Dan robot akan mundur apabila jatak penyerangan terlaludekat. Sebelum melakukan gerakan, robot terlebih dulu harus beradapada posisi menghadap lurus dengan obyek gawang. Oleh sebab itu padasaat berjalan, robot akan selalu melakukan koreksi titik tengah obyekterhadap titik tengah layar.

Jarak terjauh yang dapat di deteksi robot dengan ukuran obyek 18x 15 cm adalah 495 cm sedangkan jarak terdekat adalah 30 cmsemuanya tergantung dari pencahayaan dalam ruangan tersebut. Berikutadalah tabel data yang didapat dari hasil pengujian dengan nilaithreshold 10. Jarak ditentukan sebesar 75 cm sampai 125 cm denganwaktu pengambilan siang hari dalam ruangan lab TA.

Page 51: Aplikasi Web Cam Untuk Menangkap Obyek

51

Tabel 4.1: Tabel data hasil pengujianJa

rak(

cm)

Fps

Panj

ang

(yL

)(p

ixel

s)

Leb

ar (x

L)

(pix

els)

Lua

s(p

ixel

s)

Titi

k X

(pix

els)

Titi

k Y

(pix

els)

Posi

si

Kon

disi

12,61 10 7 70 55 132 kanan Ptr kiri12,13 10 7 70 155 132 Tengah Mundur75

12,23 10 7 70 276 131 kiri Ptr kanan12,61 9 6 54 50 146 Kanan Ptr kiri12,55 9 6 54 160 145 Tengah Serang80

12,22 9 6 54 280 136 kiri Ptr kanan12,49 8 5 40 66 132 kanan Ptr kiri12,27 8 5 40 155 130 Tengah Serang100

12,45 8 5 40 254 126 Kiri Ptr kanan12,19 7 4 28 40 139 Kanan Ptr kiri12,39 7 4 28 141 136 Tengah Maju120

12,51 6 4 24 260 130 Kiri Ptr kanan12,48 6 4 24 71 139 Kanan Ptr kiri12,57 6 4 24 151 129 Tengah Maju125

12,26 6 4 24 270 130 Kiri Ptr kanan

Gambar-gambar dibawah ini merupakan beberapa gambar daridata diatas.1.

Gambar 4.2 Posisi 1

Keterangan:Koordinat obyek telah diketahui, posisi obyek sudah di tengah tetapiluas melebihi dari yang diharapkan sehingga robot diperintahkan untukmundur. Jarak robot dengan obyek di set sebesar 75 cm.

Page 52: Aplikasi Web Cam Untuk Menangkap Obyek

52

2.

Gambar 4.3 Posisi 2

Keterangan:Koordinat obyek telah diketahui, posisi obyek sudah tepat di tengah-tengah luas obyek juga sudah sesuai dengan yang diharapkan sehinggarobot diperintahkan untuk menyerang. Jarak obyek di set 80 cm.

3.

Gambar 4.4 Posisi 3

Keterangan:Koordinat obyek telah diketahui, posisi obyek sudah tepat di tengah-tengah luas obyek juga sudah sesuai dengan yang di harapkan sehinggarobot di perintahkan untuk menyerang. Jarak obyek di set 100 cm.

4.

Gambar 4.5 Posisi 4

Page 53: Aplikasi Web Cam Untuk Menangkap Obyek

53

Keterangan:Koordinat obyek telah diketahui, posisi obyek sudah tepat di tengah-tengah luas obyek masih kurang dari yang di harapkan robot diperintahkan untuk maju. Jarak obyek di set 120 cm.

5.

Gambar 4.6 Posisi 5

Keterangan:Koordinat obyek telah diketahui, posisi obyek sudah tepat di tengah-tengah luas obyek masih kurang dari yang di harapkan robot diperintahkan untuk maju. Jarak obyek di set 125 cm.

6.

Gambar 4.7 Posisi 6

Keterangan:Koordinat obyek telah diketahui, posisi obyek terlalu ke kanan obyek diperintahkan untuk berputar ke kiri . Jarak obyek di set 75 cm.

Page 54: Aplikasi Web Cam Untuk Menangkap Obyek

54

7.

Gambar 4.8 Posisi 7

Keterangan:Koordinat obyek telah diketahui, posisi obyek terlalu ke kiri obyek diperintahkan untuk berputar ke kanan . Jarak obyek di set 80 cm.

4.2 AnalisaFaktor utama yang sangat berpengaruh dalam pengenalan obyek

adalah pencahayaan, dimana setiap ruangan yang memiliki intensitascahaya berbeda harus digunakan nilai treshold yang berbeda pula. Jarakantara obyek dengan robot yang tidak selalu sama, hal ini akanmenyebabkan perubahan pada nilai RGB-nya, karena perbedaan jarakakan mempengaruhi intensitas cahaya yang jatuh ke atas permukaanobyek.

Data yang diperoleh dari robot adalah berupa gambar duadimensi, sehingga hasil gambar yang didapat pada saat robot beradadidepan obyek akan berbeda dengan hasil gambar yang didapat padasaat robot berada pada sudut kemiringan tertentu terhadap obyek. Posisirobot yang berada di sebelah kiri atau di sebelah kanan obyek sangatmempengaruhi perhitungan titik koordinat obyek, sehingga hal tersebutmenyebabkan luas obyek sebagai acuan jarak penyerangan tidak samadengan nilai luas obyek yang diperoleh bila robot berada tepat didepanobyek. Untuk itu apabila robot belum tepat berada di tengah-tengahrobot di perintahkan untuk berputar ke kiri atau ke kanan.

Page 55: Aplikasi Web Cam Untuk Menangkap Obyek

55

BAB VPENUTUP

5.1 KesimpulanDari hasil pengujian proyek akhir ini dapat ditarik beberapa

kesimpulan, antara lain:1. Pengenalan obyek berjalan dengan baik pada nilai treshold 10 dan

dilakukan pada siang hari di dalam ruangan lab TA.2. Proses penyerangan obyek dapat dilakukan dengan baik dan

pencarian ulang pun dapat dilaksanakan dengan baik pula.3. Proses pengiriman data dari PC ke mikro tidak ada hambatan begitu

pula penerimaan data yang di kirimkan dari PC robot Matadoruntuk menghentikan seluruh aktifitas robot banteng dapat berjalandengan baik.

4. Penentuan posisi kamera dan pencahayaan memiliki pengaruh besardalam pengenalan obyek, untuk itu dibutuhkan pengesetan kameradan pencahayaan yang cukup pada saat robot akan dijalankan.

5. Jarak maksimal robot dapat mendeteksi obyek adalah 495 cmsedangkan jarak minimal adalah 30 cm.

6. Keberhasilan robot dalam penyerangan tergantung dari kelincahanrobot dalam menghindari serangan balik dari robot matador.

7. Algoritma penentuan titik tengah obyek dengan titik tengah layarserta toleransi selisih nilai diantara keduanya (koreksi titik tengahlayar dengan titik tengah obyek) berjalan dengan baik.

8. Dari pengujian, range untuk batas penyerangan obyek di tentukanantara 63 pixels - 30 pixels luas obyek pada layar atau 80 cm – 120cm jarak sebenarnya. Kurang dari 30 pixels robot di perintahkanuntuk maju dan lebih besar dari 63 pixels robot di perintahkan untukmundur. Perintah tersebut dapat dilaksanakan dengan lancar.

5.2 SaranDari kekurangan-kekurangan yang diperoleh pada saat pengujian

program, ada beberapa hal yang perlu diperhatikan untuk pembuatanperangkat dengan menggunakan sensor kamera.

1. Sebelum menjalankan peralatan sebaiknya dilakukanpengesetan kamera lebih dahulu agar gambar yang didapatkansesuai dengan ketentuan referensi data yang telah ditetapkanpada program. Pengesetan tersebut diantaranya adalahpengaturan pencahayaan kamera sesuai dengan tempat

Page 56: Aplikasi Web Cam Untuk Menangkap Obyek

56

pengambilan gambar, peletakan sensor kamera pada mekanikatau plan yang dijalankan serta waktu peralatan tersebutdijalankan.

2. Pada form aplikasi program sebaiknya dibuat semi otomatisagar para pengguna dapat dengan mudah menggunakannya,seperti penentuan jarak penyerangan.

3. Untuk pengembangan robot otomatis dengan menggunakanpemrosesan gambar (image processing), sebaiknya digunakankamera yang lebih bagus agar respon yang didapat bisa lebihcepat apabila terjadi perubahan-perubahan secara mendadakpada obyek yang ditangkap.

Page 57: Aplikasi Web Cam Untuk Menangkap Obyek

57

DAFTAR PUSTAKA

[1] Andi Nalwan, Paulus,” Teknik Antarmuka dan PemrogramanMikrokontroller AT89C51”, PT. Elex Media Komputindo, 2003

[2] Bachtiar Novan, Andi, Robot Penyerang dalam permainan sepakbola (perangkat lunak) , Proyek Akhir PENS-ITS, 2005

[3] B.D, Bima Sena,” Image Prosesing dan Aplikasinya”, PelatihanPENS-ITS,2006

[4] Eko Nugroho, Teguh, “Robot Cerdas Kakak Tua (PerangkatLunak) , Proyek Akhir PENS-ITS, 2005

[5] Kurniadi Adi, Pemrograman Microsoft Visual Basic 6.0 , ELEXMEDIA KOMPUTINDO, 1999

[6] Prasetia Retna, Edi Widodo, Catur, “ Interfacing Port Paralel danPort Serial Komputer dengan Visual Basic 6.0”, AndiYogyakarta,2004

[7] Suprihatin Resmah, Dewi,“Perancangan dan Implementasi RobotBanteng yang Mengikuti Warna Merah Sebagai AcuanPergerakannya”. Proyek Akhir PENS-ITS, 2004

[8] Wahana, “Tip & Trik Pemrograman Visual Basic 6.0”, AndiYogyakarta, 2001.

Page 58: Aplikasi Web Cam Untuk Menangkap Obyek

58

Halaman Ini Sengaja Di Kosongkan

Page 59: Aplikasi Web Cam Untuk Menangkap Obyek

59

LAMPIRAN

' Module : Video For Windows (WinAPI AviCap32.DLL)Option Explicit'// ------------------------------------------------------------------'// deklarasi Windows API Constants / Types'// ------------------------------------------------------------------Public Const WM_USER = &H400Type POINTAPI x As Long y As LongEnd TypeDeclare Function SendMessage Lib "user32" Alias "SendMessageA"(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam AsInteger, ByVal lParam As Long) As LongDeclare Function SendMessageS Lib "user32" Alias "SendMessageA"(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam AsInteger, ByVal lParam As String) As Long

'// Definisi molana message rangePublic Const WM_CAP_START = WM_USERPublic Const WM_CAP_GET_CAPSTREAMPTR =WM_CAP_START + 1Public Const WM_CAP_SET_CALLBACK_ERROR =WM_CAP_START + 2Public Const WM_CAP_SET_CALLBACK_STATUS =WM_CAP_START + 3Public Const WM_CAP_SET_CALLBACK_YIELD =WM_CAP_START + 4Public Const WM_CAP_SET_CALLBACK_FRAME =WM_CAP_START + 5Public Const WM_CAP_SET_CALLBACK_VIDEOSTREAM =WM_CAP_START + 6Public Const WM_CAP_SET_CALLBACK_WAVESTREAM =WM_CAP_START + 7Public Const WM_CAP_GET_USER_DATA = WM_CAP_START + 8Public Const WM_CAP_SET_USER_DATA = WM_CAP_START + 9Public Const WM_CAP_DRIVER_CONNECT = WM_CAP_START +10

Page 60: Aplikasi Web Cam Untuk Menangkap Obyek

60

Public Const WM_CAP_DRIVER_DISCONNECT =WM_CAP_START + 11Public Const WM_CAP_DRIVER_GET_NAME = WM_CAP_START+ 12Public Const WM_CAP_DRIVER_GET_VERSION =WM_CAP_START + 13Public Const WM_CAP_DRIVER_GET_CAPS = WM_CAP_START +14Public Const WM_CAP_FILE_SET_CAPTURE_FILE =WM_CAP_START + 20Public Const WM_CAP_FILE_GET_CAPTURE_FILE =WM_CAP_START + 21Public Const WM_CAP_FILE_ALLOCATE = WM_CAP_START + 22Public Const WM_CAP_FILE_SAVEAS = WM_CAP_START + 23Public Const WM_CAP_FILE_SET_INFOCHUNK =WM_CAP_START + 24Public Const WM_CAP_FILE_SAVEDIB = WM_CAP_START + 25Public Const WM_CAP_EDIT_COPY = WM_CAP_START + 30Public Const WM_CAP_SET_AUDIOFORMAT = WM_CAP_START+ 35Public Const WM_CAP_GET_AUDIOFORMAT = WM_CAP_START+ 36Public Const WM_CAP_DLG_VIDEOFORMAT = WM_CAP_START+ 41Public Const WM_CAP_DLG_VIDEOSOURCE = WM_CAP_START+ 42Public Const WM_CAP_DLG_VIDEODISPLAY = WM_CAP_START+ 43Public Const WM_CAP_GET_VIDEOFORMAT = WM_CAP_START+ 44Public Const WM_CAP_SET_VIDEOFORMAT = WM_CAP_START+ 45Public Const WM_CAP_DLG_VIDEOCOMPRESSION =WM_CAP_START + 46Public Const WM_CAP_SET_PREVIEW = WM_CAP_START + 50Public Const WM_CAP_SET_OVERLAY = WM_CAP_START + 51Public Const WM_CAP_SET_PREVIEWRATE = WM_CAP_START+ 52Public Const WM_CAP_SET_SCALE = WM_CAP_START + 53Public Const WM_CAP_GET_STATUS = WM_CAP_START + 54

Page 61: Aplikasi Web Cam Untuk Menangkap Obyek

61

Public Const WM_CAP_SET_SCROLL = WM_CAP_START + 55Public Const WM_CAP_GRAB_FRAME = WM_CAP_START + 60Public Const WM_CAP_STOP = WM_CAP_START + 68Public Const WM_CAP_ABORT = WM_CAP_START + 69Public Const WM_CAP_SINGLE_FRAME_OPEN =WM_CAP_START + 70Public Const WM_CAP_SINGLE_FRAME_CLOSE =WM_CAP_START + 71Public Const WM_CAP_SINGLE_FRAME = WM_CAP_START + 72Public Const WM_CAP_PAL_OPEN = WM_CAP_START + 80Public Const WM_CAP_PAL_SAVE = WM_CAP_START + 81Public Const WM_CAP_PAL_PASTE = WM_CAP_START + 82Public Const WM_CAP_PAL_AUTOCREATE = WM_CAP_START +83Public Const WM_CAP_PAL_MANUALCREATE =WM_CAP_START + 84Public Const WM_CAP_SET_CALLBACK_CAPCONTROL =WM_CAP_START + 85

'// Definisi akhir message rangePublic Const WM_CAP_END =WM_CAP_SET_CALLBACK_CAPCONTROL

'// ------------------------------------------------------------------'// Struktur type'// ------------------------------------------------------------------Type CAPDRIVERCAPSx wDeviceIndex As Long ' fHasOverlay As Long ' fHasDlgVideoSource As Long ' fHasDlgVideoFormat As Long ' fHasDlgVideoDisplay As Long ' fCaptureInitialized As Long ' fDriverSuppliesPalettes As Long ' hVideoIn As Long ' hVideoOut As Long ' hVideoExtIn As Long ' hVideoExtOut As Long 'End Type

Page 62: Aplikasi Web Cam Untuk Menangkap Obyek

62

Type CAPSTATUS uiImageWidth As Long uiImageHeight As Long fLiveWindow As Long fOverlayWindow As Long fScale As Long ptScroll As POINTAPI fUsingDefaultPalette As Long fAudioHardware As Long fCapFileExists As Long dwCurrentVideoFrame As Long dwCurrentVideoFramesDropped As Long dwCurrentWaveSamples As Long dwCurrentTimeElapsedMS As Long hPalCurrent As Long fCapturingNow As Long dwReturn As Long wNumVideoAllocated As Long wNumAudioAllocated As LongEnd Type

Type CAPTUREPARMS dwRequestMicroSecPerFrame As Long fMakeUserHitOKToCapture As Long wPercentDropForError As Long fYield As Long dwIndexSize As Long wChunkGranularity As Long fUsingDOSMemory As Long wNumVideoRequested As Long fCaptureAudio As Long wNumAudioRequested As Long vKeyAbort As Long fAbortLeftMouse As Long fAbortRightMouse As Long fLimitEnabled As Long wTimeLimit As Long fMCIControl As Long fStepMCIDevice As Long dwMCIStartTime As Long

Page 63: Aplikasi Web Cam Untuk Menangkap Obyek

63

dwMCIStopTime As Long fStepCaptureAt2x As Long wStepCaptureAverageFrames As Long dwAudioBufferSize As Long fDisableWriteCache As LongEnd Type

Type CAPINFOCHUNK fccInfoID As Long lpData As Long cbData As LongEnd Type

Type VIDEOHDR lpData As Long dwBufferLength As Long dwBytesUsed As Long dwTimeCaptured As Long dwUser As Long dwFlags As Long dwReserved(3) As LongEnd Type

'// 2 fungs1 se e expor sareng AVICapDeclare Function capCreateCaptureWindowA Lib "avicap32.dll" ( _ ByVal lpszWindowName As String, _ ByVal dwStyle As Long, _ ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByValnHeight As Integer, _ ByVal hWndParent As Long, ByVal nID As Long) As LongDeclare Function capGetDriverDescriptionA Lib "avicap32.dll" ( _ ByVal wDriver As Integer, _ ByVal lpszName As String, _ ByVal cbName As Long, _ ByVal lpszVer As String, _ ByVal cbVer As Long) As Boolean

'// ------------------------------------------------------------------'// String IDs dari status ban pesen error callbacks'// ------------------------------------------------------------------

Page 64: Aplikasi Web Cam Untuk Menangkap Obyek

64

Public Const IDS_CAP_BEGIN = 300 '/* "Mulai Capture" */Public Const IDS_CAP_END = 301

Public Const IDS_CAP_INFO = 401 '/* "%s" */Public Const IDS_CAP_OUTOFMEM = 402Public Const IDS_CAP_FILEEXISTS = 403Public Const IDS_CAP_ERRORPALOPEN = 404Public Const IDS_CAP_ERRORPALSAVE = 405Public Const IDS_CAP_ERRORDIBSAVE = 406Public Const IDS_CAP_DEFAVIEXT = 407 '/* "avi" */Public Const IDS_CAP_DEFPALEXT = 408 '/* "pal" */Public Const IDS_CAP_CANTOPEN = 409 '/* "tak bisa muka '%s'" */Public Const IDS_CAP_SEQ_MSGSTART = 410Public Const IDS_CAP_SEQ_MSGSTOP = 411Public Const IDS_CAP_VIDEDITERR = 412Public Const IDS_CAP_READONLYFILE = 413Public Const IDS_CAP_WRITEERROR = 414Public Const IDS_CAP_NODISKSPACE = 415Public Const IDS_CAP_SETFILESIZE = 416 '/* "Set ukuran File " */Public Const IDS_CAP_SAVEASPERCENT = 417Public Const IDS_CAP_DRIVER_ERROR = 418 '/* Pesan errorDriver */Public Const IDS_CAP_WAVE_OPEN_ERROR = 419Public Const IDS_CAP_WAVE_ALLOC_ERROR = 420Public Const IDS_CAP_WAVE_PREPARE_ERROR = 421Public Const IDS_CAP_WAVE_ADD_ERROR = 422Public Const IDS_CAP_WAVE_SIZE_ERROR = 423Public Const IDS_CAP_VIDEO_OPEN_ERROR = 424Public Const IDS_CAP_VIDEO_ALLOC_ERROR = 425Public Const IDS_CAP_VIDEO_PREPARE_ERROR = 426Public Const IDS_CAP_VIDEO_ADD_ERROR = 427Public Const IDS_CAP_VIDEO_SIZE_ERROR = 428Public Const IDS_CAP_FILE_OPEN_ERROR = 429Public Const IDS_CAP_FILE_WRITE_ERROR = 430Public Const IDS_CAP_RECORDING_ERROR = 431Public Const IDS_CAP_RECORDING_ERROR2 = 432Public Const IDS_CAP_AVI_INIT_ERROR = 433Public Const IDS_CAP_NO_FRAME_CAP_ERROR = 434Public Const IDS_CAP_NO_PALETTE_WARN = 435

Page 65: Aplikasi Web Cam Untuk Menangkap Obyek

65

Public Const IDS_CAP_MCI_CONTROL_ERROR = 436Public Const IDS_CAP_MCI_CANT_STEP_ERROR = 437Public Const IDS_CAP_NO_AUDIO_CAP_ERROR = 438Public Const IDS_CAP_AVI_DRAWDIB_ERROR = 439Public Const IDS_CAP_COMPRESSOR_ERROR = 440Public Const IDS_CAP_AUDIO_DROP_ERROR = 441

'/* status string IDs */Public Const IDS_CAP_STAT_LIVE_MODE = 500Public Const IDS_CAP_STAT_OVERLAY_MODE = 501Public Const IDS_CAP_STAT_CAP_INIT = 502Public Const IDS_CAP_STAT_CAP_FINI = 503Public Const IDS_CAP_STAT_PALETTE_BUILD = 504Public Const IDS_CAP_STAT_OPTPAL_BUILD = 505Public Const IDS_CAP_STAT_I_FRAMES = 506Public Const IDS_CAP_STAT_L_FRAMES = 507Public Const IDS_CAP_STAT_CAP_L_FRAMES = 508Public Const IDS_CAP_STAT_CAP_AUDIO = 509Public Const IDS_CAP_STAT_VIDEOCURRENT = 510Public Const IDS_CAP_STAT_VIDEOAUDIO = 511Public Const IDS_CAP_STAT_VIDEOONLY = 512Function capSetCallbackOnError(ByVal lwnd As Long, ByVal lpProcAs Long) As Boolean capSetCallbackOnError = SendMessage(lwnd,WM_CAP_SET_CALLBACK_ERROR, 0, lpProc)End FunctionFunction capSetCallbackOnStatus(ByVal lwnd As Long, ByVal lpProcAs Long) As Boolean capSetCallbackOnStatus = SendMessage(lwnd,WM_CAP_SET_CALLBACK_STATUS, 0, lpProc)End FunctionFunction capSetCallbackOnYield(ByVal lwnd As Long, ByVal lpProcAs Long) As Boolean capSetCallbackOnYield = SendMessage(lwnd,WM_CAP_SET_CALLBACK_YIELD, 0, lpProc)End FunctionFunction capSetCallbackOnFrame(ByVal lwnd As Long, ByVal lpProcAs Long) As Boolean capSetCallbackOnFrame = SendMessage(lwnd,WM_CAP_SET_CALLBACK_FRAME, 0, lpProc)

Page 66: Aplikasi Web Cam Untuk Menangkap Obyek

66

End FunctionFunction capSetCallbackOnVideoStream(ByVal lwnd As Long, ByVallpProc As Long) As Boolean capSetCallbackOnVideoStream = SendMessage(lwnd,WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, lpProc)End FunctionFunction capSetCallbackOnWaveStream(ByVal lwnd As Long, ByVallpProc As Long) As Boolean capSetCallbackOnWaveStream = SendMessage(lwnd,WM_CAP_SET_CALLBACK_WAVESTREAM, 0, lpProc)End FunctionFunction capSetCallbackOnCapControl(ByVal lwnd As Long, ByVallpProc As Long) As Boolean capSetCallbackOnCapControl = SendMessage(lwnd,WM_CAP_SET_CALLBACK_CAPCONTROL, 0, lpProc)End FunctionFunction capSetUserData(ByVal lwnd As Long, ByVal lUser As Long)As Boolean capSetUserData = SendMessage(lwnd,WM_CAP_SET_USER_DATA, 0, lUser)End FunctionFunction capGetUserData(ByVal lwnd As Long) As Long capGetUserData = SendMessage(lwnd,WM_CAP_GET_USER_DATA, 0, 0)End FunctionFunction capDriverConnect(ByVal lwnd As Long, ByVal i As Integer)As Boolean capDriverConnect = SendMessage(lwnd,WM_CAP_DRIVER_CONNECT, i, 0)End FunctionFunction capDriverDisconnect(ByVal lwnd As Long) As Boolean capDriverDisconnect = SendMessage(lwnd,WM_CAP_DRIVER_DISCONNECT, 0, 0)End FunctionFunction capDriverGetName(ByVal lwnd As Long, ByVal szName AsLong, ByVal wSize As Integer) As Boolean capDriverGetName = SendMessage(lwnd, WM_CAP_START, wSize,szName)End Function

Page 67: Aplikasi Web Cam Untuk Menangkap Obyek

67

Function capDriverGetVersion(ByVal lwnd As Long, ByVal szVer AsLong, ByVal wSize As Integer) As Boolean capDriverGetVersion = SendMessage(lwnd,WM_CAP_DRIVER_GET_VERSION, wSize, szVer)End FunctionFunction capDriverGetCaps(ByVal lwnd As Long, ByVal s As Long,ByVal wSize As Integer) As Boolean capDriverGetCaps = SendMessage(lwnd,WM_CAP_DRIVER_GET_CAPS, wSize, s)End FunctionFunction capFileSetCaptureFile(ByVal lwnd As Long, szName AsString) As Boolean capFileSetCaptureFile = SendMessageS(lwnd,WM_CAP_FILE_SET_CAPTURE_FILE, 0, szName)End FunctionFunction capFileGetCaptureFile(ByVal lwnd As Long, ByVal szNameAs Long, wSize As String) As Boolean capFileGetCaptureFile = SendMessageS(lwnd,WM_CAP_FILE_SET_CAPTURE_FILE, wSize, szName)End FunctionFunction capFileAlloc(ByVal lwnd As Long, ByVal dwSize As Long)As Boolean capFileAlloc = SendMessage(lwnd, WM_CAP_FILE_ALLOCATE,0, dwSize)End FunctionFunction capFileSaveAs(ByVal lwnd As Long, szName As String) AsBoolean capFileSaveAs = SendMessageS(lwnd, WM_CAP_FILE_SAVEAS,0, szName)End FunctionFunction capFileSetInfoChunk(ByVal lwnd As Long, ByVallpInfoChunk As Long) As Boolean capFileSetInfoChunk = SendMessage(lwnd,WM_CAP_FILE_SET_INFOCHUNK, 0, lpInfoChunk)End FunctionFunction capFileSaveDIB(ByVal lwnd As Long, ByVal szName AsLong) As Boolean capFileSaveDIB = SendMessage(lwnd, WM_CAP_FILE_SAVEDIB,0, szName)End Function

Page 68: Aplikasi Web Cam Untuk Menangkap Obyek

68

Function capEditCopy(ByVal lwnd As Long) As Boolean capEditCopy = SendMessage(lwnd, WM_CAP_EDIT_COPY, 0, 0)End FunctionFunction capSetAudioFormat(ByVal lwnd As Long, ByVal s As Long,ByVal wSize As Integer) As Boolean capSetAudioFormat = SendMessage(lwnd,WM_CAP_SET_AUDIOFORMAT, wSize, s)End FunctionFunction capGetAudioFormat(ByVal lwnd As Long, ByVal s As Long,ByVal wSize As Integer) As Long capGetAudioFormat = SendMessage(lwnd,WM_CAP_GET_AUDIOFORMAT, wSize, s)End FunctionFunction capGetAudioFormatSize(ByVal lwnd As Long) As Long capGetAudioFormatSize = SendMessage(lwnd,WM_CAP_GET_AUDIOFORMAT, 0, 0)End FunctionFunction capDlgVideoFormat(ByVal lwnd As Long) As Boolean capDlgVideoFormat = SendMessage(lwnd,WM_CAP_DLG_VIDEOFORMAT, 0, 0)End FunctionFunction capDlgVideoSource(ByVal lwnd As Long) As Boolean capDlgVideoSource = SendMessage(lwnd,WM_CAP_DLG_VIDEOSOURCE, 0, 0)End FunctionFunction capDlgVideoDisplay(ByVal lwnd As Long) As Boolean capDlgVideoDisplay = SendMessage(lwnd,WM_CAP_DLG_VIDEODISPLAY, 0, 0)End FunctionFunction capDlgVideoCompression(ByVal lwnd As Long) As Boolean capDlgVideoCompression = SendMessage(lwnd,WM_CAP_DLG_VIDEOCOMPRESSION, 0, 0)End FunctionFunction capGetVideoFormat(ByVal lwnd As Long, ByVal s As Long,ByVal wSize As Integer) As Long capGetVideoFormat = SendMessage(lwnd,WM_CAP_GET_VIDEOFORMAT, wSize, s)End FunctionFunction capGetVideoFormatSize(ByVal lwnd As Long) As Long

Page 69: Aplikasi Web Cam Untuk Menangkap Obyek

69

capGetVideoFormatSize = SendMessage(lwnd,WM_CAP_GET_VIDEOFORMAT, 0, 0)End FunctionFunction capSetVideoFormat(ByVal lwnd As Long, ByVal s As Long,ByVal wSize As Integer) As Boolean capSetVideoFormat = SendMessage(lwnd,WM_CAP_SET_VIDEOFORMAT, wSize, s)End FunctionFunction capPreview(ByVal lwnd As Long, ByVal f As Boolean) AsBoolean capPreview = SendMessage(lwnd, WM_CAP_SET_PREVIEW, f, 0)End FunctionFunction capPreviewRate(ByVal lwnd As Long, ByVal wMS AsInteger) As Boolean capPreviewRate = SendMessage(lwnd,WM_CAP_SET_PREVIEWRATE, wMS, 0)End FunctionFunction capOverlay(ByVal lwnd As Long, ByVal f As Boolean) AsBoolean capOverlay = SendMessage(lwnd, WM_CAP_SET_OVERLAY, f, 0)End FunctionFunction capPreviewScale(ByVal lwnd As Long, ByVal f As Boolean)As Boolean capPreviewScale = SendMessage(lwnd, WM_CAP_SET_SCALE, f,0)End FunctionFunction capGetStatus(ByVal lwnd As Long, ByVal s As Long, ByValwSize As Integer) As Boolean capGetStatus = SendMessage(lwnd, WM_CAP_GET_STATUS,wSize, s)End FunctionFunction capSetScrollPos(ByVal lwnd As Long, ByVal lpP As Long)As Boolean capSetScrollPos = SendMessage(lwnd, WM_CAP_SET_SCROLL, 0,lpP)End FunctionFunction capGrabFrame(ByVal lwnd As Long) As Boolean capGrabFrame = SendMessage(lwnd, WM_CAP_GRAB_FRAME, 0,0)End Function

Page 70: Aplikasi Web Cam Untuk Menangkap Obyek

70

Function capGrabFrameNoStop(ByVal lwnd As Long) As Boolean capGrabFrameNoStop = SendMessage(lwnd,WM_CAP_GRAB_FRAME_NOSTOP, 0, 0)End FunctionFunction capCaptureSequence(ByVal lwnd As Long) As Boolean capCaptureSequence = SendMessage(lwnd, WM_CAP_SEQUENCE,0, 0)End FunctionFunction capCaptureSequenceNoFile(ByVal lwnd As Long) As Boolean capCaptureSequenceNoFile = SendMessage(lwnd,WM_CAP_SEQUENCE_NOFILE, 0, 0)End FunctionFunction capCaptureStop(ByVal lwnd As Long) As Boolean capCaptureStop = SendMessage(lwnd, WM_CAP_STOP, 0, 0)End FunctionFunction capCaptureAbort(ByVal lwnd As Long) As Boolean capCaptureAbort = SendMessage(lwnd, WM_CAP_ABORT, 0, 0)End FunctionFunction capCaptureSingleFrameOpen(ByVal lwnd As Long) AsBoolean capCaptureSingleFrameOpen = SendMessage(lwnd,WM_CAP_SINGLE_FRAME_OPEN, 0, 0)End FunctionFunction capCaptureSingleFrameClose(ByVal lwnd As Long) AsBoolean capCaptureSingleFrameClose = SendMessage(lwnd,WM_CAP_SINGLE_FRAME_CLOSE, 0, 0)End FunctionFunction capCaptureSingleFrame(ByVal lwnd As Long) As Boolean capCaptureSingleFrame = SendMessage(lwnd,WM_CAP_SINGLE_FRAME, 0, 0)End FunctionFunction capCaptureGetSetup(ByVal lwnd As Long, ByVal s As Long,ByVal wSize As Integer) As Boolean capCaptureGetSetup = SendMessage(lwnd,WM_CAP_GET_SEQUENCE_SETUP, wSize, s)End FunctionFunction capCaptureSetSetup(ByVal lwnd As Long, ByVal s As Long,ByVal wSize As Integer) As Boolean

Page 71: Aplikasi Web Cam Untuk Menangkap Obyek

71

capCaptureSetSetup = SendMessage(lwnd,WM_CAP_SET_SEQUENCE_SETUP, wSize, s)End FunctionFunction capSetMCIDeviceName(ByVal lwnd As Long, ByVal szNameAs Long) As Boolean capSetMCIDeviceName = SendMessage(lwnd,WM_CAP_SET_MCI_DEVICE, 0, szName)End FunctionFunction capGetMCIDeviceName(ByVal lwnd As Long, ByValszName As Long, ByVal wSize As Integer) As Boolean capGetMCIDeviceName = SendMessage(lwnd,WM_CAP_GET_MCI_DEVICE, wSize, szName)End FunctionFunction capPaletteOpen(ByVal lwnd As Long, ByVal szName AsLong) As Boolean capPaletteOpen = SendMessage(lwnd, WM_CAP_PAL_OPEN, 0,szName)End FunctionFunction capPaletteSave(ByVal lwnd As Long, ByVal szName AsLong) As Boolean capPaletteSave = SendMessage(lwnd, WM_CAP_PAL_SAVE, 0,szName)End FunctionFunction capPalettePaste(ByVal lwnd As Long) As Boolean capPalettePaste = SendMessage(lwnd, WM_CAP_PAL_PASTE, 0, 0)End FunctionFunction capPaletteAuto(ByVal lwnd As Long, ByVal iFrames AsInteger, ByVal iColors As Long) As Boolean capPaletteAuto = SendMessage(lwnd,WM_CAP_PAL_AUTOCREATE, iFrames, iColors)End FunctionFunction capPaletteManual(ByVal lwnd As Long, ByVal fGrab AsBoolean, ByVal iColors As Long) As Boolean capPaletteManual = SendMessage(lwnd,WM_CAP_PAL_MANUALCREATE, fGrab, iColors)End Function

Option ExplicitDim char As IntegerDim lwndC As Long ' Handle to the Capture Windows

Page 72: Aplikasi Web Cam Untuk Menangkap Obyek

72

Dim lNFrames As Long ' Number of frames captured

Sub ResizeCaptureWindow(ByVal lwnd As Long) Dim CAPSTATUS As CAPSTATUS '// Get the capture window attributes .. width and height capGetStatus lwnd, VarPtr(CAPSTATUS), Len(CAPSTATUS)

'// Resize the capture window to the capture sizes SetWindowPos lwnd, HWND_BOTTOM, 0, 0, _ CAPSTATUS.uiImageWidth, _ CAPSTATUS.uiImageHeight, _ SWP_NOMOVE Or SWP_NOZORDEREnd Sub

Private Sub cKamera_Click() PilihKamera cKamera.ListIndexEnd Sub

Private Sub Command1_Click()'Winsock1.SendData "waduh mati aku"End Sub

Private Sub Command2_Click()frmUtama.Text1 = 63frmUtama.Text2 = 30End SubPrivate Sub Command3_Click()Form1.ShowEnd Sub

Private Sub cOutput_Click() VideoOut = (cOutput.Value = 1)End Sub

Private Sub ext_Click() Unload MeEnd Sub

Private Sub PilihKamera(wDriver As Long) 'Dim lpszName As String * 100

Page 73: Aplikasi Web Cam Untuk Menangkap Obyek

73

'Dim lpszVer As String * 100 'TutupKamera 'Debug.Print capGetDriverDescriptionA(wDriver, lpszName, 100,lpszVer, 100) '// Retrieves driver info 'lwndC = capCreateCaptureWindowA(lpszName, WS_CHILD OrWS_VISIBLE, 0, 0, 160, 120, Me.hWnd, 0) 'lwndC = capCreateCaptureWindowA(lpszName,WS_THICKFRAME Or WS_CHILD Or WS_VISIBLE, 0, 0, 160, 120,Me.hWnd, 0) lwndC = capCreateCaptureWindowA(cKamera, WS_VISIBLE +WS_CHILD, 0, 0, 320, 240, Me.VideoIn.hWnd, 0) If capDriverConnect(lwndC, wDriver) Then 'Debug.Print capDriverGetCaps(lwndC, VarPtr(Caps), Len(Caps)) 'capSetCallbackOnVideoStream lwndC, AddressOfMyVideoStreamCallback Debug.Print capSetCallbackOnFrame(lwndC, AddressOfOnFrameEvent) Debug.Print capPreviewScale(lwndC, True) Debug.Print capPreviewRate(lwndC, 10) '// preview image dari Camera Debug.Print capPreview(lwndC, True) 'ResizeCaptureWindow lwndC ', True Kamera = GetDC(lwndC) Else MsgBox "Device Kamera : " + cKamera + " tidak ditemukan",vbCritical End IfEnd Sub

Private Sub DaftarKamera() Dim lpszName As String * 100 Dim lpszVer As String * 100 Dim Device As String cKamera.Clear Dim wDriver As Long wDriver = 0 While capGetDriverDescriptionA(wDriver, lpszName, 100, lpszVer,100) 'Device = lpszName 'Device = Device + " " + lpszVer

Page 74: Aplikasi Web Cam Untuk Menangkap Obyek

74

cKamera.AddItem lpszName cKamera.List(wDriver) = cKamera.List(wDriver) + " " + lpszVer DoEvents wDriver = wDriver + 1 Wend If cKamera.ListCount > 0 Then cKamera = cKamera.List(0)End Sub

Private Sub Form_Load() 'Dim Caps As CAPDRIVERCAPS '//Create Capture Window DaftarKamera If cKamera.ListCount > 0 Then PilihKamera 0 frmUtama.MSComm1.PortOpen = True Winsock1.BindEnd Sub

Private Sub TutupKamera() 'capSetCallbackOnError lwndC, vbNull 'capSetCallbackOnStatus lwndC, vbNull 'capSetCallbackOnYield lwndC, vbNull capSetCallbackOnFrame lwndC, vbNull If lwndC <> 0 Then DestroyWindow lwndC 'capSetCallbackOnVideoStream lwndC, vbNull 'capSetCallbackOnWaveStream lwndC, vbNull 'capSetCallbackOnCapControl lwndC, vbNullEnd Sub

Private Sub Form_Unload(Cancel As Integer) TutupKameraEnd Sub

Private Sub mli_Click() Dim sFileName As String Dim CAP_PARAMS As CAPTUREPARMS capCaptureGetSetup lwndC, VarPtr(CAP_PARAMS),Len(CAP_PARAMS) CAP_PARAMS.dwRequestMicroSecPerFrame = (1 * (10 ^ 6)) / 30 '30 Frames per second CAP_PARAMS.fMakeUserHitOKToCapture = True

Page 75: Aplikasi Web Cam Untuk Menangkap Obyek

75

CAP_PARAMS.fCaptureAudio = False capCaptureSetSetup lwndC, VarPtr(CAP_PARAMS),Len(CAP_PARAMS) sFileName = "C:\myvideo.avi" capCaptureSequence lwndC ' mulai melakukan capture! capFileSaveAs lwndC, sFileName ' Copy video dari swap file ke areal file.End Sub

Private Sub mnuPeringatan_Click() MsgBox "HATI-HATI, JANGAN MENGHENTIKAN PROGRAMDARI 'STOP' DI VB, TETAPI GUNAKAN 'BERKAS' -> 'KELUAR'"+ Chr(10) + Chr(13) + "JIKA TIDAK, VB AKAN HANG DANKEMUNGKINAN DAPAT 'MERUSAK' FILE ANDA", vbCriticalEnd Sub

Sub setkam_Click() capDlgVideoFormat lwndC ResizeCaptureWindow lwndCEnd Sub

Private Sub src_Click() capDlgVideoSource lwndCEnd Sub

Private Sub Text1_Change()If char > 57 Then Text1.Text = ""End IfEnd Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii < 58 ThenIf KeyAscii > 47 ThenExit SubEnd IfEnd IfText1.Text = ""MsgBox "Nyuwun sewu, Input arupa angka !!!"

Page 76: Aplikasi Web Cam Untuk Menangkap Obyek

76

Text1.Text = ""End Sub

Private Sub Text2_Change()If char > 57 Then Text2.Text = ""End IfEnd Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)If KeyAscii < 58 ThenIf KeyAscii > 47 ThenExit SubEnd IfEnd IfText2.Text = ""MsgBox "Nyuwun sewu, Input arupa angka !!!"Text2.Text = ""End Sub

Private Sub Timer1_Timer() fpsL = (4 * fpsL + fps) / 5 NilaiFPS = CInt(fpsL * 100) / 100 fps = 0End Sub

Private Sub VScroll1_Change()Label8.Caption = VScroll1.ValueEnd Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)Dim dataWinsock1.GetData data, vbStringIf Trim(data) = "Kena Loe !!!" Then 'program dihentikan MsgBox "Banteng tertusuk" 'Winsock1.SendData = "Selamat anda layak jadi pecundang" BerhentiEnd If'Text13 = Text13 + data + Chr(13) + Chr(10)

Page 77: Aplikasi Web Cam Untuk Menangkap Obyek

77

End Sub' Module : Aplikasi' DiBuat Oleh : Agung Pangestu Harseno' Nrp : 7103.030.036' Pembimbing : Bpk. Eru Puspita S.T, M.Kom' Tanggal : 20 July 2005' Keterangan : Program Ini dibuat untuk Demonstrasi Robot BantengVS Robot Matador' Crew'x : * Bagus Ardianto (good) --> hardware Robot Banteng' * Awaludin Ismail (Robot) --> software Robot Matador' * YuliAdi (mr. Lee) --> hardware Robot MatadorOption Explicit

Public Const WS_BORDER = &H800000Public Const WS_CAPTION = &HC00000Public Const WS_SYSMENU = &H80000Public Const WS_CHILD = &H40000000Public Const WS_VISIBLE = &H10000000Public Const WS_OVERLAPPED = &H0&Public Const WS_MINIMIZEBOX = &H20000Public Const WS_MAXIMIZEBOX = &H10000Public Const WS_THICKFRAME = &H40000Public Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPEDOr WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME OrWS_MINIMIZEBOX Or WS_MAXIMIZEBOX)Public Const SWP_NOMOVE = &H2Public Const SWP_NOSIZE = 1Public Const SWP_NOZORDER = &H4Public Const HWND_BOTTOM = 1Public Const HWND_TOPMOST = -1Public Const HWND_NOTOPMOST = -2Public Const SM_CYCAPTION = 4Public Const SM_CXFRAME = 32Public Const SM_CYFRAME = 33Public Const WS_EX_TRANSPARENT = &H20&Public Const GWL_STYLE = (-16)Declare Function SetWindowLong Lib "user32" Alias"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long,ByVal dwNewLong As Long) As Long

Page 78: Aplikasi Web Cam Untuk Menangkap Obyek

78

'// Manipulasi MemoriDeclare Function lStrCpy Lib "kernel32" Alias "lstrcpyA" (ByVallpString1 As Long, ByVal lpString2 As Long) As LongDeclare Function lStrCpyn Lib "kernel32" Alias "lstrcpynA" (ByVallpString1 As Any, ByVal lpString2 As Long, ByVal iMaxLength AsLong) As LongDeclare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As Long,ByVal hpvSource As Long, ByVal cbCopy As Long)Declare Sub hmemcpy Lib "kernel32" (hpvDest As Any, hpvSource AsAny, ByVal cbCopy As Long)

'// Manipulasi WindowDeclare Function SetWindowPos Lib "user32" (ByVal hWnd As Long,ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long,ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) AsLongDeclare Function DestroyWindow Lib "user32" (ByVal hndw As Long)As BooleanDeclare Function GetSystemMetrics Lib "user32" (ByVal nIndex AsLong) As LongDeclare Function SetWindowText Lib "user32" Alias"SetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String)As Long

Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal xAs Long, ByVal y As Long) As LongDeclare Function SetPixel Lib "gdi32" (ByVal hdc As Long, ByVal xAs Long, ByVal y As Long, ByVal crColor As Long) As Long'Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 AsLong, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) AsLongDeclare Function Rectangle Lib "gdi32" (ByVal hdc As Long, ByValX1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 AsLong) As LongDeclare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x AsLong, ByVal y As Long) As LongDeclare Function SetDeviceGammaRamp Lib "gdi32" (ByVal hdc AsLong, lpv As Any) As Long

Page 79: Aplikasi Web Cam Untuk Menangkap Obyek

79

Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc AsLong, ByVal x As Long, ByVal y As Long, ByVal lpString As String,ByVal nCount As Long) As Long

Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As LongDeclare Function ReleaseDC Lib "user32" (ByVal hWnd As Long,ByVal hdc As Long) As Long

Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long,ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByValnHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long,ByVal ySrc As Long, ByVal dwRop As Long) As LongPublic Declare Function GetBitmapBits Lib "gdi32" (ByVal hBitmap AsLong, ByVal dwCount As Long, lpBits As Any) As LongPublic Declare Function SetBitmapBits Lib "gdi32" (ByVal hBitmap AsLong, ByVal dwCount As Long, lpBits As Any) As Long

Public lwndC As Long ' Handle ka angguy nagkap WindowsPublic fps As BytePublic fpsL As SinglePublic VideoOut As Boolean

Const LxMax = 320Const LyMax = 240

Type tImage B As Byte G As Byte R As ByteEnd Type

Dim VideoHeader As VIDEOHDR

Type tVideoData B As Byte G As Byte R As ByteEnd Type

Dim VideoData(0 To 319, 0 To 239) As tVideoData

Page 80: Aplikasi Web Cam Untuk Menangkap Obyek

80

Global Kamera As Long

Function OnFrameEvent(ByVal lwnd As Long, ByVal lpVHdr AsLong) As Long ' Ambil Header Buffer Video dari Windows API RtlMoveMemory VarPtr(VideoHeader), lpVHdr, Len(VideoHeader) ' Ambil Data Buffer Video dari Windows API If VideoHeader.dwBytesUsed <> 230400 Then MsgBox "Ubah setting konfigurasi Video dalam 320x240 RGB24",vbCritical, "Pesan Kesalahan" frmUtama.setkam_Click Exit Function End If RtlMoveMemory VarPtr(VideoData(0, 0)), VideoHeader.lpData,VideoHeader.dwBytesUsed ' Lakukan Operasi Image Processing sesuai dengan keperluan OperasiRobot ' Jika diinginkan, tampilkan kembali hasil Image Processing If VideoOut Then RtlMoveMemory VideoHeader.lpData,VarPtr(VideoData(0, 0)), VideoHeader.dwBytesUsed ' Penghitung kecepatan proses tiap detik fps = fps + 1End Function

Sub OperasiRobot() ' Segmentasi Warna Merah ' Pixel dengan warna merah diubah menjadi putih ' Pixel lainnya menjadi hitam

Static vMerah(320, 240) As Byte Static x As Integer, y As Integer Dim R, G, B As Integer 'segmentasi For y = 0 To 239 For x = 0 To 319 ' Deteksi warna merah dengan cara ' R > (G + B) If VideoData(x, y).R > (CInt(VideoData(x, y).G) + VideoData(x,y).B) - frmUtama.VScroll1.Value Then

Page 81: Aplikasi Web Cam Untuk Menangkap Obyek

81

'If CInt(VideoData(x, y).R) + VideoData(x, y).G + VideoData(x,y).B > 400 Then vMerah(x, y) = 255 Else vMerah(x, y) = 0 End If Next Next

For y = 0 To 239 For x = 0 To 319 VideoData(x, y).R = vMerah(x, y) VideoData(x, y).G = vMerah(x, y) VideoData(x, y).B = vMerah(x, y) Next Next frmUtama.Obyek.Visible = True ' Penskalaan 10:1 ' Tujuan : - Memperkecil ukuran gambar sehingga lebih cepat ' - Filter, membuang obyek yang kecil ' - Deteksi Obyek dengan ukuran lebih besar dari ukuran tertentu Static vSkala(32, 24) As Byte Static xx As Integer, yy As Integer, s As Integer For y = 0 To 23 For x = 0 To 31 ' Ambil nilai rata-rata pixel ukuran 10x10 s = 0 For yy = y * 10 To y * 10 + 9 For xx = x * 10 To x * 10 + 9 s = s + vMerah(xx, yy) Next Next s = s \ 100 ' Tresholding, ambil pixel yang hanya >= 128 If s < 128 Then s = 0 vSkala(x, y) = s Next Next

' Deteksi Obyek dengan cara

Page 82: Aplikasi Web Cam Untuk Menangkap Obyek

82

' - Menghitung luas (ukuran) Obyek ' - Mencari titik tengah Obyek ' - Menghitung perbandingan ukuran (bentuk) Obyek ' semuanya dilakukan dengan men-scanning gambar ' dan mencari pixel yang berwarna merah Static n As Integer Static xMax As Integer, xMin As Integer, yMax As Integer, yMin AsInteger

n = 0 xx = 0: yy = 0 xMin = 32: xMax = -1: yMin = 24: yMax = -1 For y = 0 To 23 For x = 0 To 31 If vSkala(x, y) > 128 Then ' Kandidat Obyek yang dicari ditemukan n = n + 1 xx = xx + x yy = yy + y If x > xMax Then xMax = x If x < xMin Then xMin = x If y > yMax Then yMax = y If y < yMin Then yMin = y End If Next Next If n > 0 Then ' Ada segala obyek yang ditemukan ? ' Hitung posisi tengah obyek Static xObyek As Integer, yObyek As Integer xObyek = xx / n * 10 + 5 yObyek = yy / n * 10 + 5

' Hitung ukuran obyek Static xL As Integer, yL As Integer Dim luas As Integer xL = xMax - xMin + 1 yL = yMax - yMin + 1 luas = xL * yL frmUtama.Text7.Text = xL frmUtama.Text8.Text = yL

Page 83: Aplikasi Web Cam Untuk Menangkap Obyek

83

frmUtama.Text9.Text = luas ' Uji apakah obyek yang ditemui sesuai dengan bentuk yang diinginkan ' contoh Panjang=Tinggi ' Ketemu ... horeee ' Beri tanda pada Obyek, misalkan dengan memberikan bingkai Kotak ' Lakukan Aksi pengendalian robot sesuai dengan yang dikehendaki For x = xMin * 10 To xMax * 10 + 9 VideoData(x, yMin * 10).G = 255 VideoData(x, yMax * 10 + 9).G = 255 Next For y = yMin * 10 To yMax * 10 + 9 VideoData(xMin * 10, y).G = 255 VideoData(xMax * 10 + 9, y).G = 255 Next KontrolRobot xObyek, yObyek, luas Dim i, j As Integer For i = -3 To 3 '1 To 5 For j = -3 To 3 '1 To 5 VideoData(xObyek + i, yObyek + j).R = 255 VideoData(xObyek + i, yObyek + j).G = 0 VideoData(xObyek + i, yObyek + j).B = 0 Next j Next i '-----garis vertikal------ For i = xObyek To xObyek For j = 0 To 240 - 1 VideoData(i, j).R = 0 VideoData(i, j).G = 0 VideoData(i, j).B = 255 Next j Next i '-----garis horisontal----- For i = 0 To 320 - 1 For j = yObyek To yObyek VideoData(i, j).R = 255 VideoData(i, j).G = 0 VideoData(i, j).B = 255 Next j Next i Else

Page 84: Aplikasi Web Cam Untuk Menangkap Obyek

84

ObyekTidakAda End IfEnd Sub

Sub KontrolRobot(x As Integer, y As Integer, luas As Integer) frmUtama.Text14.Text = x frmUtama.Text15.Text = y ' Hitung Error dan jadikan hanya dalam 8 tingkat gerakan Static e As Integer Dim d, f As Integer d = CInt(frmUtama.Text1.Text) f = CInt(frmUtama.Text2.Text) 'Static luas As Integer e = (160 - x) \ 40 ' Periksa ukuran dari obyek ' Jika lebih kecil dari nilai tertentu, maju If luas >= d Then If e = 0 Then frmUtama.Text10 = "Target Ditemukan" frmUtama.Text11 = "Jarak Terlalu Dekat" frmUtama.Text12 = "Mundur Lurus" frmUtama.MSComm1.Output = "B" ElseIf e > 0 Then frmUtama.Text10 = "Target Ditemukan" frmUtama.Text11 = "Target Terlalu ke Kanan " frmUtama.Text12 = "Muter ke Kiri : " & Abs(e) frmUtama.MSComm1.Output = "L" Else frmUtama.Text10 = "Target Ditemukan" frmUtama.Text11 = "Target Terlalu ke Kiri" frmUtama.Text12 = "Muter ke Kanan : " & Abs(e) frmUtama.MSComm1.Output = "R" End If ElseIf luas <= f Then If e = 0 Then frmUtama.Text10 = "Target Ditemukan" frmUtama.Text11 = "Jarak Terlalu Jauh" frmUtama.Text12 = "Maju Lurus" frmUtama.MSComm1.Output = "F" ElseIf e > 0 Then

Page 85: Aplikasi Web Cam Untuk Menangkap Obyek

85

frmUtama.Text10 = "Target Ditemukan" frmUtama.Text11 = "Target Terlalu ke Kanan" frmUtama.Text12 = "Muter ke Kiri : " & Abs(e) frmUtama.MSComm1.Output = "L" Else frmUtama.Text10 = "Target Ditemukan" frmUtama.Text11 = "Target Terlalu ke Kiri" frmUtama.Text12 = "Muter ke Kanan : " & Abs(e) frmUtama.MSComm1.Output = "R" End If ' Jika lebih besar, mundur Else If luas > f And luas < d Then If e = 0 Then frmUtama.Text10 = "Target ditemukan" frmUtama.MSComm1.Output = "A" frmUtama.Text11 = "Sasaran tepat, Siapkan Senjata" frmUtama.Text12 = "Serang" Delay ElseIf e > 0 Then frmUtama.Text10 = "Target ditemukan" frmUtama.Text11 = "Target terlalu ke kanan" frmUtama.Text12 = "muter ke Kiri : " & Abs(e) frmUtama.MSComm1.Output = "L" Else frmUtama.Text10 = "Target ditemukan" frmUtama.Text11 = "Target terlalu ke kiri" frmUtama.Text12 = "Muter ke Kanan : " & Abs(e) frmUtama.MSComm1.Output = "R" End If End If End If ' Ubah posisi animasi frmUtama.Obyek.Top = 50 + ((luas) - 300) / 6 frmUtama.Obyek.Left = 560 + (x - 160)End Sub

Sub ObyekTidakAda() frmUtama.Obyek.Visible = False frmUtama.Text10 = "Obyek tidak ditemukan"

Page 86: Aplikasi Web Cam Untuk Menangkap Obyek

86

frmUtama.Text15.Text = 0 frmUtama.Text7.Text = 0 frmUtama.Text8.Text = 0 frmUtama.Text9.Text = 0 frmUtama.Text11 = "Ayo cari Obyek" frmUtama.Text12 = "Muter Nyok" frmUtama.Text14.Text = 0 frmUtama.MSComm1.Output = "C"End Sub

Sub Delay()Dim jumlah As Longjumlah = 1Do frmUtama.Text11 = "Sasaran tepat, Siapkan Senjata" frmUtama.Text12 = "Serang" jumlah = jumlah + 1Loop While jumlah <= 3000000frmUtama.MSComm1.Output = "S"End Sub

Sub Berhenti() frmUtama.MSComm1.Output = "E" frmUtama.Text13 = "Banteng Mati" frmUtama.Text10 = "SYSTEM ERROR" frmUtama.Text15.Text = 0 frmUtama.Text7.Text = 0 frmUtama.Text8.Text = 0 frmUtama.Text9.Text = 0 frmUtama.Text11 = "SYSTEM ERROR" frmUtama.Text12 = "SYSTEM ERROR" frmUtama.Text14.Text = 0End Sub