BAB 2
LANDASAN TEORI
2.1 Gambar
Gambar atau citra (image) adalah representasi dari suatu objek nyata baik dalam
bentuk dua dimensi ataupun tiga dimensi menjadi bentuk gambar digital yang
dimengerti oleh komputer (Anil K.Jain, 1989, p2). Gambar dapat disimpan di komputer
dalam berbagai format. Dua tipe gambar yang fundamental adalah vektor dan raster
(bitmap). Gambar vektor disimpan sebagai rangkaian instruksi-instruksi untuk
menggambar objek, sedangkan gambar raster disimpan sebagai elemen-elemen objek
berupa piksel.
Gambar 2.1 Gambar logo pada format raster dan vektor
Melihat hasil pada gambar 2.1 mungkin terlihat bahwa gambar vektor lebih baik
daripada raster, namun hal ini terjadi karena gambar logo masih merupakan gambar
yang sederhana, lain halnya jika digunakan gambar yang lebih kompleks.
7
Gambar 2.2 Gambar gelas kopi pada format raster dan vektor
Pada gambar 2.2 dapat dilihat bahwa penggunaan gambar vektor tidak tepat untuk
gambar-gambar yang kompleks, pada gambar diatas ukuran gambar raster hanya
seperempat dari ukuran gambar vektor. Dapat dibayangkan bila gambar yang digunakan
berupa wajah manusia, hasil dari format vektor akan berukuran sangat besar namun tetap
saja tidak akurat. Karena itulah tiap-tiap format memiliki kelebihan dan kelemahan
masing-masing, gambar vektor lebih baik digunakan untuk gambar-gambar sederhana
seperti logo, font dan semacamnya, sedangkan gambar raster lebih baik digunakan pada
gambar-gambar yang kompleks seperti foto , lukisan, dan semacamnya.
2.2 Gambar raster (Bitmap)
Gambar raster merupakan gambar digital yang tersusun dari sekumpulan titik
penyusun gambar yang disebut piksel (picture-x element). Piksel-piksel penyusun
gambar berkumpul dan bergabung membentuk seperti mozaik kemudian memanipulasi
mata sehingga pada jarak pandang tertentu akan tampak kesan gambar utuh.
Gambar raster bersifat dependent pixel, artinya sangat dipengaruhi oleh banyaknya
piksel penyusun gambar. Semakin banyak piksel-piksel yang menyusun gambar raster,
8
maka kualitasnya akan semakin baik sehingga gambar terlihat halus. Sebaliknya,
semakin sedikit piksel-piksel yang menyusun suatu gambar, maka kualitasnya akan
semakin kurang sehingga gambar terlihat kasar.
Ukuran gambar (image size) menyatakan ukuran banyaknya pixel penyusun
gambar raster yang dinyatakan dalam matrik 2 dimensi, yaitu (X × Y) Piksel, dimana X
menyatakan ukuran banyaknya piksel perbaris pada arah horizontal sedangkan Y
menyatakan ukuran banyaknya piksel perkolom pada arah vertikal. Sebagai contoh,
gambar raster berukuran 800×600 piksel, terdiri dari 800×600 piksel = 480.000 piksel,
dengan susunan 800 piksel setiap baris pada arah horizontal dan 600 piksel setiap kolom
pada arah vertikal.
2.3 Format warna gambar digital
Gambar digital umumnya direpresentasikan dalam format warna RGB (merah,
hijau, biru ). Setiap piksel diwakilkan oleh gabungan dari ketiga warna ini, yang mana
masing-masing bernilai antara 0 sampai dengan 255. Sebagai contoh, warna ungu
dinyatakan dengan nilai 255 untuk merah(R), 0 untuk hijau(G), dan 255 untuk biru(B).
Gambar 2.3 RGB color space
9
Gambar digital juga dapat direpresentasikan dalam format monokrom atau sering
disebut grayscale, pada format ini gambar disimpan dalam 8 bit integer yang
memberikan 256 kemungkinan yang mana dimulai dari level 0 sampai dengan 255 ( 0
untuk hitam , 255 untuk putih, dan nilai diantaranya untuk derajat keabuan).
Gambar 2.4 Grayscale level
Dalam beberapa kasus, gambar digital juga sering diproses menjadi format binary,
yang mana pada format ini nilai piksel hanya dapat bernilai 0 atau 1 ( pada skripsi ini
nilai 0 menunjukkan warna putih dan nilai 1 menunjukkan warna hitam ). Format ini
biasanya dipakai untuk menyederhanakan gambar, sehingga lebih mudah dalam
memproses informasi yang diinginkan.
2.4 Mathematical Morphology
Transformasi mathematical morphology banyak didasarkan pada transformasi
geometri. Berikut beberapa transformasi dasar geometri ,
Translasi A oleh x dinotasikan dengan xA dan dirumuskan,
},:{ AauntukxaccAx ∈+==
Gambar 2.5 Translasi
10
Refleksi B ,dinotasikan dengan B)
, dan didefinisikan sebagai,
},:{ BbuntukbxxB ∈−==)
Gambar 2.6 Refleksi
Terdapat dua transformasi dasar pada morphology, yaitu dilation dan erosion.
Kedua transformasi ini menggunakan sebuah gambar A dan sebuah structuring element
B. Dilation didefinisikan sebagai,
}:{ ∅≠∩=⊕ ABxBA x
)
untuk kasus di mana A adalah persegi panjang dan B adalah circular disk yang terletak
di titik origin, maka transformasi dilation dapat digambarkan sebagai berikut, ( Karena
B simetri maka BB ˆ= )
Gambar 2.7 Gambar A mengalami dilation oleh structuring element B
11
Erosion didefinisikan sebagai,
}:{ ABxBA x ⊆=Θ
bila A adalah persegi panjang dan B adalah circular disk yang terletak di titik origin,
maka transformasi dilation dapat digambarkan sebagai berikut, ( Karena B simetri maka
BB ˆ= )
Gambar 2.8 Gambar A mengalami erosion oleh structuring element B
Transformasi morphology yang penting dan sering dipakai adalah opening dan
closing, kedua transformasi ini dibentuk dari transformasi dasar, dilation dan erosion.
Opening biasanya digunakan untuk mengeliminasi objek kecil, memperhalus kontur
dalam gambar, ataupun mencari bentuk spesifik di dalam gambar.
Opening A oleh B dinotasikan dengan BA o , dan dirumuskan sebagai,
BBABA ⊕= )( Θo
12
Gambar 2.9 Transformasi Opening
Untuk lebih jelasnya, pada gambar 2.9 diperlihatkan hasil opening (yang diperlihatkan
dengan garis putus-putus tebal) terhadap gambar A (garis tidak putus-putus). Structuring
element yang dipakai (B) adalah sebuah circular disk dan garis putus-putus tipis
memperlihatkan hasil erosion gambar A oleh B.
Closing biasanya dipakai untuk mengeliminasi lubang kecil, dan menyatukan gap kecil.
Closing A oleh B dinotasikan A • B , dan dirumuskan sebagai,
BBABA Θ)( ⊕=•
Gambar 2.10 Transformasi Closing
pada gambar 2.10 diperlihatkan hasil closing (yang diperlihatkan dengan garis putus-
putus tebal) terhadap gambar A (garis tidak putus-putus). Structuring element yang
13
dipakai (B) adalah sebuah circular disk dan garis putus-putus tipis memperlihatkan hasil
dilation gambar A oleh B.
2.5 Background subtraction
Background subtraction adalah proses untuk menemukan objek pada gambar
dengan cara membandingkan gambar yang ada dengan sebuah model latar belakang.
Prosedur background subtraction terdiri dari 3 tahap, yaitu pre-processing, background
modeling, dan foreground detection.
Gambar 2.11 Background subtraction
1- gambar sekarang, 2- background model, 3- hasil background subtraction, 4- hasil
background subtraction setelah threshold
14
Tahapan dalam Background subtraction :
• Pre-processing
Pada tahap ini data mentah dari kamera (atau input lainnya) diproses menjadi
bentuk yang dapat dimengerti oleh bagian program lain.pada tahapan awal ini
dilakukan noise removal dan eliminasi objek kecil pada gambar agar menjadi lebih
informatif. Eliminasi objek kecil dilakukan dengan menggunakan mathematical
morphology yaitu transformasi Opening.
• Background modeling
Tahap ini bertujuan untuk membentuk model background yang konsisten, namun
tetap dapat beradaptasi dengan perubahan lingkungan yang ada. Model harus dapat
mentoleransi tingkat perubahan lingkungan, namun tetap sensitif dalam mendeteksi
pergerakan dari objek yang relevan. Algoritma background modeling sendiri sangat
banyak, namun pada skripsi ini akan dipakai Approximated Median Filter, karena
proses komputasinya cepat dan hasilnya cukup memuaskan.
• Foreground detection
Pada tahap ini, dilakukan proses ekstraksi foreground dari background. Secara
sederhana hal ini dilakukan dengan cara
crcrcr BIR ,,, −=
R = hasil,
I = gambar saat ini
B = background model
r = baris, c = kolom
15
Nilai R lalu dibandingkan dengan nilai threshold yang telah ditentukan, jika
lebih besar dari nilai threshold maka piksel di I(r,c) dapat dianggap berbeda dengan
piksel di B(r,c). Nilai threshold adalah semacam nilai untuk mentolerasi error yang
mungkin terjadi, threshold sendiri dipakai untuk mengurangi error yang disebabkan
noise pada gambar digital.
2.6 Median filter
Algoritma ini adalah salah satu algoritma yang sering dipakai pada background
modeling. Background model didapat dengan menggunakan nilai median dari setiap
piksel di semua frame pada buffer.
)),(),...,,((),( 1 yxIyxImedianyxB nttt −−=
Salah satu kelemahan Algoritma ini adalah dibutuhkannya buffer berukuran n untuk
menyimpan gambar yang akan diproses (I) .
2.7 Approximated median filter
Approximated Median Filter adalah algoritma yang dikembangkan oleh
McFarLane dan Schofield. Algoritma ini pada dasarnya memakai teknik median filter,
namun tidak seperti median filter, algoritma ini tidak memerlukan buffer memori
sehingga proses komputasinya lebih cepat dan efektif. Algoritma ini mengkomputasi
nilai dari median dengan cara menambah nilai piksel bila nilainya lebih kecil dari
gambar saat ini dan mengurangi nilai piksel bila nilainya lebih besar dari gambar saat
ini. Hal ini dapat dirumuskan sebagai berikut :
16
⎩⎨⎧
>−<+
=+ ),(),(1),(),(),(1),(
),(1 nmxnmbuntuknmbnmxnmbuntuknmb
nmbttt
tttt
Hasil estimasi ini pada akhirnya akan konvergen ke nilai median yang sesungguhnya.
2.8 Connected component labeling
Algoritma Connected Component Labeling digunakan untuk melabeli tiap objek
pada gambar binary dengan suatu label unik. Pengelompokan piksel sebagai satu objek
ditentukan dari status ketetanggaan mereka. Sebuah piksel disebut bertetangga dengan
piksel lain apabila piksel tersebut bertetangga langsung dengan piksel lain itu ataupun
piksel lain itu merupakan tetangga dari tetangga piksel tersebut. Kriteria sebuah piksel
merupakan tetangga dari piksel lain dapat berupa 4-connectivity, 6-connectivity ataupun
8-connectivity.
Gambar 2.12 4, 8 dan 6-connectivity
Algoritma connected component labeling berdasarkan banyaknya penelusuran gambar
yang dilakukan dapat dibagi menjadi 3, yaitu one pass, two pass, dan multi pass.
Sedangkan berdasarkan tipe perulangannya dapat dibagi menjadi 2 yaitu, recursive dan
sequential. Algoritma yang digunakan pada program ini berjenis sequential algorithm
dan merupakan two pass. Sedangkan kriteria ketetanggaan yang dipakai adalah 8-
connectivity.
17
2.9 Component Object Model (COM)
Component object model (COM) adalah sebuah platform untuk komponen
software yang diperkenalkan oleh Microsoft pada tahun 1993. COM digunakan untuk
memberikan kemampuan komunikasi antar komponen dan pembentukan objek dinamis
pada bahasa pemrograman apa saja yang mendukung teknologi ini. Walau COM
diperkenalkan pada tahun 1993, namun Microsoft baru mulai menggunakan nama COM
pada tahun 1997.
Kemampuan inti dari COM adalah kemampuan mengimplementasikan objek yang
independen terhadap bahasa pemrograman, sehingga objek tersebut dapat digunakan
pada environment yang berbeda dengan environment tempat objek diciptakan, bahkan
pada environment dari platform mesin yang berbeda. Selain itu COM juga memudahkan
untuk menggunakan kembali (reuse) objek tanpa harus mengetahui implementasi
internal mereka, hal ini karena COM membuat suatu standar interface yang ketat yang
harus dipenuhi oleh objek.
Walaupun COM telah diimplementasikan pada beberapa platform mesin, namun
COM sebagian besar digunakan oleh Microsoft Windows. COM sendiri tidak lepas dari
beberapa kelemahan, karena itu Microsoft saat ini telah mengeluarkan .NET Framework
yang diharapkan akan dapat menggantikan fungsi COM.
COM object di Windows biasanya disimpan dalam extension “.dll” , sebagai
contoh avicap32.dll, avifil32.dll, user32.dll, dan lain sebagainya.
2.10 DLL Hell
Salah satu kelemahan besar COM adalah lokasi dari setiap komponen disimpan
oleh sistem dalam satu tempat (Windows registry). Karena hanya boleh ada satu versi
18
dari komponen yang terinstall maka hal ini akan menyebabkan Dll Hell, suatu keadaan
dimana dua atau lebih aplikasi memerlukan versi yang berbeda dari satu komponen yang
sama.
Untuk mengatasi hal ini, pada Windows XP, Microsoft memperkenalkan mode
baru dari registrasi COM object yang disebut “Registration-free COM”. Fasilitas ini
memungkinkan aplikasi yang memerlukan instalasi COM object untuk menyimpan
semua informasi registrasi COM yang diperlukan pada direktori aplikasi itu sendiri,
bukan pada registry global. Sayangnya kemampuan ini hanya dapat dilakukan pada
Windows XP dan versi-versi sesudahnya.
2.11 .NET Framework
Microsoft memulai pengembangan .NET Framework pada akhir tahun 1990,
dengan nama Next Generation Windows Services (NGWS). Pada akhir 2000, baru versi
beta pertama dari .NET 1.0 diterbitkan.
.NET Framework adalah sebuah komponen yang merupakan bagian dari operating
system Microsoft Windows. .NET Framework memiliki library yang besar yang dapat
dipergunakan oleh programmer dan memanajemen eksekusi dari program yang ditulis
menggunakan .NET Framework. Library yang disediakan mencangkup bidang:
• User interface
• Akses data
• Database
• Kriptografi
• Aplikasi Web
19
• Komunikasi Network , dan banyak lagi
Sedangkan manajemen eksekusi program di kerjakan oleh Common Language
Runtime (CLR). CLR menyediakan suatu virtual machine bagi aplikasi, sehingga
programmer tidak perlu lagi membuat kode spesifik dari sistem yang digunakan oleh
pengguna. Selain itu CLR juga menyediakan servis-servis seperti :
• Mekanisme Sekuritas,
• Manajemen memori, dan
• Exception handling
Jika diteliti CLR mirip sekali dengan Java virtual machine (JVM) milik Sun, keduanya
sama-sama berbasis pada model virtual machine yang menyembunyikan detail dari
hardware komputer dimana aplikasi berjalan. Keduanya juga menggunakan byte-code,
pihak Microsoft menamai milik mereka Common Intermediate Language (CIL)
sedangkan Sun menamainya Java bytecode.
Gambar 2.13 .NET framework stack
20
2.12 Web camera
Web camera (webcam) adalah sebuah alat yang terhubungkan ke komputer yang
berfungsi untuk mengambil citra dari lensa teleskopik yang terdapat pada alat tersebut.
Citra yang diambil ini kemudian dikirimkan ke komputer melalui kabel USB (Universal
Serial Bus) atau kabel serial dengan kecepatan realtime (kurang lebih 15 frame per
detik). Web camera saat ini dipergunakan secara luas pada aplikasi online video
conference, pemantauan, sebagai kamera digital, dan banyak lagi. Resolusi ( ketajaman)
maksimum citra hasil dari web camera adalah 640 x 480 piksel.
Gambar 2.14 Web camera Logitech
Teknik pengambilan citra dari web camera pada bahasa pemrograman C#
menggunakan kumpulan fungsi-fungsi (API) yang telah disediakan oleh Microsoft
Windows, melalui file “Avicap32.dll”. Berikut beberapa contoh konstanta penting yang
digunakan untuk berkomunikasi dengan COM Object avicap32 :
• WM_CAP_START = 1024
• WM_CAP_STOP = WM_CAP_START + 68
• WM_CAP_COPY = WM_CAP_START + 30
• WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10
• WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 25
21
• WM_CAP_GRAB_FRAME = WM_CAP_START + 60
• WM_CAP_SET_PREVIEW = WM_CAP_START + 50
• WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52
Selain konstanta diatas masih ada lagi konstanta-konstanta lainnya, untuk
informasi lebih lanjut disarankan untuk mencari pada dokumentasi online dari avicap32.
Berikut adalah arti penggunaan dari konstanta-konstanta yang telah tertulis diatas :
• WM_CAP_START, berguna untuk menandakan bahwa program akan mulai
menggunakan web camera.
• WM_CAP_STOP, berguna untuk menandakan bahwa program telah selesai
menggunakan web camera.
• WM_CAP_COPY, berguna untuk menyalin gambar yang sedang aktif ke
clipboard.
• WM_CAP_DRIVER_CONNECT, berguna untuk menginisialisasikan hubungan
dengan sebuah web camera.
• WM_CAP_DRIVER_DISCONNECT, berguna untuk memutuskan hubungan
dengan sebuah web camera.
• WM_CAP_GRAB_FRAME, berguna untuk mengambil sebuah gambar pada
web camera.
• WM_CAP_SET_PREVIEW, berguna untuk menandakan bahwa program siap
untuk menampilkan gambar bergerak dari web camera pada tampilan program.
• WM_CAP_SET_PREVIEWRATE, berguna untuk menyatakan kecepatan
tampilan gambar bergerak. Satuan yang biasanya digunakan adalah 15 fps (frame
per second).
22
Konstanta-konstanta ini nantinya akan dipakai melalui API SendMessage (berasal
dari COM Object user32). Sebagai contoh pada C# pendeklarasian SendMessage dapat
ditulis sebagai berikut :
[DllImport("user32", EntryPoint="SendMessage")] public static extern int SendMessage(int hWnd, uint Msg, int wParam, int lParam);
sedangkan pemakaiannya dapat dilihat pada contoh berikut :
SendMessage(mCapHwnd, WM_CAP_CONNECT, 0, 0);
Dimana mCapHwnd adalah handle untuk capture window pada program
2.13 Video saving
Yang dimaksud dengan video saving disini adalah penyimpanan gambar-gambar
yang diperoleh dari web camera menjadi file video. Pada program yang dibuat
digunakan COM Object “Avifil32.dll”. File video akan disimpan dalam extension “.avi”.
2.14 Format penyimpanan Bitmap
Pada format gambar bitmap, gambar disimpan di Windows tidak dalam bentuk
array 2 dimensi namun dalam bentuk berurutan (sequential). Piksel-piksel disusun mulai
dari piksel-piksel pada baris pertama dan dilanjutkan dengan piksel-piksel pada baris
selanjutnya. Untuk alasan efisiensi maka pada format bitmap, gambar diolah oleh
Windows agar merupakan kelipatan dari 4. Cara pengolahan ini berupa penambahan bit
(padding) pada setiap perpindahan baris pada gambar.
23
Gambar 2.15 Penyimpanan bitmap pada Windows
Pada format 24 bit bitmap, setiap piksel menempati 3 byte (24 bit) memori, dimana
1 byte (8 bit) pertama digunakan untuk menampung warna biru, byte kedua untuk warna
hijau dan byte ketiga untuk warna merah.
Gambar 2.16 24 bit bitmap
Pada format 32 bit bitmap, setiap piksel menempati 4 byte (32 bit) memori. 3 byte
dipakai sama seperti 24 bit bitmap, yaitu untuk warna biru, hijau dan merah. 1 byte
24
terakhir dipakai untuk nilai alpha pada piksel. Nilai alpha ini biasanya dipakai sebagai
masking ataupun menunjukkan transparansi dari piksel.
Gambar 2.17 32 bit bitmap
Pada format 8 bit-indexed bitmap, gambar memiliki palette data yang berada
tepat sebelum tempat penyimpanan pixel data. Pada format ini setiap piksel menempati 1
byte (8 bit) memori. Nilai byte ini kemudian akan dipakai untuk merujuk pada warna
yang disimpan pada pallete data.
Gambar 2.18 8 bit-indexed bitmap
2.15 GSM Comm Library
GSM Comm Library adalah sekumpulan komponen yang ditujukan untuk
membantu proses-proses yang berhubungan dengan short message services. GSM
Comm diciptakan oleh Stefan Mayr dan bisa didapatkan secara gratis di
25
http://www.scampers.org/steve/sms/ . GSM Comm dapat digunakan secara gratis baik
untuk aplikasi personal maupun komersil, selama komponen aslinya tidak dimodifikasi.
Berikut adalah komponen-komponen dalam GSM Comm :
- PDU Converter ( PDUConverter.dll )
- GSM Communication ( GSMCommunication.dll )
- GSMCommShared ( GSMCommShared.dll )
- GSMCommServer ( GSMCommServer.dll )
- RS232 ( RS232.dll )
GSM Comm yang digunakan pada program skripsi ini merupakan versi 1.11, dan
memerlukan :
- Microsoft's .NET Framework v1.1
- Telepon seluler ataupun modem GSM yang mendukung AT Command, dan
terkoneksi pada port COM.