• Tidak ada hasil yang ditemukan

Sistem kamera pengintai berbasis android.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Sistem kamera pengintai berbasis android."

Copied!
269
0
0

Teks penuh

(1)

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

(2)

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

(3)

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

(4)

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

(5)

iii

HALAMAN PERSETUJUAN

SKRIPSI

SISTEM KAMERA PENGINTAI BERBASIS ANDROID

Oleh:

Theodorin Hanna Vebrita Kustanto

NIM : 115314020

Telah disetujui oleh

Dosen Pembimbing

(6)

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,

(7)

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

(8)

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,

(9)

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

(10)

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

(11)

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

(12)

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.

(13)

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

(14)

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

(15)

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

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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,

(23)

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

(24)

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

(25)

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

(26)

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.

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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.

(36)

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 (ω)

(37)

Jika 1 putaran, maka:

Dengan demikian, besarnya sudut yang ditempuh dalam 1 detik:

(38)

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

(39)

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

(40)

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

(41)

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

(42)

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

(43)

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.

(44)

3.2.3.4. Menerima Pesan Singkat/SMS

Aktor Sistem

Ambil gambar dengan kamera

Ya

Ada perubahan?

Tidak

Kirim pesan singkat

(45)

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

(46)

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

(47)

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

(48)

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

(49)

32

3.2.5. Diagram Kelas

Activity

MainActivity

SurfacePreview

SurfaceView SurfaceHolder

UserSettingActivity PreferenceActivity

activity_main

settings

SmsManager Camera

File Core

(50)

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

(51)

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

(52)

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

(53)

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

(54)

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,

(55)

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,

(56)

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”.

(57)

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

(58)

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

(59)

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

(60)

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:

(61)

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(){

(62)

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()) {

(63)

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) {

(64)

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);

(65)

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,

(66)

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());

(67)

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) {

(68)

} 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();

(69)

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) {

(70)

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];

(71)

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();

(72)

}

}

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 =

(73)

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",

(74)

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];

(75)

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);

Gambar

Tabel 3. 1. Gambaran Umum Usecase ...............................................................
Gambar 2. 1 : Model Citra
gambar sehingga menghasilkan gambar lain yang sesuai dengan
Gambar 2. 2 : Arsitektur Android
+7

Referensi

Dokumen terkait

bukan makanan yang berpengaruh terhadap nilai Garis Kemiskinan adalah.. biaya perumahan, bensin, listrik dan

Penelitian ini mengajukan desain pengendali hybrid PI dan sliding mode untuk mengendalikan level dan konsentrasi pada sistem CSTR.. Metode pengendali sliding mode mampu

Data-data yang digunakan diperoleh dari berbagai sumber antara lain: ekspor CPO Indonesia di negara-negara Uni Eropa diperoleh dari FAO Statistik, Nilai ekspor

Untuk mengetahui kecerdasan spiritual santri yang melaksanakan sholat lima waktu berjamaah di Pondok Pesantren Yasalami Malang.. Untuk mengetahui pengaruh aktivitas

Hasil dari hitung , F hitung dan nilai Sig menunjukkan bahwa nilai hitung dan F hitung bernilai positif, nilai Sig yang diperoleh lebih kecil dari (0,05),

Sistem Remotely Operated Vehicle pada Robot iSRo menggunakan jalur komunikasi wireless radio frequency sehingga user dapat mengendalikan robot dengan jarak jauh [2]..

The objectives of this research were to know the method used, difficulties faced by the English teachers in teaching ESP and also the interaction between

Tujuan penelitian ini adalah untuk mengetahui pengaruh motivasi, gaya kepemimpinan transaksional dan budaya organisasi terhadap kinerja karyawan bagian produksi