MENGGUNAKAN WEBCAM
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Informatika
OLEH:
NIM :045314063
A PL•IKA N RU ANGAN
MBIGGUNAKAN W CCAM
SKRIPSl
APLIXASJ PENGAht AN RUAKGAN
MENGGUNAKAN WEBCAh4
Tel
S.Si.
Angg€g 2 S o Hari
Yogyakana, /.D.......... . 3
Fakuluui Sains Jan Toknologi
Univositas SanaJa Dharma
ABSTRAK
iii
ABSTRACT
Digital image processing is handing out an image by using digital
computer in order to create a new image which is appropriate to user’s
desirability. One of digital image process implementation is room security
application which the image be obtain by camera. The must common room
security application based camera is expensive. The aim of this research is to
make the application based camera with low price.
This application developed with image processing technique, in which
we subtract the value of two image who are take in the series through webcam.
The goal of this subtract is looking for different between two image.
Based on its testing result, this application be able to detect human
moved object as far as 13 meter with minimal tolerance one percent. This
application appropriate for security room where disturbed toward criminality
action by human.
iv
Segala kuatirku, kutaruh di kakiMu, Allah
merendahkanku….
kita dapatkan
v
PERNYATAAN KEASLIAN KARYA
judul, isi dan gagasan yang tertuang dalam skripsi ini belum pernah dipakai untuk
negeri. Pemikiran, metode atau hasil penelitian orang lain yang diambil
buku, termasuk informasi di internet yang dipakai sebagai acuan dan bahan
Penulis
vi
PRAKATA
Puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Esa
karena atas kasih dan karunianya, penulis dapat menyelesaikan skripsi yang
Skripsi ini disusun guna memenuhi syarat untuk mendapatkan gelar sarjana
kepada:
bimbingan, masukan dan kesabarannya sehingga skripsi ini dapat selesai tepat
waktu.
4. Ibu Anastasia Rita W., S.Kom, M.Kom, selaku dosen penguji dan telah
5. Bapak Eko Hari, S.Kom, M.Kom selaku dosen penguji atas masukan dan
vii
6. Kedua orang tua yang telah memberikan dukungan doa, spirit, moral maupun
7. Chatarina Suryati dan Kristina Tri Lestari atas segala dukungan yang telah
yang diberikan kepada penulis sehingga skripsi ini dapat terselesaikan dengan
dukungan doa, semangat dan bantuan yang telah diberikan sehingga penulis
10. Romo Kuntoro, yang selalu mengingatkan saya untuk selalu fokus pada
skripsi.
11. Tri PRasetyo, Y. Kuntho, Andri Khrisharyadi, Yosef Beni, Antonius Adiyoso,
12. Angga, Bimo, Antok, Martin, Buntas, Venti yang bersama kita ujian Tugas
Akhir.
13. Dimas, Sigit, Enggar, Ragil, Akri, Adit, Iyus, Wisnu yang selalu memberikan
14. Teman-teman Mudika Brayat Minulyo Nogosari Trirenggo Bantul yang selalu
15. Romo G. Utomo atas bantuan dan doa yang diberikan selama ini.
viii
16. Semua pihak yang tidak dapat penulis sebut satu persatu
Tak ada gading yang tak retak, begitu pula dengan skripsi yang tidak
sempurna ini. Oleh sebab itu penulis sangat membutuhkan kritik dan saran yang
penulis agar skripsi ini dapat berguna bagi semua orang khususnya dalam
Penulis
ix
LEMBAR PERNYATAAN PERSETUJUAN
Pt1BLIKAS1 KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Nama
Nomor Mahasiswa
Ocmi pengembangan ilmu pengetahuan, saya memberikan kCpada PerpMtakaan
Universitas Sanata Dharma karya ilmiah saya yang bequdul
?. !.. ... ... S. .
beserta perangkat yang diperlukan (bila ada). Def lgan demikian saya memberikan
kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan. me-
ngalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data.
mendistribusikan secara ierbatas. dan mem publikasikannya di Internet atau media
lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun
memberikan royalti kepada saya selama tetap mencantumkan nama saya sebagai
Dibuat di Yogyakarta
Pada tanggal . .. . . - -
Yangmenyamkx
DAFTAR ISI
HALAMAN PERSETUJUAN.......................................................................................i
HALAMAN PENGESAHAN.......................................................................................ii
INTISARI.....................................................................................................................iii
ABSTRACK.................................................................................................................iv
PRAKATA..................................................................................................................vii
DAFTAR ISI.................................................................................................................x
BAB I.............................................................................................................................1
BAB II...........................................................................................................................5
x
2.5. Format Citra Bitmap................................................................................14
2.6. Warna......................................................................................................15
BAB III........................................................................................................................27
BAB IV........................................................................................................................53
BAB V.........................................................................................................................85
5.1. Kesimpulan.....................................................................................................61
xi
5.2 Saran…………………………..……………….…………………………,…..61
DAFTAR PUSTAKA..................................................................................................86
xii
BAB I
PENDAHULUAN
Saat ini metode pengolahan citra berkembang dengan pesat. Metode ini
berpeluang digunakan pada sistem keamanaan berbasis kamera. Salah satu
metode yang digunakan dalam operasi pengolahan citra adalah operasi
pengurangan. Dari hasil pengurangan tersebut akan didapat informasi
perbedaan kedua buah citra tersebut. Informasi beda citra inilah yang digunakan
sebagai pendeteksi adanya obyek yang bergerak dan ini dapat dimanfaatkan
dalam sistem keamanan.
1
1.2. Rumusan Masalah
Dari latar belakang masalah di atas dapat dirumuskan menjadi suatu
masalah yaitu bagaimana memanfaatkan teknik pengurangan citra digital
untuk sistem keamanan.
Adapun tujuan yang ingin dicapai penulis dalam penulisan tugas akhir
ini adalah membangun suatu perangkat lunak pengolahan citra yang bisa
digunakan untuk sistem keamanan.
BAB I. PENDAHULUAN
Bab ini merupakan gambaran umum tentang tugas akhir ini yang
menjelaskan mengenai latar belakang masalah, batasan masalah, tujuan dan
manfaat penelitian, rumusan masalah, dan metodologi yang digunakan dalam
pembangunan sistem.
Bab ini akan berisi uraian tentang teori-teori yang akan digunakan dalam
perancangan sistem yaitu penjelasan mengenai citra dan operasi pengolahan
citra.
Bab ini akan membahas analisa dan rancangan dari sistem yang akan
dibangun secara umum dan terperinci.
Bab ini berisi tentang pengimplementasian dari analisis dan desain sistem pada
bab sebelumnya.
BAB V. ANALISIS HASIL IMPLEMENTASI
Bab ini berisi Kesimpulan dan Saran untuk sistem yang telah dibuat agar ada
pengembangan yang lebih baik untuk masa yang akan datang.
BAB II
LANDASAN TEORI
Keamanan berasal dari kata dasar aman yang artinya adalah suatu keadaan
bebas dari bahaya, bebas dari gangguan dan tersembunyi (Kamus Besar Bahasa
Indonesia). Dalam kehidupan sehari ada beberapa jenis kemanan yang sering kita
temukan, diantaranya adalah kemanan fisik. Kemanan fisik adalah tindakan atau
cara yang dilakukan untuk mencegah atau menanggulangi dan menjaga orang,
barang, tempat dari bahaya fisik yang bisa menyebabkan kerugian. Kemanan fisik
termasuk perlindungan dari pencurian, vandalisme dan terorisme. Pengamanan
secara tradisional adalah dengan menempatkan seorang penjaga untuk menjaga
suatu area yang dianggap sebagai aset yang perlu dijaga. Namun cara tersebut
dianggap kurang efektif
Pada komponen sensor visual yang ditangkap oleh indera sensor adalah
berupa citra gambar. Perangkat yang digunakan sebagai komponen sensor adalah
kamera. Dalam bidang keamanan yang sering digunakan sebagai alat bantu adalah
kamera CCTV (Close Circuit Televission), namun pada penelitian ini penulis
akan menggunakan webcam.
256 pixel
Pada citra warna, setiap titik mempunyai warna yang spesifik yang
merupakan kombinasi dari tiga warna yaitu merah, hijau dan biru.
Format citra ini sering disebut sebagai citra RGB (red-green-blue).
Setiap warna dasar mempunyai intensitas sendiri dengan nilai maksimum
255 (8 bit), misalnya warna kuning merupakan kombinasi warna dan
hijau sehingga nilai RGB-nya adalah 255 255 0. Dengan demikian tiap
titik pada citra warna membutuhkan data 3 byte.
Jumlah memori yang dibutuhkan pada format citra warna true colour
adalah tiga kali jumlah titik yang ada dalam citra. Dilain pihak, pada
kebanyakan kasus, jumlah warna yang ada dalam suatu citra tekadang
terbatas ( jauh dibawah 16 juta warna untuk kemungkinan warna yang
ada), karena banyaknya warna dalam sebuah citra tidak mungkin
melebihi banyaknya titik dalam citra itu sendiri. Untuk kasus tersebut,
disediakan format citra warna berindeks. Pada format ini, informasi
setiap titik merupakan indeks dari suatu tabel yang berisi informasi
warna yang tersedia, yang disebut palet warna.
Jumlah bit yang dibutuhkan setiap titik pada citra bergantung pada
jumlah warna yang tersedia pada palet warna. Sebagai contoh, untuk
palet ukuran 26 warna, setiap titik membutuhkan 4 bit. Dan untuk palet
berukuran 256 warna, setiap titik membutuhkan 8 bit atau 1 byte. Palet
warna merupakan bagian dari citra warna berindeks, sehingga saat
penyimpanan citra, informasi palet juga harus disertakan. Keuntungan
menggunakan palet warna ini adalah kita dapat dengan cepat
memanipulasi warna tanpa harus mengubah informasi pada setiap titik
pada citra, keuntungan lainya dalah besarnya data yang diperlukan untuk
menyimpan citra ini lebih kecil dibandingkan dengan citra true colour.
2.6. Warna
2.6.1. Dasar-dasar Warna
Warna merupakan salah satu bentuk presepsi visual seseorang
terhadap sebuah obyek citra. Warna yang dihasilkan oleh obyek citra
ditentukan oleh warna sinar yang dipantulkannya. Warna sinar yang
dapat terespon oleh mata manusia adalah sinar tampak dengan panjang
gelombang antara 400 – 700 nanometer.
Dalam sebuah penelitian menerangkan bahwa kombinasi warna yang
memiliki rentang warna yang paling lebar adalah red (merah), green
(hijau) dan blue (biru). Ketiga macam warna tersebut disebut sebagai
warna pokok dan sering disingkat dengan istilah RGB. Sedangkan
warna-warna lain yang dapat tertangkap oleh mata manusia merupakan
bentuk kombinasi dari ketiga warna tersebut dengan perbandingan
tertentu.
2.5.2. Atribut Warna
Selain RGB warna juga dapat dimodelkan ke dalam bentuk lain, yaitu
berdasarkan artibut warna yang dimiliki. Berikut ini adalah macam dari
atribut warna, diantaranya intensity (I), hue (H), saturation (S).
1. Intensity/Luminance
Merupakan salah satu atribut yang menyatakan banyaknya sinar atau
cahaya yang ditangkap oleh mata manusia tanpa memperhatikan
warna. Kisaran nilai yang dimiliki antara gelap (hitam) dan terang
(putih).
2. Hue
Atribut ini lebih menerangkan warna sebenarnya dalam arti atribut ini
dapat membedakan warna-warna yang tertangkap mata manusia. Hue
berasosiasi dengan dengan panjang gelombang cahaya.
3. Saturation
Menyatakan tingkat kemurnian warna cahaya atau dapat juga
dinyatakan sebagai pengukur dalamnya sebuah warna dengan cara
mengindikasikan seberapa banyak warna warna putih yang diberikan
pada sebuah warna.
1. Operasi titik adalah operasi pengolahan citra dimana setiap titik diolah
tidak berpengaruh antara satu titik dengan titik yang lain. Setiap titik pada
suatu citra mempunyai 2 karakteristik, yaitu koordinat yang menunjukkan
lokasi dari titik tersebut dalam citra dan nilai piksel. Beberapa operasi
pengolahan citra yang termasuk dalam kelompok operasi titik adalah
operasi modifikasi kecemerlangan (brightness modification), peningkatan
kontras (contrast enhancement), negasi (negation), dan operasi
pengambangan (thresholding).
C adalah citra baru yang intensitas setiap pixel-nya adalah jumlah dari
intensitas pada A dan B. Jika hasil penjumlahan intensitas lebih besar dari 255
maka intensitasnya akan dibulatkan menjadi 255.
wB = 1 – wA
C adalah citra baru yang intensitas setiap pixel-nya adalah selisih dari
intensitas pada A dan B. Ada kemungkinan hasil operasi ini menghasilkan
nilai negatif, oleh karena itu, operasi pengurangan citra perlu melibatkan
operasi clipping.
Perkalian Citra
B(x,y) = A(x,y) + c
B(x,y) = c . A(x,y)
dan
B(x,y) = A(x,y) / c
Operasi logika juga dapat dilakukan terhadap dua atau lebih citra.
Beberapa operasi logika yang sering dipergunakan adalah:
A B
AND
(A) AND (B)
Operasi Logika OR
A B
XOR (A) XOR (B)
Sistem yang dibuat ini merupakan salah satu implementasi pengolahan citra
digital. Sistem ini merupakan sebuah alat bantu dalam bidang keamanan. Pada
sistem ini kita membutuhkan sebuah perangkat komputer yang menggunakan
sistem operasi Windows untuk menjalankan sistem tersebut, juga sebuah speaker
untuk membunyikan alarm ketika terjadi adanya gerakan Dalam sistem ini akan
menggunakan citra dari obyek nyata yang diambil menggunakan media webcam
yang kemudian citra tersebut akan diolah dengan teknik pengolahan citra.
Proses utama dalam sistem ini adalah proses banding citra, yaitu proses
untuk mengetahui perbedaan dua buah gambar. Dan proses yang lainya adalah
proses simpan gambar dan proses pembangkit peringatan. Proses pembangkit
peringatan merupakan proses untuk memberikan peringatan dalam bentuk suara.
Sedangkan proses simpan gambar digunakan untuk menyimpan file gambar jika
terdapat perbedaan gambar.
27
28
mulai
tidak
2. perbedaan =
| Objek – latar |
Perbedaan > 0
Objek = latar
3. Play Suara
4. Simpan Gambar
Berhenti
ya
ya
selesai
citra Peringatan
kamera Aplikasi Pengaman Ruangan User
Setting kamera
Setting kamera
citra
Bandingkan dua buah citra
Kamera
Simpan gambar
Terdeksi Gambar beda
File Gambar
Setting kameraSimpan Gambar
Seting kamera
User
Aplikasi ini terdiri dari empat proses utama, yaitu proses banding citra, proses
simpan gambar, proses pembangkit peringatan, dan proses setting kamera.
Berikut merupakan penjelasan mengenai masing-masing proses tersebut.
Proses ini merupakan proses utama dalam aplikasi ini, pada proses ini
citra digital yang diperoleh dari kamera dilakukan operasi pengurangan
pada kedua citra. Hasil dari pengurangan citra akan dibuat harga mutlak
sehingga didapat nilai positif. Jika hasil dari pengurangan tersebut lebih
dari nol, maka kedua citra tersebut berbeda, namun jika hasil
pengurangan kedua citra tersebut adalah nol, maka citra tersebut sama.
Output dari proses ini adalah keterangan apakah kedua citra tersebut
beda atau sama.
Baca Citra
X=lebar;x>0; X-1
tidak
R(|objek(x,y)-latar(x,y)|)>toleransipixel Dan
G(|objek(x,y)-latar(x,y)|)>toleransipixel Dan
B(|objek(x,y)-latar(x,y)|)>toleransipixel
ya
PixelBerubah ++
selesai
mulai
terdeteksiGerak = true
true
PlaySuara false
selesai
Proses ini juga merupakan kelanjutan dari hasil proses banding citra. Jika
masukan pada proses ini mendeteksi adanya perbedaan citra maka proses
ini akan menyimpan citra obyek. Citra obyek akan disimpan pada
direktori sesuai tanggal obyek tersebut terdeteksi. Nama file dari citra ini
akan disesuaikan dengan waktu obyek tersebut terdeteksi. Nama file yang
disimpan adalah [jam];[menit];[detik];[milidetik].JPG . File citra ini akan
dimasukan dalam folder sesuai tanggal terdeteksinya obyek.
mulai
terdeteksiGerak = true
true
selesai
1 2
2.2P
1.2P
Peringatan
Rencana untuk tampilan utama program adalah seperti pada gambar 3.5.
Pada tampilan awal program akan memuat beberapa komponen yang akan
digunakan, dan komponen yang digunakan tampak pada keterangan berikut
ini :
Help topik
keterangan
ABOUT
Untuk pengujian akan dilakukan secara bertahap dari modul sederhana hingga
kompleks.
(meter) 1 3 5 10 15 20
1 √ √ √ √ √ √
2 √ √ √ √ √ √
3 √ √ √ √ √ √
4 √ √ √ √ √ √
5 √ √ √ √ √ √
6 √ √ √ √ √ √
7 √ √ √ √ √ √
8 √ √ √ √ √ √
9 √ √ √ √ √ √
10 √ √ √ √ √ √
11 √ √ √ √ √ √
12 √ √ √ √ √ √
13 √ √ √ √ √ √
14 √ √ √ √ √ √
15 √ √ √ √ √ √
16 √ √ √ √ √ √
17 √ √ √ √ √ √
18 √ √ √ √ √ √
19 √ √ √ √ √ √
20 √ √ √ √ √ √
Tabel 3.3 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan
toleransi 1 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 √
8 8 1 √
9 9 1 √
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 √
17 7 2 √
18 8 2 √
19 9 2 √
20 10 2 √
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 √
26 6 3 √
27 7 3 √
28 8 3 √
29 9 3 √
Tabel 3.4 hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan toleransi
2 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 √
8 8 1 √
9 9 1 √
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 √
17 7 2 √
18 8 2 √
19 9 2 √
20 10 2 √
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 √
26 6 3 √
27 7 3 √
28 8 3 √
29 9 3 √
30 10 3 √
Tabel 3.5 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan toleransi
3 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 √
8 8 1 √
9 9 1 √
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 √
17 7 2 √
18 8 2 √
19 9 2 √
20 10 2 √
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 √
26 6 3 √
27 7 3 √
28 8 3 √
29 9 3 √
30 10 3 √
Tabel 3.6 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan toleransi
4 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 √
8 8 1 √
9 9 1 √
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 √
17 7 2 √
18 8 2 √
19 9 2 √
20 10 2 √
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 √
26 6 3 √
27 7 3 √
28 8 3 √
29 9 3 √
30 10 3 √
Tabel 3.6 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan toleransi
5 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 √
8 8 1 √
9 9 1 √
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 √
17 7 2 √
18 8 2 √
19 9 2 √
20 10 2 √
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 √
26 6 3 √
27 7 3 √
28 8 3 √
29 9 3 √
30 10 3 √
Tabel 3.7 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan toleransi
6 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 √
8 8 1 √
9 9 1 √
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 √
17 7 2 √
18 8 2 √
19 9 2 √
20 10 2 √
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 √
26 6 3 √
27 7 3 √
28 8 3 √
29 9 3 √
30 10 3 √
Tabel 3.8 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan toleransi
7 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 √
8 8 1 √
9 9 1 √
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 √
17 7 2 √
18 8 2 √
19 9 2 √
20 10 2 √
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 √
26 6 3 √
27 7 3 √
28 8 3 √
29 9 3 √
30 10 3 √
Tabel 3.9 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola tenis dan toleransi
1 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 √
8 8 1 √
9 9 1 √
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 √
17 7 2 √
18 8 2 √
19 9 2 √
20 10 2 √
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 √
26 6 3 √
27 7 3 √
28 8 3 √
29 9 3 √
Untuk bisa menjalankan aplikasi ini dibutuhkan beberapa perangkat keras dan
Pada proses banding citra terdiri atas bebeberapa proses. proses banding
citra berada dalam fungsi CariPerbedaan. Berikut merupakan
penejelasan masing-masing proses utama yang digunakan dalam fungsi
CariPerbedaan. Output dari fungsi cariPerberdaan adalah prosentase dari
jumah titik yang berubah dan bertipe integer. Nilai balik dari fungsi cari
perbedaan ini kemudian dibandingkan dengan nilai prosentase yang
didapat dari trackbar. Dan output dari perbandinganya digunakan
sebagai pemicu atau trigger untuk proses simpan gambar dan proses
pembangkit Peringatan. Berikut ini adalah implementasi proses yang
terdapat dalam proses banding citra.
53
54
ImgLatar : Timage
Algoritma :
imgObjek.picture.LoadFromFile(JLCVideo1.FicheroImage
n)
endY: integer
jumlahPixel: integer
endX := imgObjek.picture.Width – 1
jumlahPixel:=(imgObjek.picture.Height*
imgObjek.picture.Width).
Algoritma :
for y := 0 to endY do
begin
currentLine :=
imgObjek.picture.bitmap.Scanline[y]; prevLine :=
imgLatar.picture.bitmap.Scanline[y]; for x := 0 to
endX do
begin
currentPixel := currentLine^[x];
prevPixel := prevLine^[x];
if (abs(currentPixel.rgbtRed - prevPixel.rgbtRed) >
pixelToleransi) and
(abs(currentPixel.rgbtGreen - prevPixel.rgbtGreen) >
pixelToleransi) and
((abs(currentPixel.rgbtBlue - prevPixel.rgbtBlue) >
pixelToleransi)) then
inc(pixelBerubah);
end;
Keterangan : untuk membaca semua titik dilakukan perulangan dengan
for, dan untuk membaca titik digunakan fungsi scanline.
Fungsi ini hanya bisa membaca baris atau secara horizontal.
Tiap titik yang dibaca pada koordinat yang sama dan
dikurangkan nilainya untuk mengetahui perbedaan kedua
citra. Fungsi inc() adalah fungsi increment yang digunakan
untuk menambah satu suatu nilai variabel.
sndPlaySound(PChar('sond.wav'),
SND_NODEFAULT);
imgObjek: Timage
sekarang : date;
Keluaran : File gambar
JpegImg.Assign(imgObjek.picture.bitmap) ;
tmpFilename := dateTostr(date)+'\'+inttostr(jam)
+';'+inttostr(min)+';'
+inttostr(sec)+';'+intToStr(msec) + '.jpg'
JpegImg.SaveToFile(tmpFilename) ;
Progam ini dapat langsung dijalankan dengan double klik icon program
yang berekstensi .exe karena sebelumnya telah dieksport ke format exe.
Form1
JLCVideo1: TJLCVideo
pnlSpeedButtons: TPanel
pnlMainImage: TPanel
imgLatar: TImage
imgObjek: TImage
pnlControls: TPanel
lblInformation: TLabel
Label1: TLabel
ProgressBar1: TProgressBar
Label2: TLabel
TrackBar1: TTrackBar
lblActualMovement: TLabel
lblMovementTrigger: TLabel
lblLockCountdown: TLabel MainMenu1: TMainMenu file1: TMenuItem
seting1: TMenuItem help1: TMenuItem keluar1: TMenuItem
settingwebcam1: TMenuItem help2: TMenuItem
about1: TMenuItem formatvideo1: TMenuItem Mulai: TButton
Button2: TButton Label3: TLabel Label4: TLabel
Ketika ada obyek yang masuk dan jumlah titik yang berbebeda lebih
dari toleransi maka program akan menampilan warning dengan menampilkan
tulisan “Gerakan” berwarna merah dan juga memainkan suara sebagai alarm
peringatan. Ketika obyek asing tersebut diketahui maka aplikasi akan
menyimpan tampilan yang ada pada layer secara otmatis maka obyek tersebut
juga akan terekam dalam gambar. Penyimpanan gambar obyek terebut akan
dikelompokan kedalam folder berdasarkan tanggal. Aplikasi ini akan otomatis
membuat folder baru jika nama folder berdasar tanggal pengeksekusiannya
belum ada.
Gambar 4.8 Folder baru yang dibentuk dengan nama sesuai tanggal
Untuk masuk ke help, pilih menu utama Help -> Help Program.
Help program ini berbentuk chm. Maka ketika masuk ke help akan
langsung tampil di jendela lain. help berisi tentang panduan cara
menggunakan program ini.. Seperti tampak pada gambar 4.6 berikut ini.
Gambar 4.10 Tampilan Menu Help.
Menu bantuan yang dibuat menggunakan format shm, dan file bantuan
akan dipanggil melalui fungsi pemanggilan file bantuan.chm
Pada bagian ini akan dijelaskan hasil ujicoba program. Ujicoba ini
menggunakan Laptop Acer seri 4736z, dengan spesifikasi Prosesor Intel
Dual Core, Memory 1 Giga, Hardisk 250 Giga, dan Webcam 1.3
Megapixel yang sudah terintegrasi di dalamnya dan Sistem Operasi
Windows XP.
4.3.1 Hasil ujicoba Aplikasi Pengaman Ruangan Menggunakan Webcam.
Hasil pengujian tiap modul pada aplikasi ini bisa dilihat pada table 3.1
Menggunakan Webcam
Hasil yang
No Sekenario uji keterangan
diharapkan Hasil pengujian
Memainkan suara
sond.wav
c
menggunakan media
Suara terdengar Suara terdengar √
player
(meter) 1 3 5 10 15 20
1 √ √ √ √ √ √
2 √ √ √ √ √ ×
3 √ √ √ √ × ×
4 √ √ √ × × ×
5 √ √ × × × ×
6 √ √ × × × ×
7 √ √ × × × ×
8 √ √ × × × ×
9 √ × × × × ×
10 √ × × × × ×
11 √ × × × × ×
12 √ × × × × ×
13 √ × × × × ×
14 × × × × × ×
15 × × × × × ×
16 × × × × × ×
17 × × × × × ×
18 × × × × × ×
19 × × × × × ×
20 × × × × × ×
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 √
7 7 1 ×
8 8 1 ×
9 9 1 ×
10 10 2 √
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 √
16 6 2 ×
17 7 2 ×
18 8 2 ×
19 9 2 ×
20 10 2 ×
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 √
25 5 3 ×
26 6 3 ×
27 7 3 ×
28 8 3 ×
29 9 3 ×
Tabel 3.4 hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan
toleransi 2 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 √
6 6 1 ×
7 7 1 ×
8 8 1 ×
9 9 1 ×
10 10 2 ×
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 √
15 5 2 ×
16 6 2 ×
17 7 2 ×
18 8 2 ×
19 9 2 ×
20 10 2 ×
21 1 3 √
22 2 3 √
23 3 3 √
24 4 3 ×
25 5 3 ×
26 6 3 ×
27 7 3 ×
28 8 3 ×
29 9 3 ×
30 10 3 ×
Tabel 3.5 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan
toleransi 3 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 √
5 5 1 ×
6 6 1 ×
7 7 1 ×
8 8 1 ×
9 9 1 ×
10 10 2 ×
11 1 2 √
12 2 2 √
13 3 2 √
14 4 2 ×
15 5 2 ×
16 6 2 ×
17 7 2 ×
18 8 2 ×
19 9 2 ×
20 10 2 ×
21 1 3 √
22 2 3 √
23 3 3 ×
24 4 3 ×
25 5 3 ×
26 6 3 ×
27 7 3 ×
28 8 3 ×
29 9 3 ×
30 10 3 ×
Tabel 3.6 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan
toleransi 4 persen.
1 1 1 √
2 2 1 √
3 3 1 √
4 4 1 ×
5 5 1 ×
6 6 1 ×
7 7 1 ×
8 8 1 ×
9 9 1 ×
10 10 2 ×
11 1 2 √
12 2 2 √
13 3 2 ×
14 4 2 ×
15 5 2 ×
16 6 2 ×
17 7 2 ×
18 8 2 ×
19 9 2 ×
20 10 2 ×
21 1 3 √
22 2 3 ×
23 3 3 ×
24 4 3 ×
25 5 3 ×
26 6 3 ×
27 7 3 ×
28 8 3 ×
29 9 3 ×
30 10 3 ×
Tabel 3.6 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan
toleransi 5 persen.
1 1 1 √
2 2 1 √
3 3 1 ×
4 4 1 ×
5 5 1 ×
6 6 1 ×
7 7 1 ×
8 8 1 ×
9 9 1 ×
10 10 2 ×
11 1 2 √
12 2 2 ×
13 3 2 ×
14 4 2 ×
15 5 2 ×
16 6 2 ×
17 7 2 ×
18 8 2 ×
19 9 2 ×
20 10 2 ×
21 1 3 ×
22 2 3 ×
23 3 3 ×
24 4 3 ×
25 5 3 ×
26 6 3 ×
27 7 3 ×
28 8 3 ×
29 9 3 ×
30 10 3 ×
Tabel 3.7 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan
toleransi 6 persen.
1 1 1 √
2 2 1 ×
3 3 1 ×
4 4 1 ×
5 5 1 ×
6 6 1 ×
7 7 1 ×
8 8 1 ×
9 9 1 ×
10 10 2 ×
11 1 2 ×
12 2 2 ×
13 3 2 ×
14 4 2 ×
15 5 2 ×
16 6 2 ×
17 7 2 ×
18 8 2 ×
19 9 2 ×
20 10 2 ×
21 1 3 ×
22 2 3 ×
23 3 3 ×
24 4 3 ×
25 5 3 ×
26 6 3 ×
27 7 3 ×
28 8 3 ×
29 9 3 ×
30 10 3 ×
Tabel 3.8 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola volley dan
toleransi 7 persen.
1 1 1 ×
2 2 1 ×
3 3 1 ×
4 4 1 ×
5 5 1 ×
6 6 1 ×
7 7 1 ×
8 8 1 ×
9 9 1 ×
10 10 2 ×
11 1 2 ×
12 2 2 ×
13 3 2 ×
14 4 2 ×
15 5 2 ×
16 6 2 ×
17 7 2 ×
18 8 2 ×
19 9 2 ×
20 10 2 ×
21 1 3 ×
22 2 3 ×
23 3 3 ×
24 4 3 ×
25 5 3 ×
26 6 3 ×
27 7 3 ×
28 8 3 ×
29 9 3 ×
30 10 3 ×
Dan untuk pengujian dengan jarak lebih dari 4 meter tidak bisa dilakukan
karena keterbatasan ruang pengujian. Dan kecepatan maksimal yang bisa
dideteksi oleh aplikasi ini adalah 6 meter perdetik pada toleransi 1 persen.
Tabel 3.9 Hasil pengujian aplikasi pengaman ruangan dengan obyek bola tenis dan
toleransi 1 persen.
1 1 1 √
2 2 1 ×
3 3 1 ×
4 4 1 ×
5 5 1 ×
6 6 1 ×
7 7 1 ×
8 8 1 ×
9 9 1 ×
10 10 2 ×
11 1 2 ×
12 2 2 ×
13 3 2 ×
14 4 2 ×
15 5 2 ×
16 6 2 ×
17 7 2 ×
18 8 2 ×
19 9 2 ×
20 10 2 ×
21 1 3 ×
22 2 3 ×
23 3 3 ×
24 4 3 ×
25 5 3 ×
26 6 3 ×
27 7 3 ×
28 8 3 ×
29 9 3 ×
Pada pengujian dengan menggunakan bola tenis hanya bisa mendeteksi bola
tenis dengan kecepatan 1 meter per detik dengan toleransi 1 persen.
Pada bab ini akan menguraikan tentang kesimpulan dan saran untuk
pengembangan Aplikasi Pengaman Ruangan Menggunakan Webcam agar menjadi
program yang lebih baik dan handal.
5.1 Kesimpulan
Dalam pembuatan dan pengujian Aplikasi Pengaman Ruangan ini dapat disimpulkan:
1. Operasi pengurangan pada pengolahan citra bisa digunakan dalam sistem keamanan
karena mampu membedakan dua buah citra masukan dari webcam yang diambil
secara berurutan.
2. Semakin kecil toleransi yang digunakan, semakin akurat aplikasi. Aplikasi ini cukup
baik untuk mendeteksi obyek berupa manusia dan cocok untuk pengaman ruangan
dari tindak kejahatan yang dilakukan oleh manusia.
3. Aplikasi ini bisa digunakan sebagai alternative aplikasi pengaman berbasis kamera,
dimana kamera yang digunakan adalah webcam yang harganya relatif lebih murah
dibandingkan dengan kemera yang lain.
5.2 Saran
Saran yang diberikan penulis dalam pengembangan program ini lebih lanjut antara
lain :
1. Untuk penelitian lebih lanjut akan lebih baik jika input yang ada lebih dari satu
kamera.
2. Perlu dilakukan penelitian dengan metode yang lain agar penangkapan terhadap
obyek bisa lebih akurat.
85
DAFTAR PUSTAKA
LISTING PROGRAM
private
var
{ Private declarations }
Form1: TForm1;
inReposition,alwaysOnTop : boolean;
playingSound, initialized: boolean;
gotBothImages: boolean;
implementation
saveJpegOnMovement, minimizeToTray:
{$R *.dfm}
boolean;
procedure TForm1.FormActivate(Sender:
source: string;
TObject);
mainThread: TMainThread;
var
moveTrigger, pixelToleransi: integer;
tanggal:string;
function hitungPerbedaan: integer;
begin
procedure getImageDariWebcam;
{$I-}
DateSeparator := '_';
function getFrame: integer;
ShortDateFormat := 'd/m/yyyy';
procedure SimpanGambar;
tanggal:= dateTostr(date);
procedure PlaySuara;
MkDir(dateTostr(date));
public
frmSplash:= TfrmSplash.Create(self); //
{ Public declarations } memanggil splash screen
end;
trackbar1.Position := moveTrigger
procedure TForm1.FormCreate(Sender:
TObject); end;
begin finally
with pnlDetectionZone do
imgZone.picture.bitmap.PixelFormat := end;
pf24bit;
gotBothImages := false;
procedure TForm1.FormDestroy(Sender:
TObject);
begin
if minimizeToTray then end;
// tengah begin
begin
imageTop := (pnlMainImage.Height div 2) -
(imageSize div 2); result := hitungPerbedaan;
end
imageLeft := (pnlMainImage.Width div 2) -
(imageSize div 2); else
finally end;
end; imgLatar.Picture:=imgObjek.Picture;
gotBothImages := true; bedaAntarFrame := getFrame;
procedure TForm1.getImageDariWebcam;
lblInformation.Visible := TerdeteksiGerak;
begin
lblLockCountdown.Visible := false;
JLCvideo1.GrabarImagenDisco;
if (TerdeteksiGerak) then
if fileexists(JLCVideo1.FicheroImagen) then
SimpanGambar;
begin
if (TerdeteksiGerak) then
imgObjek.picture.LoadFromFile(JLCVideo1.Fic PlaySuara;
heroImagen);
result := TerdeteksiGerak;
if pnlDetectionZone.Visible then
except
begin
on E:Exception do
imgZone.Picture.bitmap.Assign(imgObjek.pict begin
ure.bitmap);
lblInformation.caption := 'Error: ' +
imgZone.repaint; E.Message;
end;
deleteFile(pchar(JLCVideo1.FicheroImagen));
end;
end;
end;
application.processmessages;
end;
function TForm1.LakukanIntai: boolean;
var
procedure TForm1.SimpanGambar;
bedaAntarFrame: integer;
var
TerdeteksiGerak: boolean;
JpegImg: TJpegImage;
begin
tmpFilename, actualFilename: string;
result := false;
sekarang:tdatetime;
if (inReposition) or (not initialized) then exit;
jam,min,sec,msec :word;
try
begin
sekarang:=now; lblMovementTrigger.caption :=
inttostr(moveTrigger);
DateSeparator := '_';
end;
ShortDateFormat := 'd/m/yyyy';
function TForm1.hitungPerbedaan: integer;
DecodeTime(sekarang,jam,min,sec,msec) ;
type
JpegImg := TJpegImage.Create;
TRGBArray = ARRAY[0..255] OF TRGBTriple;
try // pf24bit
JpegImg.Assign(imgObjek.picture.bitmap) ; pRGBArray = ^TRGBArray;
tmpFilename := var
dateTostr(date)+'\'+inttostr(jam)+';'+inttostr(
min)+';'+inttostr(sec)+';'+intToStr(msec) + x,y,pixelBerubah: integer;
'.jpg'; // simpan hasil deteksi dengan
currentLine, prevLine: pRGBArray;
actualFilename := copy(tmpFilename, 1,
length(tmpFilename)); // file ber ekstensi .jpg currentPixel, prevPixel: TRGBTriple;
dan berawalan detek_
startY, endY, startX, endX, jumlahPixel:
lblLockCountdown.caption := 'Simpan ' + integer;
actualFilename; // menampilkan pesan
begin
simpan
lblLockCountdown.Visible := true;
begin
JpegImg.SaveToFile(tmpFilename) ; //
simpan di proses startY := 0;
finally endY := imgObjek.picture.Height - 1;
JpegImg.Free; startX := 0;
end; endX := imgObjek.picture.Width - 1;
end; jumlahPixel := (imgObjek.picture.Height *
imgObjek.picture.Width)
procedure
TForm1.sbCameraSourceClick(Sender: end;
TObject);
begin
pixelBerubah := 0;
JLCVideo1.SeleccionarFuente;
for y := startY to endY do
end;
begin
procedure TForm1.TrackBar1Change(Sender:
TObject); currentLine :=
imgObjek.picture.bitmap.Scanline[y];
begin
prevLine :=
moveTrigger := Trackbar1.Position; imgLatar.picture.bitmap.Scanline[y];
for x := startX to endX do begin
(abs(currentPixel.rgbtGreen - end;
prevPixel.rgbtGreen) > pixelToleransi) and
((abs(currentPixel.rgbtBlue -
constructor TSoundPlayer.create();
prevPixel.rgbtBlue) > pixelToleransi)) then
begin
inc(pixelBerubah);
inherited create(true); //
end;
end;
destructor TSoundPlayer.Destroy;
end;
begin
result := (pixelBerubah * 100) div
jumlahPixel; inherited destroy;
end; end;
procedure TSoundPlayer.Execute;
procedure begin
TForm1.MinimizeClick(Sender:TObject);
sndPlaySound(PChar('sond.wav'),
begin SND_NODEFAULT);
playingSound := false;
hide; end;
{ taskbar button}
if IsWindowVisible(Application.Handle) procedure
TForm1.settingwebcam1Click(Sender:
then ShowWindow(Application.Handle,
TObject);
SW_HIDE);
begin
end;
JLCVideo1.SeleccionarFuente;
end;
procedure TForm1.PlaySuara;
var
soundPlayer: TSoundPlayer;
procedure TForm1.formatvideo1Click(Sender: procedure TForm1.bedagambar1Click(Sender:
TObject); TObject);
begin begin
JLCVIdeo1.SeleccionarFormato; formUji.ShowModal;
end; end;
begin
Application.Terminate;
end;
procedure TForm1.about1Click(Sender:
TObject);
begin
aboutBox.ShowModal;
end;
procedure TForm1.help2Click(Sender:
TObject);
begin
ShellExecute(GetDesktopWindow, 'open',
PChar('help-pengaman.chm'), nil, nil,
SW_ShowNormal);
end;
procedure TForm1.MulaiClick(Sender:
TObject);
begin
initialized := true;
end;
procedure TForm1.Button2Click(Sender:
TObject);
begin
initialized := false;
end;
inherited create(true); // create tp belum
dijalankan
Liting threadUtama.pas
frmOwner := _frmOwner;
unit threadUtama;
end;
interface
{destructor}
destructor TMainThread.Destroy;
uses
begin
treshold_splash,shellapi, Windows,
Messages, SysUtils, Classes, Graphics, inherited destroy; //
Controls, Forms, Dialogs,
end;
StdCtrls, Buttons, clipbrd,ExtCtrls,
AviCaptura, MMSystem,
{main thread entry point}
Spin, JLCVideo, inifiles;
procedure TMainThread.Execute;
var
type
mainForm: TForm1;
TMainThread = class(TThread)
intervalToUse: integer;
private
begin
frmOwner: TForm;
mainForm := (frmOwner as TForm1);
protected
repeat
procedure Execute; override;
mainForm.lakukanIntai;
public
intervalToUse:=66 ;
constructor create(_frmOwner: TForm;
_JLCVideo1: TJLCVideo); sleep(intervalToUse);
destructor Destroy; override; until terminated;
end; deleteFile(pchar(mainForm.JLCVideo1.Fichero
Imagen));
implementation
end;
uses
end.
unit1;
{constructor}
constructor TMainThread.create(_frmOwner:
TForm; _JLCVideo1: TJLCVideo);
begin