2.1. Metode Normalized Sum -Squared Difference (NSSD)1
Data kepadatan lalu- lintas merupakan data yang mendasar dan sangat diperlukan dalam bidang studi transportasi. Data kepadatan lalu-lintas didefinisikan dengan jumlah kendaraan yang melewati suatu wilayah yang telah ditentukan dalam satuan waktu, baik itu menit, jam maupun hari. Dalam tugas akhir ini dinyatakan dalam jumlah kendaraan per menit (jumlah kendaraan/menit).
Selama ini penghitungan kepadatan lalu- lintas dilakukan secara manual yang memerlukan tenaga manusia. Pada saat ini kamera video telah dimanfaatkan untuk menggantikan tugas itu. Dengan menganalisa image sequence atau video sequence, data kepadatan lalu-lintas didapat secara otomatis. Salah satu metode yang digunakan adalah Sum-Squared Difference (SSD).
NSSD merupakan bentuk khusus dari metode SSD. NSSD didefinisikan sebagai perbedaan nilai intensitas yang dikuadratkan antara frame saat itu dengan frame background dalam satu daerah yang ditentukan (detection region),yang kemudian dinormalisasi dengan windows area. Persamaan (2.1) menunujukkan rumus perhitungan NSSD. Variabel I adalah intensitas frame input, Q adalah daerah yang akan dideteksi (detection region) dan N adalah luasan detection region.
Keterangan :
• IC(i) = intensitas frame pada pixel (i)
• IB(i) = intensitas background pada pixel (i)
• Q = detection region / ROI (Region of Interest)
• N = jumlah pixel pada area Q
1
Xuegang Ban, Automatic Traffic Volume Detection Using Normalized Sum-Squared Differences (NSSD), http://www.cs.wisc.edu/~xuegang
NSSD =
S ( I
C(i) – I
B(i) )
2 i?QN
(2.1)
(a) (b)
Gambar 2.1. (a) Image input frame - IC; (b) Image background - IB
Setelah melakukan perhitungan dengan persamaan (2.1) terhadap setiap frame pada video, maka akan didapatkan nilai NSSD untuk setiap frame tersebut. Bilamana nilai NSSD tersebut dipresentasikan dalam bentuk grafik akan terlihat seperti gambar 2.2 di bawah ini.
Gambar 2.2. Hasil Perhitungan dengan NSSD Tanpa Filtering Setiap puncak yang tergambar dalam grafik mewakili satu buah kendaraan yang lewat. Akan tetapi dikarenakan adanya noise selama pengambilan gambar dan juga perubahan intensitas pencahayaan maka ketika ditentukan
-5000000 0 5000000 10000000 15000000 20000000 25000000 30000000 35000000 40000000 45000000 0 50 100 150 200 250 300 350 Frame NSSD Threshold detection window
thresholdnya akan terjadi kesalahan penghitungan. Sebuah kendaraan dapat terhitung lebih dari satu. Untuk itu data NSSD memerlukan proses lebih lanjut agar mendapatkan grafik yang lebih akurat untuk mewakili sebuah kendaraan yang lewat. Proses filtering diperlukan dalam kasus ini. Salah satu cara filtering yang dapat digunakan adalah dengan memperoleh nilai rata -rata dari NSSD pada saat itu. Nilai NSSD yang diperoleh akan dirata-rata dengan nilai NSSD sebelumnya. NSSD (n) NSSD (n) NSSD (n) NSSD (n) NSSD (n) 0 NSSD (n-1) NSSD (n-1) NSSD (n-1) NSSD (n-1) 0 0 NSSD (n-2) NSSD (n-2) NSSD (n-2) 0 0 0 NSSD (n-3) NSSD (n-3) 0 0 0 0 NSSD (n-4)
Mean NSSD Mean NSSD Mean NSSD Mean NSSD Mean NSSD Gambar 2.3. Proses Filtering Dengan Cara Penghitungan Rata-Rata
Nilai rata-rata yang didapat, ekivalen dengan nilai NSSD saat itu. Dari nilai NSSD yang baru, dibuat grafiknya seperti gambar 2.4 di bawah ini.
Gambar 2.4. Hasil dari Proses Filtering
0 2000000 4000000 6000000 8000000 10000000 12000000 14000000 16000000 18000000 20000000 0 50 100 150 200 250 300 350 Frame NSSD Threshold
Dapat dilihat bahwa setiap puncak dengan thresholding 3.500.000 mewakili sebuah kendaraan yang melewati detection region. Nilai threshold berfungsi sebagai batasan bagi nilai NSSD. Apabila nilai NSSD memenuhi nilai threshold maka nilai NSSD tersebut dianggap mewakili sebuah kendaraan. Akan tetapi dalam sebuah puncak atau peak, nilai NSSD yang memenuhi nilai threshold sering kali lebih dari satu. Pada gambar 2.4 dapat dilihat bahwa semua nilai NSSD pada frame 90 sampai 100 memenuhi nila i threshold. Sehingga akan terhitung ada 10 kendaraan yang lewat padahal hanya sebuah kendaraan. Untuk itu diperlukan cara untuk mengidentifikasi nilai NSSD yang memenuhi nilai threshold hanya dihitung sekali. Dalam tugas akhir ini digunakan cara menambahkan suatu identifikasi (variabel “base”) dalam looping. Apabila nilai NSSD telah memenuhi threshold, nilai dari base tersebut akan diperiksa. Bilamana bernilai nol (0), jumlah kendaraan (variabel cnt1 dan cnt2) akan ditambah dan nilai base juga ditambah. Base akan diset nilainya menjadi nol (0) bilamana NSSD tidak memenuhi threshold. Algoritma penghitungan kendaraan adalah sebagai berikut:
t1 : nilai threshold, ditentukan melalui grafik
t2 : nilai base, untuk menghindari penghitungan ganda dari thresholding cnt : jumlah kendaraan yang lewat
• Langkah 1. Membaca background
• Langkah 2. Membaca frame berikutnya, dan hitung NSSD, nssd
• Langkah 3. Filtering nssd if nssd>t1 if t2=0 // t2 = nilai base cnt++; // cnt = jumlah kendaraan t2++; else t2++; else t2=0
2.2. Computer Vision dan Image Processing
Kemampuan melihat mata manusia untuk dapat memberikan sinyal ke otak yang selanjutnya diproses dan menghasilkan informasi telah menginspirasi beberapa orang untuk membuat tiruannya. Sistem cerdas buatan atau artificial intelligence telah diminati untuk semakin dikembangkan.
Computer vision adalah salah satu cabang dari artificial intelligence (kecerdasan buatan) yang difokuskan pada pengembangan algoritma untuk menganalisa isi dari suatu gambar.
Computer vision mempunyai tujuan utama untuk menganalisa obyek fisik yang nyata berdasarkan image yang ditangkap dari sensor. Computer vision diciptakan untuk membangun sebuah mesin pandai yang dapat melihat. Tentunya ini bukanlah hal yang mustahil. Ada beragam contoh dari aplikasi computer vision, sebut saja belakangan ini yang terjadi yaitu virus SARS. Di Singapura, bandara dilengkapi dengan kamera yang mampu mendeteksi suhu tubuh manusia sebagai salah satu indikator orang yang tertular SARS. Dari informasi suhu tubuh inilah petugas mengetahui apakah ada diantara penumpang yang tertular SARS. Demikian pula robot AIBO yang dibuat oleh perusahaan elektronik SONY, dimana robot AIBO yang berbentuk anjing tersebut dapat melihat dan mengenali pemiliknya. Anjungan Tunai Mandiri (ATM) telah dibangun dilengkapi dengan retina scan. Mobil sudah dapat dikemudikan oleh komputer dengan menggunakan kamera sebagai input.
Dalam pengambilan keputusan tentang obyek nyata, selalu dibutuhkan beberapa deskripsi obyek-obyek tersebut dari gambar yang ada. Karena itu, banyak ahli akan berkata bahwa tujuan dari computer vision adalah konstruksi dari deskripsi yang diambil dari gambar yang diperoleh.
Image processing adalah suatu metode yang digunakan untuk memproses atau memanipulasi image dalam bentuk 2 (dua) dimensi. Segala operasi untuk memperbaiki, penganalisaan, atau pengubahan suatu gambar disebut image processing. Konsep dasar pemrosesan suatu obyek yang menggunakan image processing diambil dari kemampuan indera penglihatan manusia yang selanjutnya dihubungkan dengan kemampuan otak manusia.
Dalam sejarahnya, image processing telah diaplikasikan dalam berbagai bentuk, dengan tingkat kesuksesan yang cukup besar. Seperti berbagai cabang ilmu lainnya, image processing menyangkut pula berbagai gabungan cabang-cabang ilmu. Diantaranya adalah optik, elektronik, matematika, fotografi, dan teknologi komputer.
Beberapa faktor menyebabkan perkembangan sistem image processing menjadi lebih berkembang pesat pada saat ini. Salah satu yang utama adalah dibutuhkannya suatu teknologi yang dapat bekerja secara mandiri, dalam arti teknologi yang dapat memproses data -data yang diterima dan pada akhirnya teknologi tersebut harus bisa mengambil keputusan sendiri dari hasil pengolahan data sebelumnya. Selain itu penurunan biaya akan peralatan komputer yang dibutuhkan serta peningkatan tersedianya peralatan untuk proses tampilan gambar juga menjadi salah satu faktor semakin berkembangnya image processing.
Pada umumnya, obyektifitas dari image processing adalah mentransformasikan atau menganalisis suatu gambar sehingga informasi baru tentang gambar dibuat lebih jelas.
Ada 4 (empat) klasifikasi dasar dalam image processing, yaitu: point, area, geometric, dan frame.
a. Point memproses nilai pixel image berdasarkan nilai atau posisi dari pixel tersebut. Contoh dari proses point adalah adding, subtracting, contast stretching, dan lainnya.
b. Area memproses nilai pixel-pixel suatu image berdasarkan nilai pixel tersebut beserta nilai pixel tetangga -tetangganya sekelilingnya. Contoh dari proses area adalah convolution, blurring, sharpening, filtering, dan lainnya.
c. Geometric digunakan untuk merubah pos isi dari pixel-pixel. Contoh dari proses geometric adalah scaling, rotation, mirroring, dan lainnya.
d. Sedangkan frame memproses nilai pixel berdasarkan operasi dari 2 (dua) buah image atau lebih. Contoh dari proses frame adalah addition, subtraction, and/or, dan lainnya. Perbedaan proses frame di sini dengan proses point yaitu pada proses point nilai- nilai pixel-nya diproses (ditambahkan, dikurangkan, dan lainnya) dengan suatu nilai tertentu, sedangkan pada proses frame pemrosesan nilai-nilai pixel-nya dilakukan antara dua image.
2.3. Sistem Warna
Cahaya adalah suatu bentuk energi elektromagnetik yang terdiri dari spektrum frekuensi yang mempunyai panjang gelombang kurang lebih 400 nanometer untuk cahaya ultraviolet sampai kurang lebih 700 nanometer untuk cahaya merah.
Warna dari suatu obyek merupakan pantulan cahaya yang tidak dapat diserap oleh obyek tersebut. Teori tentang cahaya ini dapat diperoleh dari teori tentang optik dari Isaac Newton, yang menyatakan bahwa suatu warna dapat terpancar karena perbedaan panjang gelombang sehingga menghasilkan perbedaan efek visual. Newton menyatakan bahwa terdapat 7 warna utama (merah, jingga, kuning, hijau, biru, nila, dan ungu) dan dipakai untuk menghitung warna dari spektrum panjang gelombang yang lainnya.
Gambar 2.5. Spektrum Cahaya Tampak Dari Gelombang Elektromagnetik2
2.3.1. Sistem Warna RGB
Semua warna yang ada merupakan perpaduan dari 3 (tiga) macam warna primer yaitu: - warna merah - warna hijau - warna biru 2
. Gregory A. Baxes. Digital Image Processing : Principles and Applications. (John Wiley & Sons, Inc.). 1994. hal 278.
Perpaduan dari ketiga warna primer ini dipakai pada sistem warna RGB. Bila ketiga warna primer dicampur, maka akan dihasilkan suatu warna tertentu, tergantung dari komposisi ketiga warna primer tersebut.
Gambar 2.6. Sistem Warna RGB3
Gambar pada sistem digital dapat diwakili dengan format RGB untuk setiap titiknya, dimana setiap komponen warna diwakili dengan satu byte. Jadi untuk masing-masing komponen R, G dan B mempunyai variasi dari 0 sampai 255. Total variasi yang dihasilkan untuk sistem warna digital ini adalah 256 x 256 x 256 atau 16.777.216 jenis warna. Karena setiap komponen warna diwakili dengan satu byte atau delapan bit, maka total bit yang digunakan untuk merepresentasikan warna RGB adalah 8 + 8 + 8 atau 24 bit.
2.3.2. Sistem Warna Gray-Scale
Kalkulasi pemrosesan gambar dengan sistem RGB sangatlah memboroskan memory dan juga waktu. Untuk itu diperlukan reduksi warna. Dalam pemrosesan gambar terutama pengenalan obyek, sistem RGB sendiri tidaklah memberikan respon yang baik, sehingga digunakan sistem format gray-scale atau gray level, dimana format gambar warna dikonversi menjadi format gambar abu-abu. Sistem gray -scale memerlukan satu byte (delapan bit ) untuk penyimpanan data, mempunyai kemungkinan warna dari 0 (hitam) sampai 255 (putih).
Konversi dari sistem warna RGB menjadi gray -scale ini ada beberapa macam:
3
. Gary R. Bradski. Computer Vision Face Tracking For Use in a Perceptual User Interface. (Intel Technology Journal Q2 ’98). hal 3.
a. Dengan merata-rata setiap komponen warna pada RGB.
(
)
3 B G R GRAY= + + (2.2)b. Menggunakan nilai maksimal dari komponen RGB.
{
R,G,B}
MAXGRAY= (2.3)
c. Menggunakan sistem YUV (sistem warna pada NTSC), yaitu dengan cara mengambil komponen Y (iluminasi). Komponen Y sendiri dapat diperoleh dari sistem warna RGB dengan konversi:
GRAY = Y = 0.299 * R + 0.587 * G + 0.114 * B (2.4) Cara yang paling terakhir ini yang paling sering digunakan untuk konversi sistem warna ke sistem gray -scale.
2.4. Open Source Computer Vision Library
Open Source Computer Vision Library mulai dikembangkan mulai tahun 1999 yang lalu oleh Visual Interactivity Group didalam Intel's Microprocessor Research Lab. Proyek ini dibuat dengan tujuan untuk mendirikan sebuah komunitas open source vision. Library ini ditujukan untuk digunakan oleh peneliti dan pengembang software komersial. Open Source Computer Vision Library dibuat berdasarkan fungsi- fungsi dasar yang terdapat pada Intel Performance Library. Keunggulan library ini adalah semua fungsi- fungsinya telah dioptimasi untuk processor Intel sehingga dapat berjalan jauh lebih cepat.
Open Source Computer Vision Library Committee terdiri dari beberapa orang antara lain Dr. Gary Bradski, Prof. Trevor Darrell, Prof. Irfan Essa, Prof. Jitendra Malik, Prof. Pietro Perona, Prof. Stan Sclaroff, dan Prof. Carlo Tomasi. Berikut adalah beberapa area dari fungsi umum yang dapat didukung oleh Open Source Computer Visio n Library Committee :
- Geometric Methods - Recognition - Measures - Segmentation - Utilities - Features
- Image Pyramids - Camera - Tracking - Fitting - Matrix - Image Processing
Open Source Computer Vision Library dibuat berdasarkan fungsi-fungsi dasar dan library dari Intel® Image Processing Library.
2.5. Intel® Image Processing Library
Dalam Intel® Image Processing Library menyediakan sekumpulan fungsi-fungsi low-level yang digunakan untuk memanipulasi suatu gambar atau image. Fungsi- fungsi ini telah dioptimasi dan sangat efektif untuk processor-processor dengan arsitektur Intel®. Library ini terdiri dari fungsi-fungsi untuk melakukan:
- Proses filtering - Proses threshholding - Operasi-operasi aritmatika - Proses color models conversion - Dan lain sebagainya.
Library pada Intel® Image Processing menggunakan format gambar yang fleksibel, mendukung gambar dengan 1 (satu), 8 (delapan) dan 16 (enam belas) channels dan pixel integer atau floating point 32-bit . Setiap gambar dapat mempunyai sejumlah channels yang berbeda.
2.6. Analisa Image dan Video
2.6.1. Proses iplColorToGray
Proses iplColorToGray digunakan untuk me ngubah image dalam bentuk RGB menjadi image dalam bentuk gray-scale. komponen Y (iluminasi) diperoleh dengan menggunakan perhitungan:
Y = 0.212671 * R + 0.715160 * G + 0.072169 * B (2.5) Perintah : iplColorToGray (image_asli,image_tujuan)
Contoh :
Last7=cvCreateImage(size, 8, 1); Last7->origin = IPL_ORIGIN_BL; Last2=cvCloneImage(Last7);
iplColorToGray(frame,Last2);
Gamba r 2.7. Image Asli dan Hasil iplColorToGray
Tabel 2.1. Tipe Data Konversi iplColorToGray
Source Image (data type) Resultant Image (data type) 32 bit per channel Gray scale : 1, 8, 16 bit per pixel 16 bit per channel Gray scale : 1, 8, 16 bit per pixel 8 bit per channel Gray scale : 1, 8, 16 bit per pixel
2.6.2. Proses iplGrayToColor
Proses iplGrayToColor digunakan untuk mengubah grayscale image manjadi image berwarna . Fract R, Fract G, dan Fract B merupakan intensitas warna merah, hijau dan biru (RGB) untuk membentuk image warna.
Perintah: iplGrayToColor(image_sumber,image_tujuan,Fract R,Fract G,Fract B)
Contoh:
iplAdd(Last1, Last7, Last3); ////// menjumlahkan frame iplRShiftS(Last3,Last3,1); ////// membagi frame dengan dua
Tabel 2.2 Tipe Data Konversi iplGrayToColor
Source Image (data type) Resultant Image (data type)
Gray scale 1 bit 8 bit per channel
Gray scale 8 bit 8 bit per channel
Gray scale 16 bit 16 bit per channel
Gray scale 32 bit 32 bit per channel
2.6.3. Proses iplAdd
Proses iplAdd digunakan untuk menjumlahkan setiap pixel pada dua buah image. Proses ini menghasilkan sebuah image yang merupakan perpaduan dari dua image.
Perintah : iplAdd(image1,image2,resultant_image) Contoh :
Last=cvvLoadImage("Back.bmp"); //// Load background sebelumnya Last1=cvCreateImage(size, 8, 1);
iplColorToGray(Last,Last1); Last3=cvCloneImage(Last2);
iplAdd(Last1, Last7, Last3); ////// menjumlahkan frame
Gambar 2.8.(a) Image 1 Gambar 2.8.(b) Image 2
Gambar 2.8.(c) Image hasil iplAdd Image1 dan Image 2
2.6.4. Proses iplRShiftS
Setelah melakukan proses iplAdd, proses selanjutnya adalah merata -rata image tersebut. Proses ini digunakan untuk membagi nilai pixel dengan angka konstan dua (2), dikarenakan penggabungan dari dua image, dengan cara menggeser bit-bitnya ke kanan. Variabel nShiftS adalah jumlah bit yang akan digeser ke kanan.
Perintah : iplRShiftS(image asal, image hasil,nShift) Contoh :
iplAdd(Last1, Last7, Last3); ////// menjumlahkan frame
iplRShiftS(Last3,Last3,1); ////// membagi frame dengan dua
(a) (b) Gambar 2.9. (a) image asal; (b) image hasil iplRShiftS
2.6.5. Proses cvRectangle
Fungsi cvRectangle adalah untuk membuat gambar persegi panjang dengan dua titik sudut yang berseberangan (pt1 dan pt2). Apabila parameter
thickness bernilai positif atau nol (0), garis tepi persegi panjang akan dibuat setebal thickness, selain nilai itu persegi panjang akan diarsir. Parameter color dapat berupa format RGB.
Perintah : cvRectangle(image, cvPoint pt1, cvPoint pt2, color, thickness) Contoh :
CvPoint pt31,pt32; ///// ROI pada frame pt31.x=m_roi2x; pt31.y=m_roi2y; pt32.x=m_roi2x+m_roiwidth; pt32.y=m_roi2y+m_roiheight; cvRectangle(frame,pt31,pt32,CV_RGB(0,255,0),1); 2.6.6. Proses cvPoint
Untuk menentukan titik-titik sudut dari ROI, sebelumnya diperlukan inisialisasi dari titik sudut tersebut dengan perintah cvPoint.
Perintah : cvPoint pt1,pt2 Contoh :
CvPoint pt31,pt32; ///// ROI pada frame pt31.x=m_roi2x; pt31.y=m_roi2y; pt32.x=m_roi2x+m_roiwidth; pt32.y=m_roi2y+m_roiheight; cvRectangle(frame,pt31,pt32,CV_RGB(0,255,0),1); 2.6.7. ROI
Rectangular region of interest (ROI) adalah suatu konsep yang penting dalam image processing. Sesuai namanya, ROI berbentuk persegi panjang yang ditempatkan dalam suatu image. Kegunaan dari ROI tersebut adalah suatu proses dari image processing dapat dilakukan hanya dalam daerah yang dibatasi oleh ROI tersebut dan mengabaikan daerah di luarnya.
Perintah : cvSetImageROI(IplImage* image, cvRect rect) Contoh :
roi1=cvCloneImage(Back2);
roi_rect1=cvRect(pt11.x,pt11.y,x,y);
cvSetImageROI(roi1,roi_rect1);
Gambar 2.10. Detection Window atau ROI
2.6.8. Proses cvSumPixels
Proses cvSumPixels digunakan untuk menjumlah semua nilai pixel yang ada dalam suatu area atau ROI.
Perintah : cvSumPixels(image) Contoh :
roi1=cvCloneImage(Back2);
CvPoint pt11,pt12; ////// pada frame pt11.x=m_roix; pt11.y=m_roiy; pt12.x=m_roix+m_roiwidth; pt12.y=m_roiy+m_roiheight; cvRectangle(frame,pt11,pt12,CV_RGB(0,255,0),1); roi_rect1=cvRect(pt11.x,pt11.y,x,y); cvSetImageROI(roi1,roi_rect1); double i=cvSumPixels(roi1); ROI