ABSTRAK
Tindak kejahatan yang semakin meningkat telah menjadi ancaman bagi
masyarakat. Tindak kejahatan tersebut tidak hanya terjadi di tempat umum,
namun juga telah mengancam rumah-rumah penduduk. Jasa keamanan pun dirasa
tidak cukup untuk mengawasi rumah. Oleh karena itu, kamera CCTV menjadi
pilihan bagi pemilik rumah sebagai sistem keamanan. Bagaimana memanfaatkan
CCTV untuk memberikan peringatan kepada pemilik rumah ketika terjadi
perubahan kondisi pada ruangan yang diintai? Pada penelitian ini, dilakukan
pengujian untuk mengawasi kondisi suatu tempat atau ruangan dengan
memanfaatkan smartphone sebagai kamera pengintai/CCTV. Sistem kamera
pengintai tersebut menggunakan metode Background Subtraction untuk
membandingkan kondisi sebelum dan setelahnya. Terdapat 2 jenis pengujian yaitu
pengujian untuk mengetahui kecepatan maksimum obyek yang dapat dideteksi
sistem dan pengujian nilai threshold untuk mendapatkan nilai threshold yang tepat
dalam mendeteksi obyek manusia. Berdasarkan kedua pengujian tersebut
didapatkan nilai threshold yang tepat diterapkan pada sistem untuk mendeteksi
obyek manusia adalah sekitar 70% sampai 90%, dimana obyek manusia tersebut
ABSTRACT
The increasing crime has become a threat for people. It doesn’t only occur
in public places, but also has threatened the home residents. The security was not
enough to protect the house. Therefore, CCTV camera become the choice for
homeowner as a security system. How to use CCTV to alert the homeowner when
there is a change in the place that under surveillance? This research, carried out
tests to monitor the condition of a place or a room using the smartphone as a
surveillance camera/CCTV. This surveillance camera system was using
background subtraction method to compare the condition before and after. There
are two types of the tests which are the test to know the maximum speed of the
object that could be detected by system, and the test to know the best threshold
value for system to detect human object. Based on the tests, the best threshold
value for this system to detect a human object is between 70% and 90%, where
SISTEM KAMERA PENGINTAI BERBASIS ANDROID
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Oleh:
Theodorin Hanna Vebrita Kustanto
NIM : 115314020
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA YOGYAKARTA
ii
SURVEILLANCE CAMERA SYSTEM BASED ON ANDROID
A Final Project
Presented as Partial Fullfillment of the Requirements
To Obtain Sarjana Komputer Degree
In Informatics Engineering Study Program
By:
Theodorin Hanna Vebrita Kustanto
NIM : 115314020
INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY
iii
HALAMAN PERSETUJUAN
SKRIPSI
SISTEM KAMERA PENGINTAI BERBASIS ANDROID
Oleh:
Theodorin Hanna Vebrita Kustanto
NIM : 115314020
Telah disetujui oleh
Dosen Pembimbing
iv
HALAMAN PENGESAHAN
SKRIPSI
SISTEM KAMERA PENGINTAI BERBASIS ANDROID
Dipersiapkan dan ditulis oleh:
Theodorin Hanna Vebrita Kustanto
NIM : 115314020
Telah dipertahankan di depan Tim Penguji
Pada Tanggal 21 Juli 2015
Dan dinyatakan memenuhi syarat
Susunan Panitia Penguji
Nama Lengkap Tanda Tangan
Ketua : Sri Hartati Wijono, S.Si., M.Kom. ………..
Sekretaris : Dr. Anastasia Rita Widiarti, M.Kom. ………..
Anggota : Puspaningtyas Sanjoyo Adi, S.T., M.T. ………..
Yogyakarta, ………..
Fakultas Sains dan Teknologi
Universitas Sanata Dharma
Dekan,
v
HALAMAN PERSEMBAHAN
Difficult doesn’t mean impossible. It simply means that you have
to work hard.
If God brings you to it, He will bring you through it.
“Don’t panic, I’m with you. There’s no need to fear, for
I am your God. I’ll give you strength. I’ll help you. I’ll
hold you steady. Keep a firm grip on you” –
Isaiah
41:10
Ku Persembahkan untuk: Tuhan Yesus dan Bunda Maria, Keluarga Tercinta, Dosen Pembimbing, dan Teman-Teman
vi
PERNYATAAN KEASLIAN KARYA
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak
memuat karya atau bagian orang lain, kecuali yang telah disebutkan dalam
kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.
Yogyakarta, 31 Juli 2015
Penulis,
vii
PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS
Yang bertandatangan di bawah ini, saya mahasiswa Universitas Sanata Dharma:
Nama : Theodorin Hanna Vebrita Kustanto
NIM : 115314020
Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan
Universitas Sanata Dharma karya ilmiah saya yang berjudul :
“ SISTEM KAMERA PENGINTAI BERBASIS ANDROID”
Berserta perangkat yang diperlukan (bila ada). Dengan demikian saya
memberikan kepada perpustakaan Universitas Sanata Dharma hak untuk
menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk
pangkalan data, mendistribusikannya secara terbatas, dan mempublikasikannya di
internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari
saya maupun memberikan royalti kepada saya selama tetap mencatumkan nama
saya sebagai penulis.
Demikian pernyataan ini saya buat dengan sebenarnya.
Dibuat di Yogyakarta
Pada tanggal : 31 Juli 2015
Yang menyatakan
viii
ABSTRAK
Tindak kejahatan yang semakin meningkat telah menjadi ancaman bagi
masyarakat. Tindak kejahatan tersebut tidak hanya terjadi di tempat umum,
namun juga telah mengancam rumah-rumah penduduk. Jasa keamanan pun dirasa
tidak cukup untuk mengawasi rumah. Oleh karena itu, kamera CCTV menjadi
pilihan bagi pemilik rumah sebagai sistem keamanan. Bagaimana memanfaatkan
CCTV untuk memberikan peringatan kepada pemilik rumah ketika terjadi
perubahan kondisi pada ruangan yang diintai? Pada penelitian ini, dilakukan
pengujian untuk mengawasi kondisi suatu tempat atau ruangan dengan
memanfaatkan smartphone sebagai kamera pengintai/CCTV. Sistem kamera
pengintai tersebut menggunakan metode Background Subtraction untuk
membandingkan kondisi sebelum dan setelahnya. Terdapat 2 jenis pengujian yaitu
pengujian untuk mengetahui kecepatan maksimum obyek yang dapat dideteksi
sistem dan pengujian nilai threshold untuk mendapatkan nilai threshold yang tepat
dalam mendeteksi obyek manusia. Berdasarkan kedua pengujian tersebut
didapatkan nilai threshold yang tepat diterapkan pada sistem untuk mendeteksi
obyek manusia adalah sekitar 70% sampai 90%, dimana obyek manusia tersebut
ix
ABSTRACT
The increasing crime has become a threat for people. It doesn’t only occur
in public places, but also has threatened the home residents. The security was not
enough to protect the house. Therefore, CCTV camera become the choice for
homeowner as a security system. How to use CCTV to alert the homeowner when
there is a change in the place that under surveillance? This research, carried out
tests to monitor the condition of a place or a room using the smartphone as a
surveillance camera/CCTV. This surveillance camera system was using
background subtraction method to compare the condition before and after. There
are two types of the tests which are the test to know the maximum speed of the
object that could be detected by system, and the test to know the best threshold
value for system to detect human object. Based on the tests, the best threshold
value for this system to detect a human object is between 70% and 90%, where
x
KATA PENGANTAR
Puji dan syukur kepada Yesus Kristus yang telah memberikan karunia dan
berkatnya sehingga penulis dapat menyelesaikan tugas akhir ini dengan judul
“Sistem Kamera Pengintai Berbasis Android”. Penyusunan tugas akhir ini tidak
lepas dari semua pihak yang telah memberikan dukungan, semangat, doa, dan
bantuan sehingga tugas akhir ini dapat selesai. Penulis mengucapkan terima kasih
kepada:
1. Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T. selaku dosen pembimbing
yang senantiasa memberikan masukkan dan bantuan dalam membimbing
penulis untuk menyelesaikan tugas akhir ini.
2. Kedua orang tua penulis Bapak Drs. Yohanes Kustanto (Alm.) dan Ibu
Dra. Damiana Dwi Tanti yang selalu memberikan dukungan, doa,
semangat, dan motivasi yang luar biasa untuk penulis menyelesaikan tugas
akhir ini.
3. Kakak penulis Florensia Dwinta Parmeska, S.Kom. yang tidak pernah
lelah mengajari dan membimbing penulis.
4. Staff BAPSI Universitas Sanata Dharma Yogyakarta yang telah membantu
dalam proses pengujian sistem.
5. Bapak Dr. Ign. Edi Santosa, M. S. selaku Kepala Lab. Fisika Universitas
Sanata Dharma Yogyakarta yang telah membantu dalam penyediaan alat
yang digunakan oleh penulis untuk melakukan pengujian.
xi
ruang bagi penulis guna melakukan penujian.
7. Teman-teman kost, Irene Fitria Rosita Wardani, S.Farm., Ana Karisma
Adi Purwito, Fransisca Lydwina Thias, dan Happy Wulandari atas segala
kesabaran, perhatian, dukungan, penghiburan, dan doa yang diberikan
kepada penulis.
8. Teman-teman kuliah, Nur Indani Sari, Pandu Wibowo, Elisabet Septyana,
Beatrix Grace Avelita, Engelbert Eric, serta teman-teman TI lainnya atas
kerelaannya meluangkan waktu untuk berdiskusi bersama dan
mendengarkan keluh kesah penulis.
9. Pihak-pihak lain yang turut membantu penulis dalam menyelesaikan tugas
akhir ini, yang tidak dapat disebutkan satu per satu.
Penulis menyadari bahwa penyusunan skripsi ini masih banyak
kekurangannya mengingat keterbatasan penulis. Untuk itu penulis mengharapkan
kritik dan saran yang membangun dari semua pihak demi kesempurnaan skripsi
ini. Semoga skripsi ini dapat bermanfaat bagi masyarakat dan perkembangan ilmu
pengetahuan.
Yogyakarta, 31 Juli 2015
xii
DAFTAR ISI
HALAMAN JUDUL ... i
HALAMAN JUDUL (BAHASA INGGRIS) ... ii
HALAMAN PERSETUJUAN ...iii
HALAMAN PENGESAHAN ... iv
HALAMAN PERSEMBAHAN ... v
PERNYATAAN KEASLIAN KARYA ... vi
PERSETUJUAN PUBLIKASI ... vii
ABSTRAK ... viii
ABSTRACT ... ix
KATA PENGANTAR ... x
DAFTAR ISI ... xii
DAFTAR GAMBAR ... xiv
DAFTAR TABEL ... xv
BAB I PENDAHULUAN ... 1
1. 1. Latar Belakang Masalah ... 1
1. 2. Perumusan Masalah ... 3
1. 3. Tujuan Penelitian... 4
1. 4. Batasan Masalah ... 4
1. 5. Kegunaan ... 5
1. 6. Metodologi Penelitian ... 5
1. 7. Sistematika Penulisan ... 6
BAB II LANDASAN TEORI ... 8
2. 1. Pengertian CCTV (Closed-Circuit-Television) ... 8
2. 2. Citra Digital ... 9
2.2.1.Pengertian Citra Digital ... 9
2.2.2.Piksel ... 10
2.2.3.Pengolahan Citra Digital ... 11
2.2.4.Format File Citra ... 11
2.3. Android ... 12
2.3.1.Applications ... 13
2.3.2.Application Framework ... 13
2.3.3Libraries ... 13
2.3.4.Android Runtime ... 13
2.3.5.Linux Kernel... 14
2.3.6.Kamera ... 14
2.4. Open Computer Vision (OpenCV) ... 15
2.4.1.Background Subtraction ... 16
2.5. SMS (Short Message Service) ... 17
2.6. Intents ... 17
2.7. Gerak Melingkar Beraturan ... 18
2.7.1.Pengertian Radian ... 18
xiii
BAB III ANALISA DAN PERANCANGAN SISTEM ... 21
3. 1. Identifikasi ... 21
3. 2. Perancangan ... 22
3.2.1.Usecase ... 22
3.2.2.Narasi Use Case ... 23
3.2.3.Diagram Aktivitas ... 24
3.2.3.1.Diagram Aktivitas Mengaktifkan/Mematikan Sistem... 24
3.2.3.2.Mengatur Nomor Telpon ... 25
3.2.3.3.Mengatur Threshold ... 26
3.2.3.4.Menerima Pesan Singkat/SMS ... 27
3.2.4. Diagram Sekuen ... 28
3.2.4.1.Mengaktifkan/Mematikan Sistem ... 28
3.2.4.2.Mengatur Nomor Telpon ... 29
3.2.4.3.Mengatur Threshold ... 30
3.2.4.4.Menerima Pesan Singkat/SMS ... 31
3.2.5. Diagram Kelas ... 32
3.2.6. Antarmuka ... 33
3.2.6.1.Antarmuka Sistem ... 33
3.2.6.2.Antarmuka Menu Sistem ... 33
3.2.6.3.Antarmuka Menu Item Sistem ... 34
3.2.7.Desain Proses ... 36
3.3. Implementasi ... 43
3.3.1.Atribut dan Method... 43
3.4. Pengujian ... 62
BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM ... 63
4. 1. Tahap Implementasi ... 63
4. 2. Prosedur Pengujian ... 69
4. 3. Pengujian dan Pembahasan ... 72
4.3.1.Uji Kecepatan ... 72
4.3.2.Uji Threshold ... 77
4.3.2.1.Deteksi Obyek Bukan Manusia ... 83
BAB V PENUTUP ... 86
5. 1. Kesimpulan ... 86
5. 2. Saran ... 87
DAFTAR PUSTAKA ... 89
xiv
DAFTAR GAMBAR
Gambar 2. 1 : Model Citra ... 10
Gambar 2. 2 : Arsitektur Android ... 14
Gambar 3. 1. Diagram Blok ... 21
Gambar 3. 2 : Antarmuka Sistem ... 33
Gambar 3. 3 : Antarmuka Menu Sistem ... 34
Gambar 3. 4 : Antarmuka Menu Item Sistem ... 35
Gambar 3. 5 : Antarmuka Set Phone Number ... 35
Gambar 3. 6 : Antarmuka Set Threshold ... 36
Gambar 4. 1 : Tampilan Awal Sistem ... 65
Gambar 4. 2 : Tampilan Menu Sistem ... 65
Gambar 4. 3 : Tampilan Menu Item ... 66
Gambar 4. 4 : Tampilan Set Phone Number ... 67
Gambar 4. 5 : Tampilan Set Threshold ... 68
Gambar 4. 6 : Tampilan Terdeteksi Perubahan ... 69
Gambar 4. 7 : Layout Pengujian Kecepatan ... 70
Gambar 4. 8 : Layout Lokasi Pengujian Threshold ... 71
xv
DAFTAR TABEL
Tabel 3. 1. Gambaran Umum Usecase ... 23
Tabel 3. 2. Atribut dan Method ... 43
Tabel 3. 3. Implementasi Kelas MainActivity.java ... 43
Tabel 3. 4. Implementasi Kelas UserSettingActivity.java ... 59
Tabel 3. 5. Implementasi Kelas SurfacePreview.java... 59
Tabel 4. 1. Hasil Uji Kecepatan ... 72
Tabel 4. 2. Keseluruhan SMS Diterima ... 78
Tabel 4. 3. Persentase Keberhasilan Sistem ... 82
1
BAB I PENDAHULUAN
1. 1. Latar Belakang Masalah
CCTV merupakan salah satu teknologi yang banyak dimanfaatkan
oleh masyarakat untuk memantau keadaan sekitar dengan tujuan menjaga
keamanan dan kenyamanan di lingkungannya. Pemanfaatan CCTV
dipandang lebih efektif karena lebih cepat untuk mengetahui maupun
mendeteksi kejadian yang tertangkap oleh kamera tersebut. Saat ini CCTV
bukan hanya dibutuhkan di tempat-tempat umum saja, melainkan juga di
tempat-tempat yang lebih pribadi seperti di rumah. Hal tersebut
dikarenakan rumah merupakan salah satu tempat seseorang menyimpan
barang-barang berharganya, dan ketidaksanggupan pemilik rumah untuk
memantau kediamannya setiap saat sebab kesibukan yang dikerjakannya
di luar rumah cukup menyita waktu. Seperti yang dikutip dalam berita
online bahwa kelompok pencuri berhasil membobol rumah kosong dan
mendapatkan hasil curian lebih dari 30 juta dalam sekejap, tanpa ada yang
tahu aksi mereka, sekalipun itu dilakukan pada siang hari (Kompas.com,
2013). Saat seperti itu lah CCTV dibutuhkan oleh masyarakat untuk
memantau keadaan rumahnya. CCTV dimanfaatkan untuk menangkap aksi
kejahatan yang terjadi pada area yang sedang diintai. Dengan melihat hasil
rekaman dari CCTV, pelaku kejahatan dapat diketahui dan dapat ditindak
pada masyarakat menengah keatas saja, melainkan perlu menjangkau
masyarakat menengah kebawah yang membutuhkan sistem keamanan di
rumahnya. Harga CCTV yang cukup mahal membuat sistem keamanan
tersebut hanya dimanfaatkan oleh masyarakat menengah keatas saja.
Hanya dengan CCTV saja tidak cukup untuk menghindari terjadinya
pencurian. CCTV yang banyak dipakai saat ini hanya merekam keadaan
yang di tangkap oleh kamera saja, tanpa memberikan peringatan kepada
pengguna CCTV tersebut.
Usaha-usaha pengembangan CCTV untuk lebih baik dalam
kinerjanya terus dilakukan. Dikembangkan CCTV yang dapat memberikan
peringatan apabila terjadi suatu perubahan kondisi dalam gambar yang
ditangkap kamera. Pada sebuah penelitian sebelumnya telah
dikembangkan adalah Aplikasi Pendeteksi Gerakan Menggunakan Metode
Spatial Domain Dengan Pelaporan Otomatis Ke Telepon Genggam (Sani
M.Isa dan Manatap Dolok Lauro, 2006) dengan menggunakan kamera
webcam. Pada penelitian tersebut, sistem keamanan yang dirancang telah
dapat memberikan peringatan melalui SMS (Short-Messagjng Service)
kepada pemilik rumah saat suatu gerakan terdeteksi. Gambar pada citra
referensi (kondisi awal) akan dibandingkan dengan gambar yang diambil
secara periodik oleh kamera, untuk menentukan apakah terjadi suatu
perubahan dalam gambar yang tertangkap.
Dalam penelitian yang dilakukan kali ini, penulis hendak membuat
bergerak android untuk menjadi CCTV bagi masyarakat dalam memantau
rumahnya. Pemilihan perangkat bergerak android tersebut
mempertimbangkan harga yang cukup terjangkau untuk dimiliki
dibandingkan harga CCTV yang asli. Pada situs jual beli online
amazon.com didapatkan harga CCTV termurah sekitar $123, sementara
untuk harga smartphone android dapat dijangkau dengan harga sekitar
$73. Popularitas dari perangkat Android itu sendiri juga mendukung
penulis dalam memilih perangkat tersebut, karena dimungkinkan sebagian
besar masyarakat sudah memiliki perangkat Android yang kemudian dapat
dimanfaatkan sebagai sistem keamanan dirumahnya.
Pendeteksi perubahan gambar yang tertangkap oleh kamera
smartphone android ini akan menggunakan OpenCV. OpenCV merupakan
program yang membantu dalam kesempatan meng-update penerapan
computer vision sejalan dengan pertumbuhan PC (Personal Computer),
yang digunakan untuk analisis gambar dan pola. Pada OpenCV ini akan
diterapkan teknik Background Substraction. Tujuan dari background
subtraction itu sendiri adalah untuk mendeteksi objek-objek foreground
sebagai perbedaan yang ada antara frame sekarang dan gambar
background dari layar statik.
1. 2. Perumusan Masalah
Berdasarkan latar belakang masalah diatas, rumusan masalah yang
1. Bagaimana cara membantu pemilik rumah dalam memantau kondisi di
rumahnya?
2. Berapa kecepatan maksimum obyek yang dapat tertangkap oleh
sistem?
3. Berapa threshold yang sesuai untuk mendeteksi obyek manusia dalam
suatu ruangan?
Threshold merupakan batas perbedaan antara frame gambar saat ini
dan sebelumnya.
1. 3. Tujuan Penelitian
Melihat permasalahan yang ada, tujuan dari penelitian ini adalah
mengembangkan software kamera pengintai yang berbasis android dan
mampu melaporkan perubahan kondisi kepada pengguna dengan SMS.
1. 4. Batasan Masalah
Dalam penelitian ini, didapatkan batasan-batasan dalam
penyelesaian masalah yang hendak dicapai, yaitu sebagai berikut:
1. Kamera pengintai menggunakan kamera smartphone sebesar 12MP.
2. Kapasitas memori penyimpanan smartphone yang digunakan sebagai
kamera pengintai sebesar 32GB.
3. Peringatan dalam bentuk SMS (Short Message Service).
4. Pengujian menggunakan alat dengan kecepatan maksimum 43 km/jam
6. Keberhasilan dalam pengiriman SMS bergantung penuh pada sinyal
dari operator yang digunakan.
7. Penempatan kamera pengintai harus ditempat dengan intensitas cahaya
yang cukup.
1. 5. Kegunaan
Hasil peringatan tersebut dapat digunakan oleh pemilik rumah
yang tidak di tempat dalam menindaklanjuti perubahan yang terjadi saat
itu dengan cepat, sehingga dapat menghindari hal-hal yang tidak
diharapkan terjadi di rumahnya.
1. 6. Metodologi Penelitian
Metodologi yang digunakan dalam melaksanakan penelitian ini
meliputi:
1.6.1. Analisis
Analisis dilakukan untuk mengetahui hal-hal apa saja yang
dibutuhkan untuk pengembangan sistem. Studi literature digunakan
untuk mengetahui kebutuhan-kebutuhan mengenai pendeteksian
obyek secara real-time serta teknik-teknik pendeteksiannya.
1.6.2. Desain
Desain yang dilakukan meliputi desain use case,
digunakan.
1.6.3. Implementasi
Implementasi dilakukan saat rancangan sistem telah sesuai
dengan desain yang telah dibuat. Pengembangan sistem dilakukan
sesuai dengan model pengembangan perangkat lunak sistem
waterfall (Pressman, 2002).
1.6.4. Pengujian
Pengujian dilakukan untuk melihat kinerja dari sistem yang
telah selesai diimplementasikan. Pengujian dilakukan untuk
mendapatkan kecepatan maksimum dari obyek yang dapat
terdeteksi oleh sistem, serta besarnya threshold yang tepat untuk
kamera pengintai.
1. 7. Sistematika Penulisan BAB I : PENDAHULUAN
Dalam bab ini dijelaskan mengenai latar belakang masalah, perumusan
masalah, tujuan penelitian, batasan masalah, luaran, keguanaan,
metodologi penelitian dan sistematika penulisan pada penelitian ini.
BAB II : LANDASAN TEORI
mendukung penelitian ini.
BAB III : ANALISA DAN PERANCANGAN SISTEM
Dalam bab ini membahas analisa dan perancangan sistem yang akan
dibuat secara umum, rancangan proses, serta rancangan antar muka yang
akan digunakan.
BAB IV : IMPLEMENTASI DAN PENGUJIAN SISTEM
Bab ini membahas implementasi dalam bentuk aplikasi berdasarkan
analisa dan perancangan yang telah dilakukan sebelumnya, serta analisa
hasil implementasi dan pengujian sistem.
BAB V : PENUTUP
Bab ini berisi kesimpulan dan saran dari hasil analisa, implementasi dan
8
BAB II LANDASAN TEORI
2. 1. Pengertian CCTV (Closed-Circuit-Television)
Definisi sederhana dari CCTV adalah sebuah kamera video digital
yang difungsikan untuk memantau suatu ruang dan mengirimkan sinyal
video, dimana sinyal tersebut akan diteruskan ke sebuah layar monitor.
Dapat dikatakan bahwa CCTV merupakan sistem televisi tertutup yang
menggunakann kamera video untuk mengambil gambar maupun video dari
suatu ruangan atau tempat tertentu, yang selanjutnya ditransmisikan ke
penerima dengan menampilkannya dalam monitor. CCTV digunakan
dalam berbagai macam aplikasi yang meliputi keamanan, pencegahan
bencana, promosi penjualan dan layanan informasi, manajemen produksi,
industrial measurement, perawatan kesehatan, serta bidang pendidikan dan
militer.
Meskipun disebut televisi, namun CCTV berbeda dengan televisi
broadcast dimana sinyal ditransmisikan secara tertutup melalui titik-titik
site link wireless, koneksi fiber optic, ataupun menggunakan jaringan
public VPN. CCTV biasanya digunakan untuk area-area tertentu yang
memputuhkan keamanan, seperti bank, pusat pedagangan (retail shop),
badar udara, atau instansi militer. Selain yang telah disebutkan di atas,
perangkat ini juga dapat dimanfaatkan untuk memonitor trafik lalu lintas
oleh masyarakat umum untuk memantau kondisi di sekitar temapt
tinggalnya. Maraknya tidak kejahatan yang dapat terjadi dimana pun dan
kapan pun tersebut membuat pemanfaatan CCTV semakin meluas, tidak
hanya terbatas pada tempat-tempat umum namun juga dapat dimanfaatkan
oleh masing-masing individu yang membutuhkannya untuk memberikan
suatu system keamanan bagi lingkungannya.
2. 2. Citra Digital
2.2.1. Pengertian Citra Digital
Citra adalah gambar pada bidang dua dimensi yang
menggambarkan suatu visualisasi obyek. Dalam tinjauan
matematis, citra merupakan fungsi kontinu dari intensitas cahaya
pada bidang dua dimensi. Citra dapat diwujudkan dalam bentuk
tercetak ataupun digital. Citra digital merupakan sebuah larik
(array) yang berisi nilai-nilai real maupun komplek yang
direpresentasikan dengan deretan bit tertentu. Suatu citra dapat
didefinisikan sebagai fungsi (x,y) berukuran M baris dan N kolom,
dengan x dan y adalah koordinat spasial, dan amplitudo f di titik
koordinat (x,y) dinamakan intensitas atau tingkat keabuan dari citra
pada titik tersebut. Apabila nilai x, y, dan nilai amplitudo f secara
keseluruhan berhingga (finite) dan bernilai diskrit maka dapat
dikatakan bahwa citra tersebut adalah citra digital.
x,y) disebut dengan picture elements, image elements, pels, atau
pixels. Dalam komputer, citra digital disimpan sebagai suatu file
dengan format tertentu. Format citra tersebut menunjukan cara
sebuah citra digital disimpan.
2.2.2. Piksel
Setiap pixel mewakili tidak hanya satu titik dalam sebuah
citra, melainkan sebuah bagian berupa kotak yang merupakan
bagian terkecil (sel). Nilai dari sebuah pixel haruslah dapat
menunjukkan nilai rata-rata yang sama untuk seluruh bagian dari
sel tersebut. Berikut merupakan model citra untuk menunjukan
pixel:
Gambar 2. 1 : Model Citra
kolom
baris
2.2.3. Pengolahan Citra Digital
Pengolahan citra merupakan pemrosesan pada citra atau
gambar dengan cara memproses numerik dari gambar tersebut
untuk menghasilkan suatu citra yang lain. Pemrosesan tersebut
dilakukan pada masing-masing pixel atau titik dari citra yang
hendak diolah. Pengolahan citra tersebut bertujuan untuk mengolah
gambar sehingga menghasilkan gambar lain yang sesuai dengan
keinginan.
2.2.4. Format File Citra
Format file citra standar yang digunakan saat ini terdiri dari
beberapa jenis. Format-format ini digunakan dalma menyimpan
citra dalam sebuah file. Setiap format memiliki karakteristik
masing-masing. Beberapa format umum digunakan saat ini adalah
Bitmap (.bmp), Tagged Image Format (.tif, .tiff), Portable Network
Graphics (.png), JPEG (.jpg), MPEG (.mpg), Graphics
Interchange Format (.gif), RGB (.rgb), RAS (.ras), Postscript (.ps,
.eps, .epfs), Portable Image File Format, PPM, PGM, PBM.
2.2.5. Threshold
Threshold adalah image processing dimana melakukan
pengolahan pixel pada suatu citra atau menghilangkan beberapa
menghasilkan citra baru hasil sortir pixel yang telah dilakukan.
Dalam computer vision, threshold digunakan agar dapat
mempermudah dalam proses identifikasi ataupun perbandingan
dari dua atau lebih citra. Berikut adalah fungsi threshold terhadap
suatu citra pada persamaan (1):
Dalam threshold sendiri pada dasarnya ada dua operasi.
Pertama menggunakan fungsi prediksi dari suatu koordinat pada
suatu citra yaitu sumbu g(x,y) dan h(x,y) yang konstan dilakukan
di dalam citra. Sementara itu, cara kedua dengan melakukan
perbandingan dari hasil perbandingan sebelumnya dengan fungsi
h(x,y) dengan tujuan untuk mengekstrak daerah brightness dan
contrast. Hasil threshold dari suatu image biasanya akan dipakai
dalam berbagai teknik dalam computer vision seperti pencarian
contour, penggambaran contour dan tracking atau motion.
2.3. Android
Android merupakan system operasi yang dikembangkan untuk
perangkat mobile berbasis Linux. Pada awalnya system operasi ini
dikembangkan oleh Android Inc. yang kemudian dibeli oleh Google pada
tahun 2005. Sistem operasi Android dibangun berdasarkan kernel Linux
2.3.1. Applications
Lapisan ini adalah lapisan aplikasi, serangkaian aplikasi
akan terdapat pada perangkat mobile. Aplikasi inti yang telah
terdapat pada Android termasuk kalender, kontak, SMS, dan lain
sebagainya. Aplikasi-aplikasi ini ditulis dengan Bahasa
pemrograman Java.
2.3.2. Application Framework
Pengembang aplikasi memiliki akses penuh ke Android
sama dengan aplikasi inti yang telah tersedia. Pengembang dapat
dengan mudah mengakses infromasi lokasi, mengatur alarm,
menambahkan pemberitahuan ke status bar dan lain sebagainya.
Arsitektur aplikasi ini dirancang untuk menyederhanakan
penggunaan kembali komponen, aplikasi apa pun dapat
memublikasikan kemampuan dan aplikasi lain dapat menggunakan
kemampuan mereka sesuai batasan keamanan.
2.3.3. Libraries
Satu set libraries dalam Bahasa C/C++ yang digunakan
oleh berbagai komponen pada system Android.
2.3.4. Android Runtime
fungsi yang tersedia di libraries inti dari Bahasa pemrograman
Java. Setiap aplikasi akan berjalan sebagai proses sendiri pada
Dalvik Virtual Machine (VMM).
2.3.5. Linux Kernel
Android bergantung pada Linux versi 2.6 untuk layanan
sistem inti seperti keamanan, manajemen memeori, manajemen
proses, network stack, dan model driver. Kernel juga bertindak
sebagai lapisan antara hardware dan seluruh software.
Gambar 2. 2 : Arsitektur Android
2.3.6. Kamera
Kamera merupakan sensor paling terlihat dan sering
yaitu cara pertama dengan mendeklarasikan intent dan cara kedua
dengan class Camera, yang menyediakan antarmuka kamera
custom yang bias digunakan sesuai kebutuhan. Pada cara kedua,
diperlukan user permission untuk androidmanifest.xml. Pada
Android, kamera diakses dengan menggunakan class Camera dan
SurfaceView.
Class Camera meungkinkan Anda mengubah setting,
preview, dan mengambil gambar diam dari kamera. Class
SurfaceView ini digunakan untuk menampilkan preview dari user.
Untuk memakai fitur kamera, Anda harus menggunakan
permission di manifest, yaitu dengan
android.permission.CAMERA permission.
2.4. Open Computer Vision (OpenCV)
OpenCV merupakan framework untuk membantu dalam
membangun sistem yang menggunakan teknologi Computer Vision yang
mendukung terhadap Intel Image Processing library (IPL). OpenCV
merupakan Open Source Computer Vision library dijalankan dibawah
Linux, Windows, dan MacOS X. OpenCV didesain utnuk efisiensi
komputasi dan dengan fokus yang kuat pada aplikasi realtime. Salah satu
tujuan OpenCV adalah menyediakan infrastruktur computer vision
sederhana untuk digunakan yang membantu seseorang membangun
dari 500 fungsi yang mencakup banyak ruang lingkup dalam vision,
termasuk inspeksi produk pabrik, pencitraan medis, keamanan, user
interface, kalibrasi kamera, stereo vision, dan robotika.
2.4.1. Background Subtraction
Metode Background Subtraction merupakan metode yang
digunakan untuk melihat perbedaan antara current image dan
background image untuk mendeteksi obyek bergerak. Setelah
background image B(X,Y) diperoleh, kurangi background image
B(X,Y) dari current frame F(X,Y). Jika perbedaan piksel lebih
besar dari threshold T yang ditetapkan, maka diketahui bahwa
piksel tersebut muncul dari obyek yang bergerak, jika tidak
merupakan piksel background. Rumus yang didapatkan adalah
sebagai berikut:
Dalam OpenCV terdapat operasi pemrosesan gambar
dengan menggunakan metode Background Subtraction. Salah
satunya adalah absdiff(). Fungsi dari absdiff() itu sendiri adalah
untuk menghitung perbedaan mutlak per-elemen antara dua array
atau antara array dan skalar. Fungsi absdiff() tersebut adalah
Keterangan parameter untuk fungsi absdiff() di atas adalah
sebagai berikut:
src1 : input array atau scalar pertama
src2 : input array atau scalar kedua
dst : output array yang mempunyai ukuran yang
sama dan tipe sebagai input array.
2.5. SMS (Short Message Service)
SMS (Short Message Service) atau Layanan Pesan Singkat
memungkinkan pesan teks yang akan dikirim dan diterima ke dan dari
telepon seluler. Teks dapat terdiri dari kata-kata atau angka atau kombinasi
keduanya. Setiap pesan singkat hingga 160 karakter ketika huruf latin
digunakan, dan 70 karakter ketika huruf non-latin yang digunakan.
Framework android menyediakan akses penuh ke fungsi SMS
menggunakan class SmsManager. Versi awal android meletakkan
SmsManager di paket android.telephony.gsm. Tetapi, sejak Android 1.5 di
mana smsManager mendukung standar GSM dan CDMA, maka
SmsManager sekarang digantikan di paket android.telephony.
2.6. Intents
Android menggunakan class Intent untuk melakukan aksi, berubah
dari layar satu ke layar yang lain. Dua hal utama yang perlu diperhatikan
dibawa. Aksi yang dilakukan dinyatakan dengan perintah seperti VIEW,
PICK, EDIT, dan sebagainya. Sedangkan datanya dinyatakan pada URI
(Uniform Resource Indicator). Sebuah class intent tidak dapat melakukan
sendiri, namun membutuhkan sebuah intent filter dan intent receiver.
Intent receiver akan menerima semua activity yang diberikan, kemudian
oleh intent filter akan dipilih aksi mana yang akan dijalankan.
Intents merupakan bagian utama dari aplikasi, yaitu activities,
services, dan broadcast recievers yang diaktifkan melalui pesan. Intents
melayani mekanisme untuk melewatkan pesan antar aplikasi maupun
dalam aplikasi itu sendiri. Intents juga dapat digunakan untuk memulai
activity. Dengan intents dapat menyiarkan action yang diinginkan
(misalnya: menelepon) melalui system ke aplikasi lain untuk
menanganinya. Singkatnya, intent ini digunakan jika Anda ingin berpindah
dari satu activity ke activity lainnya.
2.7. Gerak Melingkar Beraturan
Gerak melingkar beraturan adalah keadaan dimana sebuah benda
bergerak dengan kelajuan sudutnya (ω = ϴ) tetap/konstan, dengan jari-jari
(r) yang juga tetap/konstan.
2.7.1. Pengertian Radian
Satu radian adalah besarnya sudut tengah lingkaran yang
panjang busurnya sama dengan jari-jarinya.
Jika panjang busur sama dengan jari-jari, maka ϴ = 1
radian. Satu radian dipergunakan untuk menyatakan posisi suatu
titik yang bergerak melingkar (beraturan maupun tak beraturan)
atau dalam gerak rotasi. Keliling lingkaran = 2π × radius, gerakan
melingkar dalam 1 putaran = 2π radian.
2.7.2. Kecepatan Linier dan Kecepatan Sudut
Kecepatan linier yang diberi notasi v adalah jalan sepanjang
keliling lingkaran (2πR) yang ditempuh dalam waktu T detik.
Kelajuan partikel P untuk mengelilingi lingkaran dapat
dirumuskan:
Kecepatan anguler (sudut) yang diberi notasi ω adalah
perubahan dari perpindahan sudut persatuan waktu (setiap saat).
Biasanya dinyatakan dalam radian/detik, derajat perdetik, putaran
perdetik (rps) atau putaran permenit (rpm).
Bila benda melingkar beraturan dengan sudut rata-rata (ω)
Jika 1 putaran, maka:
Dengan demikian, besarnya sudut yang ditempuh dalam 1 detik:
21
BAB III
ANALISA DAN PERANCANGAN SISTEM
Gambaran besar mengenai sistem yang akan dibangun dapat dilihat pada
diagram blok di bawah ini:
Gambar 3. 1. Diagram Blok
Input pertama merupakan gambar background yang kemudian akan
dibandingkan dengan input kedua yaitu gambar frame. Sistem kamera pengintai
berbasis android akan memproses keduanya untuk mengetahui perubahan yang
terjadi dari perbedaan antar kedua gambar terseut. Jika sistem mendapatkan
adanya perubahan antara kedua gambar tersebut, maka sistem akan menghasilkan
output berupa peringatan/notifikasi berupa SMS yang ditujukan kepada pengguna
sistem.
Tugas akhir ini dikembangkan melalui tahapan atau proses pengembangan
perangkat lunak. Tahapan tersebut meliputi:
3. 1. Identifikasi
Sebuah sistem yang akan dibangun ini merupakan sistem kamera
pengintai berbasis android. Sistem ini diharapkan mampu mendeteksi
obyek yang tertangkap oleh kamera dan mampu memberikan peringatan Gambar
Background
Sistem Kamera Pengintai
Berbasis Android
SMS
Gambar
Frame
Input 1
Input 2
kepada user secara real time (saat terdeteksi obyek). Sistem tersebut
menerapkan teknik background subtraction dalam pemrosesan citra. Citra
yang akan diolah merupakan hasil penangkapan gambar pada ruangan
yang hendak diintai. Penanganan keamanan pada sistem kamera pengintai
ini dilakukan dengan mengirimkan suatu peringatan berupa SMS (Short
Message Service) secara otomatis kepada user saat terdapat perubahan
pada ruangan yang terekam oleh sistem ini.
3. 2. Perancangan 3.2.1. Usecase
Use case mendeskripsikan sebuah interaksi satu atau lebih
aktor dengan sistem atau aplikasi yang akan dibuat. Secara umum,
Use case dibuat untuk mengetahui fungsi apa saja yang ada di
dalam sistem/aplikasi dan siapa saja yang berhak menggunakan
fungsi-fungsi dalam aplikasi tersebut.
Pengguna pada sistem ini hanya satu. Fungsi yang dapat
dijalankan oleh pengguna pada system ini adalah fungsi menerima
SMS (Short Message Service) / alert, mengatur nomor telpon, dan
mengatur threshold. Diagram use case dari sistem kamera
Gambar 3. 2 : Diagram Usecase
Tabel 3.1. di bawah ini merupakan gambaran umum mengenai
Usecase yang terdapat pada sistem kamera pengintai.
Tabel 3. 1. Gambaran Umum Usecase Nomor
Use Case
Nama
Usecase Deskripsi Aktor
CCTV-001
Mengaktif kan/Mema tikan Sistem
Use case ini menggambarkan proses mengaktifkan/mematikan sistem. Pengguna harus menekan sebuah tombol yang tersedia agar sistem dapat aktif.
Pengguna
CCTV-002
Mengatur Nomor Telpon
Use case ini menggambarkan proses input data nomor telpon pada bagian pengaturan sistem.
Pengguna
CCTV-003
Mengatur Threshold
Use case ini menggambarkan proses input data threshold sebagai batas nilai ambang gambar yang ditangkap oleh sistem.
Pengguna
CCTV-004
Menerima Pesan Singkat (SMS)
Use case ini menggambarkan proses diterimanya pesan singkat oleh pengguna sebagai peringatan yang dikirimkan oleh sistem.
Pengguna
3.2.2. Narasi Use Case
Setiap use case pada bagian sebelumnya akan dijelaskan
lebih rinci dalam sebuah narasi yang merupakan deskripsi tekstual
dari kejadian bisnis dan bagaimana pengguna berinteraksi dengan
Pemilik Rumah Menerima SMS / Alert
Mengatur nomor telpon
sistem untuk menyelesaikan tugas tersebut. Narasi dari diagram
use case di atas, dapat dilihat pada lampiran 1.
3.2.3. Diagram Aktivitas
Diagram aktivitas merupakan diagram yang menjelaskan
aktivitas pengguna dengan sistem.
3.2.3.1. Diagram Aktivitas Mengaktifkan/Mematikan Sistem
Sistem kamera pengintai aktif Tekan tombol Start/Stop
Aktor Sistem
Berhenti?
Ya
Tekan tombol Start/Stop Sistem kamera pengintai tidak aktif
3.2.3.2. Mengatur Nomor Telpon
Menampilkan halaman Settings Tekan menu Settings
Aktor
Pilih pengaturan Set Phone Number
Memasukkan nomor telpon user
Ada?
Ya
Ganti nomor telpon yang ada dengan yang
baru dimasukkan.
Tidak
Sistem
Buat file baru. Simpan nomor
telpon. Tekan OK
Tidak
Cek file nomor telpon
Simpan?
Ya
3.2.3.3. Mengatur Threshold
Menampilkan halaman Settings Tekan menu Settings
Aktor
Pilih pengaturan Set Threshold
Memasukkan besarnya threshold
Sistem
Tekan OK
Tidak
Simpan?
Ya
Tekan Cancel
Ada?
Ya
Ganti threshold yang ada dengan yang baru
dimasukkan.
Tidak
Buat file baru. Simpan threshold.
3.2.3.4. Menerima Pesan Singkat/SMS
Aktor Sistem
Ambil gambar dengan kamera
Ya
Ada perubahan?
Tidak
Kirim pesan singkat
28
3.2.4. Diagram Sekuen
3.2.4.1. Mengaktifkan/Mematikan Sistem
Pengguna MainActivity.java SurfacePreview.java onCreate
(Bundle savedInstanceState) activity_main.xml
findViewById (R.id.button) Buka aplikasi
Klik tombol Start/Stop Motion Detector
onResume()
open() onClick(View arg0)
Camera.java
SurfacePreview (this, mCamera) DetectMotion()
Gambar tertangkap kamera Tampilkan pada layar
29
3.2.4.2. Mengatur Nomor Telpon
Pengguna MainActivity.java onCreate
(Bundle savedInstanceState) settings.xml
Buka menu
Pilih menu Settings
onActivityResult
(int requestCode, int resultCode, Intent data)
SavePhone()
UserSettingActivity.java
Pilihan menu
Pilih menu Set Phone Number
File.java
30
3.2.4.3. Mengatur Threshold
Pengguna MainActivity.java onCreate
(Bundle savedInstanceState) settings.xml
Buka menu
Pilih menu Settings
onActivityResult
(int requestCode, int resultCode, Intent data)
SaveThreshold()
UserSettingActivity.java
Pilihan menu
Pilih menu Set Threshold
File.java
31
3.2.4.4. Menerima Pesan Singkat/SMS
Pengguna MainActivity.java
FileOutputStream.java Citra digital
Sistem aktif
isMotionDetected
(byte[] data1, byte[] data2, byte[] data3)
write(data) savePicture(byte[] data) Camera.java
sendSMS
(String phoneNumber, String message)
Core.java
absdiff(mat2, mat1, d1)
absdiff(mat3, mat1, d2)
bitwise_and(d1, d2, result)
norm(result)
SmsManager.java
sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI) Pesan Singkat Dikirim
32
3.2.5. Diagram Kelas
Activity
MainActivity
SurfacePreview
SurfaceView SurfaceHolder
UserSettingActivity PreferenceActivity
activity_main
settings
SmsManager Camera
File Core
3.2.6. Antarmuka
3.2.6.1. Antarmuka Sistem
Antarmuka yang digunakan merupakan
antarmuka sederhana yang menampilkan sebuah citra
yang tertangkap oleh kamera pada smartphone android.
Diperlukan sebuah tombol start/stop untuk memulai
atau menghentikan kerja sistem dalam menangkap
gambar. Gambaran dari antarmuka sistem ini dapat
dilihat pada gambar berikut:
Gambar 3. 2 : Antarmuka Sistem
3.2.6.2. Antarmuka Menu Sistem
Antarmuka menu pada sistem ini cukup
sederhana. Hanya terdapat satu menu yang dapat
Start/stop motion detector
digunakan oleh pengguna, yaitu menu Settings.
Gambar 3. 3 : Antarmuka Menu Sistem
3.2.6.3. Antarmuka Menu Item Sistem
Terdapat dua buah menu item pada pilihan
menu Settings, yakni menu item untuk mengatur nomor
telpon dan menu item untuk mengatur threshold.
Berikut merupakan gambaran menu item yang
disediakan:
Start/stop motion detector
Settings
Gambar 3. 4 : Antarmuka Menu Item Sistem
Saat memilih menu item Set Phone Number,
maka tampilannya akan seperti gambar dibawah ini:
Gambar 3. 5 : Antarmuka Set Phone Number
SETTINGS
Set Phone Number
Set Threshold
SETTINGS
Set your phone number
Set the threshold
Set Phone Number
Saat memilih menu item Set Threshold, maka
tampilannya akan seperti gambar dibawah ini:
Gambar 3. 6 : Antarmuka Set Threshold
3.2.7. Desain Proses
Proses 1. Menyimpan nomor telpon tujuan
Proses ini untuk mengatur penyimpanan nomor ponsel dari
user sebagai penerima pesan singkat (SMS) dari sistem. Cara kerja
dari proses ini dijelaskan dengan pseudocode berikut:
1. Mulai.
2. Baca nomor telpon.
3. Tentukan lokasi penyimpanan file.
4. Jika file belum ada, lakukan langkah 5.
5. Buat file baru.
6. Tulis nomor telepon yang dibaca ke dalam file tersebut.
Set Threshold
7. Selesai
Proses 2. Menyimpan threshold
Proses ini untuk mengatur penyimpanan threshold yang
berguna untuk pendeteksi obyek. Cara kerja dari proses ini
dijelaskan dengan pseudocode berikut:
1. Mulai.
2. Baca threshold.
3. Tentukan lokasi penyimpanan file.
4. Jika file belum ada, lakukan langkah 5.
5. Buat file baru.
6. Tulis threshold yang dibaca ke dalam file tersebut.
7. Selesai.
Proses 3. Merubah gambar menjadi matriks
Proses ini untuk merubah gambar yang tertangkap kamera
menjadi bentuk matriks agar lebih mudah untuk dilakukan
pemrosesan lebih lanjut. Cara kerja dalam proses ini dijelaskan
dalam pseudocode berikut:
1. Mulai.
2. Baca ukuran gambar Bitmap masukkan dalam variabel bitmap.
3. Baca ukuran panjang gambar bitmap sebagai kolom matriks,
Masukkan dalam variabel tmp.
4. Ubah gambar Bitmap menjadi Matriks berdasarkan bitmap dan
tmp.
5. Selesai.
Proses 4. Mendeteksi Obyek
Peoses ini untuk mendeteksi perubahan yang terdapat pada
gambar yang ditangkap dengan memproses matriks dari gambar
awal dengan gambar setelahnya. Cara kerja dalam proses ini
dijelaskan dalam pseudocode berikut:
1. Mulai.
2. Panggil method untuk merubah gambar menjadi matriks
dengan menampung inputan dari parameter berupa byte array
data1, data2, dan data3 yang selanjutnya disimpan dalam
matriks mat1, mat2, dan mat3.
3. Simpan panjang dan lebar dari mat1 ke dalam matriks d1, d2,
dan result.
4. Panggil method absdiff untuk menghitung perbedaan antara
matriks mat2, mat1, dan d1.
5. Panggil method absdiff untuk menghitung perbedaan antara
matriks mat3, mat1, dan d2.
6. Panggil method bitwise_and untuk menghitung bit pada d1, d2,
7. Panggil method getThreshold untuk mendapatkan nilai
threshold yang telah disimpan.
8. Set threshold gambar dari matriks result
9. Panggil method norm untuk menormalisasi matriks result.
10.Selesai.
Proses 5. Menyimpan gambar
Proses ini untuk menyimpan gambar yang tertangkap oleh
kamera sebagai dokumentasi untuk user. Cara kerja dalam proses
ini dijelakan dalam pseudocode berikut:
1. Mulai.
2. Tentukan lokasi penyimpanan beserta format nama gambar
yang disimpan.
3. Baca array byte dari gambar dan tulis dalam file gambar.
4. Selesai.
Proses 6. Mengirim pesan singkat (SMS)
Proses ini untuk mengirim pesan singkat yang berisi
peringatan bagi user. Cara kerja dalam proses ini dijelaskan dalam
pseudocode berikut:
1. Mulai.
2. SENT = “SMS_SENT”.
4. Buat sebuah PendingIntent untuk menyimpan informasi
SMS_SENT.
5. Buat sebuah PendingIntent untuk menyimpan informasi
SMS_DELIVERED.
6. Saat sms terkirim, buat IntentFilter untuk SENT, kemudian
lakukan langkah 7 sampai 11
7. Jika RESULT_OK, tampilkan informasi “SMS sent”.
8. Jika RESULT_ERROR_GENERIC_FAILURE, tampilkan
informasi “Generic failure”.
9. Jika RESULT_ERROR_NO_SERVICE, tampilkan informasi
“No service”
10.Jika RESULT_ERROR_NULL_PDU, tampilkan informasi
“Null pdu”
11.Jika RESULT_ERROR_RADIO_OFF, tampilkan informasi
“Radio off”
12.Saat sms dikirim, buat IntentFilter untuk DELIVERED,
kemudian lakukan langkah 13 sampai 14.
13.Jika RESULT_OK, tampilkan informasi “SMS delivered”
14.Jika RESULT_CANCELED, tampilkan informasi “SMS not
delivered”
15.Buat SmsManager default dan simpan dalam variabel sms.
16.Panggil method sendTextMessage dari sms tersebut dengan
informasi SENT dan DELIVERED.
17.Selesai.
Proses 7. Membaca file nomor telpon
Proses ini untuk membaca file nomor telpon pada memori
yang telah disimpan sebelumnya dalam pengaturan yang ada dalam
aplikasi. Cara kerja dalam proses ini dijelaskan dalam pseudocode
berikut:
1. Mulai.
2. Baca lokasi penyimpanan file nomor telpon.
3. Baca ukuran file simpan dalam fileSize.
4. Buat array byte dari fileSize simpan dalam byteArray
5. Baca byteArray.
6. Selama i = 0 dan i kurang dari fileSize lakukan langkah 7.
7. Baca byteArray simpan dalam temp.
8. Kembalikan temp.
9. Selesai.
Proses 8. Membaca file threshold
Proses ini untuk membaca file yang menyimpan nilai
threshold pada memori yang telah disimpan sebelumnya dalam
pengaturan yang ada dalam aplikasi. Cara kerja dalam proses ini
1. Mulai.
2. Baca lokasi penyimpanan file threshold.
3. Baca ukuran file simpan dalam fileSize.
4. Buat array byte dari fileSize simpan dalam byteArray
5. Baca byteArray.
6. Selama i = 0 dan i kurang dari fileSize lakukan langkah 7.
7. Baca byteArray simpan dalam temp.
8. Kembalikan temp.
9. Selesai.
Proses 9. Mengaktifkan fungsi peringatan
Proses ini untuk mengaktifkan fungsi peringatan berupa
pengiriman pesan singkat (SMS) dan penyimpanan gambar saat
terdeteksi obyek yang tertangkap kamera. Cara kerja dalam proses
ini dijelaskan dalam pseudocode berikut:
1. Mulai.
2. Jika data1 dan data 2 tidak null, lakukan langkah 3 sampai 13.
3. Panggil method pendeteksi obyek.
4. Jika hasil dari proses pendeteksi obyek lebih besar dari batasan
ynag diberikan, lakukan langkah 5 sampai 12
5. isDetected = true.
6. Uba kumpulan array dalam data0 menjadi bentuk Bitmap dan
7. Buat thread, lalu tampilkan bitmap dalam layar.
8. Jika isDetected = true, lakukan langkah 9 sampai 12
9. Panggil method penyimpanan gambar untuk menyimpan data0.
10.Buat pesan yang ingin dikirimkan kepada user.
11.Panggil method baca file nomor telpon.
12.Panggil method kirim pesan singkat dengan input pesan dan
nomor telpon yang ada.
13.isDetected = false.
14.Beri waktu thread untuk berhenti.
15. Kembalikan null.
16.Selesai.
3.3. Implementasi
3.3.1. Atribut dan Method
Tabel 3. 2. Atribut dan Method
No Nama Kelas Implementasi Kelas No. Table
1 MainActivity MainActivity.java Tabel 3.3
2 UserSettingActivity UserSettingActivity.java Tabel 3.4
3 SurfacePreview SurfacePreview.java Tabel 3.5
3.3.1.1. MainActivity
Tabel 3. 3. Implementasi Kelas MainActivity.java Atribut:
private Camera mCamera = null;
private Button button, start;
private SurfacePreview view;
public byte[] data0 = null;
public byte[] data1 = null;
private Context context;
private boolean isDetected;
private EditText noHp;
private static final int RESULT_SETTINGS = 1;
Method:
1. private void captureNextPicture()
Input: -
Output: Mengambil gambar dengan kamera
Algoritma:
a. if (capturePictures){
b. if (mCamera == null) {
c. mCamera = Camera.open()
d. view = new SurfacePreview(this, mCamera)
e. mCamera.setPreviewDisplay(view.getHolder())
f. mCamera.startPreview(){
2. protected void onCreate(Bundle savedInstanceState)
Input: savedInstanceState
Output: Tampilan awal “Motion Detector”
Algoritma:
a. super.onCreate(savedInstanceState)
b. setContentView(R.layout.activity_main)
c. button = (Button) findViewById(R.id.button)
d. SaveThreshold();
e. SavePhone();
3. public boolean onCreateOptionsMenu(Menu menu)
Input: Pilihan menu
Output: Tersedia menu Settings
Algoritma:
a. getMenuInflater().inflate(R.menu.settings, menu);
b. return true;
4. public boolean onOptionsItemSelected(MenuItem item)
Input: Menu item yang dipilih.
Output: Tampil halaman menu yang dipilih.
Algoritma:
a. switch (item.getItemId()) {
Intent i = new Intent(this, UserSettingActivity.class);
startActivityForResult(i, RESULT_SETTINGS);
break;
c. return true;
5. protected void onActivityResult(int requestCode, int resultCode, Intent data)
Input: requestCode, resultCode, data
Output: Pengaturan yang dilakukan tersimpan.
Algoritma:
a. super.onActivityResult(requestCode, resultCode, data);
b. switch (requestCode) {
case RESULT_SETTINGS:
SaveThreshold();
SavePhone();
6. protected void onPause()
Input: -
Ouput: Sistem dihentikan sementara.
Algoritma:
a. super.onPause();
b. if (mCamera != null) {
mCamera = null;
}
c. capturePictures = false;
7. protected void onResume()
Input: -
Output: Sistem kamera dijalankan
Algoritma:
a. super.onResume();
b. context = getApplicationContext();
c. mCamera = Camera.open();
d. button.setOnClickListener(new onClickListener(){
public void onClick(View arg0) {
if (capturePictures) {
capturePictures = false;
} else {
capturePictures = true;
captureNextPicture();
}
}
});
e. mCamera.setPreviewCallback(mPreviewCallback);
BaseLoaderCallback(this){
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS: {
}
break;
default: {
super.onManagerConnected(status);
}
break;
}
}
};
g. If(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION
_2_4_2, this, MyOpenCVCallBack)) {
}
8. private Mat convertToMat(byte[] data)
Input: data
Output: Matriks
Algoritma:
a. Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,
b. Mat tmp = new Mat(bitmap.getWidth(), bitmap.getHeight(),
CvType.CV_8UC1);
c. Utils.bitmapToMat(bitmap, tmp);
d. Return tmp;
9. private double isMotionDetected(byte[] data1, byte[] data2, byte[] data3)
Input: data1, data2, data3
Output: hasil pengurangan matriks
Algoritma:
a. Mat mat1 = convertToMat(data1);
b. Mat mat2 = convertToMat(data2);
c. Mat mat3 = convertToMat(data3);
d. Mat d1 = new Mat(mat1.width(), mat1.height(), mat1.type());
e. Mat d2 = new Mat(mat1.width(), mat1.height(), mat1.type());
f. Mat result = new Mat(mat1.width(), mat1.height(), mat1.type());
g. Core.absdiff(mat2, mat1, d1);
h. Core.absdiff(mat3, mat1, d2);
i. Core.bitwise_and(d1, d2, result);
j. float thres = 0;
k. try{
thres = Float.valueOf(getThreshold());
e.printStackTrace();
}
l. float threshEnd = (thres/100) * 255;
m. Imgproc.threshold(result, result, thresEnd, 255,
Imgproc.THRESH_BINARY);
n. double value = Core.nor(result);
o. return value;
10. private void savePicture(byte[]data)
Input: data
Output: gambar tersimpan.
Algoritma:
a. FileOutputStream outStream = null;
b. try{
outStream = new
FileOutputStream(String.format("/sdcard/Skripsi/MotionPict/%d.j
pg", System.currentTimeMillis()));
outStream.write(data);
outStream.close();
Log.d("Cam On", "onPictureTaken - wrote bytes: " +
data.length);
} catch (FileNotFoundException e) {
} catch (IOException e) {
e.printStackTrace();
} finally {
}
c. Log.d(“Cam on”, “onPictureTaken –jpeg”);
11. private void sendSMS(String phoneNumber, String message)
Input: phoneNumber, message
Output: SMS dikirim
Algoritma:
a. String SENT = "SMS_SENT";
b. String DELIVERED = "SMS_DELIVERED";
c. PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new
Intent(SENT), 0);
d. PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new
Intent(DELIVERED), 0);
e. registerReceiver(new BroadcastReceiver() {
public void onReceive(Context arg0, Intent arg1) {
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS sent",
Toast.LENGTH_SHORT).show();
case
SmsManager.RESULT_ERROR_GENERIC_FAILURE:
Toast.makeText(getBaseContext(), "Generic
failure", Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NO_SERVICE:
Toast.makeText(getBaseContext(), "No service",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_NULL_PDU:
Toast.makeText(getBaseContext(), "Null PDU",
Toast.LENGTH_SHORT).show();
break;
case SmsManager.RESULT_ERROR_RADIO_OFF:
Toast.makeText(getBaseContext(), "Radio off",
Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(SENT));
f. registerReceiver(new BroadcastReceiver() {
public void onReceive(Context arg0, Intent arg1) {
case Activity.RESULT_OK:
Toast.makeText(getBaseContext(), "SMS
delivered", Toast.LENGTH_SHORT).show();
break;
case Activity.RESULT_CANCELED:
Toast.makeText(getBaseContext(), "SMS not
delivered", Toast.LENGTH_SHORT).show();
break;
}
}
}, new IntentFilter(DELIVERED));
g. SmsManager sms = SmsManager.getDefault();
h. sms.sendTextMessage(phoneNumber, null, message, sentPI,
deliveredPI);
Untuk method nomor 12 dan 13 merupakan bagian dalam private class
DetecMotion extends AsyncTask>byte[], Void, Void>
12. protected Void doInBackground(byte[] . . . params)
Input: data
Output: -
Algoritma:
a. byte[] data0 = params[0];
c. byte[] data2 = params[2];
d. if (data1 != null && data2 != null) {
if (isMotionDetected(data0, data1, data2) > 10000.0) {
isDetected = true;
final Bitmap bitmap =
BitmapFactory.decodeByteArray(data0, 0, data0.length);
runOnUiThread(new Runnable() {
public void run() {
ImageView imageView = (ImageView)
findViewById(R.id.imdageView);
imageView.setImageBitmap(bitmap);
Log.i("DetectMotion", "isMotionDetected");
}
});
if (isDetected == true) {
savePicture(data0);
String message = "Motion is detected!! Please make sure
everything's okay there!! ";
try {
sendSMS(getPhone(), message);
} catch (IOException e) {
e.printStackTrace();
}
}
isDetected = false;
}
e. try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
f. return null;
13. protected void onPostExecute(Void result)
Input: result
Output: -
Algoritma:
a. captureNextPicture();
14.private void SaveThreshold()
Input: -
Output: File SaveThreshold.txt
Algoritma:
a. SharedPreferences sharedPrefs =
b. StringBuilder builder = new StringBuilder();
c. builder.append(sharedPrefs.getString("prefThreshold", "0"));
d. File myFile = new
File("/sdcard/Skripsi/Konfigurasi/SaveThreshold.txt");
e. if (!(myFile == null)) {
myFile.createNewFile();
}
f. FileOutputStream fOut = new FileOutputStream(myFile);
g. OutputStreamWriter myOutWriter = new
OutputStreamWriter(fOut);
h. myOutWriter.append(builder.toString());
i. myOutWriter.close();
j. fOut.close();
15. private void SavePhone()
Input: -
Output: File SavePhoneNumber.txt
Algoritma:
a. SharedPreferences sharedPrefs =
PreferenceManager.getDefaultSharedPreferences(this);
b. StringBuilder builder = new StringBuilder();
c. builder.append(sharedPrefs.getString("prefPhonenumber",
d. File myFile = new
File("/sdcard/Skripsi/Konfigurasi/SavePhoneNumber.txt");
e. if (!(myFile == null)) {
myFile.createNewFile();
}
f. FileOutputStream fOut = new FileOutputStream(myFile);
g. OutputStreamWriter myOutWriter = new
OutputStreamWriter(fOut);
h. myOutWriter.append(builder.toString());
i. myOutWriter.close();
j. fOut.close();
16. private String getThreshold()
Input: -
Output: Isi file SaveThreshold
Algoritma:
a. String temp = new String();
b. File inFile = new
File("/sdcard/Skripsi/Konfigurasi/SaveThreshold.txt");
c. FileInputStream inStream = new FileInputStream(inFile);
d. int fileSize = (int) inFile.length();
e. byte[] byteArray = new byte[fileSize];
g. for (int i = 0; i < fileSize; i++) {
temp = temp + (char) byteArray[i];
}
h. Log.i("Threshold Akhir: ", temp);
i. inStream.close();
j. return temp;
17. private String getPhone()
Input: -
Output: Isi file SavePhoneNumber
Algoritma:
a. String temp = new String();
b. File inFile = new
File("/sdcard/Skripsi/Konfigurasi/SavePhoneNumber.txt");
c. FileInputStream inStream = new FileInputStream(inFile);
d. int fileSize = (int) inFile.length();
e. byte[] byteArray = new byte[fileSize];
f. inStream.read(byteArray);
g. for (int i = 0; i < fileSize; i++) {
temp = temp + (char) byteArray[i];
}
h. Log.i("Nomor Hp: ", temp);