laporan people counter dengan webcam

12

Click here to load reader

Upload: purwanto-romantis

Post on 27-Jun-2015

228 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Laporan People Counter Dengan Webcam

Nama: Purwanto

Nrp: 23406050

Laporan People Counter dengan Webcam

A. PendahuluanPeople Counter dengan Webcam adalah pengembangan dari project Traffic Counter.

Pengembangan itu antara lain adalah menambah fungsi webcam, mengubah arah perhitungan vertical ke horizontal, mengubah pada bagian blob size pada project traffic counter. People Counter merupakan opencv project dengan bahasa pemprograman visual C++ 2008.

Gambar 1.1 People Counter dengan Webcam

Langkah-langkah menjalankan program ini, yaitu:

1. Install OpenCV2. Install CMake3. Building OpenCV untuk Visual Studio 20084. Build source code OpenCV pada IDE Visual Studio 2008

5. Tambahkan path OpenCV pada sistem Windows

6. Tambahkan path OpenCV pada proyek (Visual Studio 2008) yang akan dibuat, baik pada

configuration Debug dan Release

7. Install cvBlobsLib

Page 2: Laporan People Counter Dengan Webcam

B. Program Pada button Play tambahkan program:

o Mengambil gambar dari webcam

CvCapture *input = 0;IplImage *frame = 0;bool key = true;

/* initialize camera */input = cvCaptureFromCAM( 0 );

o Membuat background extraction

////BACKGROUND EXTRACTION/////////cvUpdateBGStatModel( frameresize, bg_model );cvReleaseImage(&greyImage);greyImage=cvCloneImage(bg_model->foreground);

cvRectangle(maskingImage, cvPoint(atoi(masking1_string), atoi(masking2_string)), cvPoint(atoi(masking3_string), atoi(masking4_string)), CV_RGB(255,255,255), -1);

cvAnd (greyImage, maskingImage, greyImage);

cvRectangle(frameresize,cvPoint(atoi(masking1_string), atoi(masking2_string)),cvPoint(atoi(masking3_string), atoi(masking4_string)), CV_RGB(0,0,255), 2);

o Membuat garis pendeteksi orang yang lewat

if (approaching->GetCheck()){

cvLine(frameresize, cvPoint((frameresize->width)-70,0), cvPoint((frameresize->width)-70,frameresize->height), CV_RGB(255,0,0), 2, 8, 0);

cvLine(frameresize, cvPoint((frameresize->width)-30,0), cvPoint((frameresize->width)-30,frameresize->height), CV_RGB(255,0,0), 2, 8, 0);

}if (away->GetCheck()){

cvLine(frameresize, cvPoint(70,0), cvPoint(70,frameresize->height), CV_RGB(255,0,0), 2, 8, 0);

cvLine(frameresize, cvPoint(30,0), cvPoint(30,frameresize->height), CV_RGB(255,0,0), 2, 8, 0);

}

o Membuat blob tracking

Page 3: Laporan People Counter Dengan Webcam

//////BLOB TRACKING//////////////blobs = CBlobResult(greyImage, NULL, 0);

blobs.Filter(blobs, B_INCLUDE, CBlobGetArea(), B_GREATER, atoi(smallest_string));

blobs.Filter(blobs, B_INCLUDE, CBlobGetArea(), B_LESS, atoi(biggest_string));

o Membuat counting & classification

if (!initialize && !preview){

if (approaching->GetCheck()){

if (iMaxx <= (frameresize->width)-30 && iMaxx >=(frameresize->width)-70) {

whitePixel=false;if (iMaxx>((frameresize->width)-70)){

for (x=((frameresize->width)-70); x<=iMaxx; x++){

for (y=iMiny+((iMaxy-iMiny)/4); y<=iMaxy-((iMaxy-iMiny)/4); y++){

lastPixel= cvGet2D(lastFrameImage, y, x);if (lastPixel.val[0]>0){

whitePixel=true;break;

}}cvRectangle(frameresize, cvPoint(iMinx, iMiny), cvPoint(iMaxx, iMaxy), CV_RGB(0,255,0), 2, 8, 0);

if (whitePixel){

break;}

}}if (!whitePixel){ total++;

If ((currentBlob.Area()<= atoi(group1_thresh_string)) &&(atoi(group1_thresh_string) != 0)){

group1++;} else

Page 4: Laporan People Counter Dengan Webcam

{ if ((currentBlob.Area()<= atoi(group2_thresh_string)) && (atoi(group2_thresh_string) != 0)){

group2++;} else{………}

}}

}}

if (away->GetCheck()){

if ((iMinx >= 30) && (iMinx <= 70)) {

whitePixel=false;if (iMinx < 70){

for (x=70; x>=iMinx; x--){

for (y=iMiny+((iMaxy-iMiny)/3); y<=iMaxy-((iMaxy-iMiny)/3); y++){

lastPixel=cvGet2D (lastFrameImage,y,x);if (lastPixel.val[0]>0){

whitePixel=true;break;

}}

cvRectangle(frameresize, cvPoint(iMinx, iMiny), cvPoint(iMaxx, iMaxy),CV_RGB(0,255,0), 2, 8, 0);if (whitePixel){

break;}

}}if (!whitePixel){

total++;if ((currentBlob.Area()<= atoi(group1_thresh_string)) && (atoi(group1_thresh_string) != 0)){

group1++;

Page 5: Laporan People Counter Dengan Webcam

} else{

If((currentBlob.Area()<= atoi(group2_thresh_string)) && (atoi(group2_thresh_string) != 0)){

group2++;} else {……..}

}}

}}

}o Membuat initialize

if (initialize) {

cvPutText (frameresize, "System Initialization", cvPoint(40,70), &font, CV_RGB (255,255,255));

cvPutText (frameresize, "Please Wait...", cvPoint(40,120), &font, CV_RGB (255,255,255));

cvPutText (frameresize, duration_string, cvPoint(40,170), &font, CV_RGB (255,255,255));

} Pada Button Stop (Webcam & Video Player Control) tambahkan program:

counter=false;start=false;

Pada Button Start tambahkan program:counter=true;initialize=true;

Pada Button Stop (People Counter Control) tambahkan program:counter=false;

Pada Button reset tambahkan program:second=15;total=0;density=0;group1=0;group2=0;

C. Cara kerja Software Pertama jalankan Software dengan menekan tombol Play

Software akan menjalankan proses mengambil gambar dari webcam

Page 6: Laporan People Counter Dengan Webcam

Gambar 3.1 Hasil Capture dari webcam

Selanjutnya tekan tombol start pada people counter controlProses selanjutnya adalah initialize

Gambar 3.2 proses initial pada video & resultPada bagian result akan menampilkan background extraction. Pada bagian video akan menampilkan kotak biru & 2 garis merah. Proses background extraction akan dilakukan pada area didalam kotak biru. Jika suatu objek sudah melewati 2 garis merah dari kanan ke kiri maka objek akan dihitung.

Page 7: Laporan People Counter Dengan Webcam

Setelah selesai proses initialize, selanjutnya objek akan dihitung. Pada proses perhitungan objek yang melewati garis merah akan dikotakin dengan kotak warna hijau. Seperti pada gambar dibawah ini.

Gambar 3.3 Objek yg dihitung

Hasil perhitungan akan ditampilkan pada bagian Report.

Gambar 3.4 Report Perhitungan

D. Fungsi-fungsi utama Bagian Webcam & Video player control

o Button Play berfungsi untuk mengambil gambar dari webcam secara live

o Button Stop berfungsi untuk mengakhiri proses pengambilan gambar dari webcam

Page 8: Laporan People Counter Dengan Webcam

Gambar 4.1 Webcam & video player control

People Counter Control o Button Start, berfungsi untuk memulai proses initialize, background extraction, blob

tracking, dan perhitungan serta prosesnya ditampilkan ke Result.o Button Stop, berfungsi untuk mengakhiri semua proses perhitungan.

o Button Reset, berfungsi untuk mereset hasil perhitungan ke 0.

Gambar 4.2 People Counter control

Settingo Kolom Group I – XI, berfungsi untuk mengclassification objek sesuai maksimum

blob size yg diisi pada kolom group.o Kolom Smallest Size, berfungsi untuk memberi batas minimum size objek bergerak

yang akan dideteksi.o Kolom Biggest Size, berfungsi untuk memberi batas maksimum size objek bergerak

yang akan dideteksi.o Option Move Closer to Camera, berfungsi untuk menghitung objek yang bergerak

dari kiri ke kanan dan memberi 2 garis merah pada posisi kanan.o Option Move Away From Camera, berfungsi untuk menghitung objek yang bergerak

dari kanan ke kiri dan memberi 2 garis merah pada posisi kiri.o Kolom Masking Area, berfungsi untuk memberikan posisi kotak biru.

o Button Save Setting, berfungsi untuk menyimpan settingan terbaru.

Page 9: Laporan People Counter Dengan Webcam

Gambar 4.3 Setting

Reporto Duration, berfungsi untuk menampilkan waktu perhitungan.

o Total of Peoples, berfungsi untuk menampilkan jumlah Objek (People) yang lewat.

o People Desenti, berfungsi untuk menhitung rata-rata Objek (People) yang lewat per

menit.o Group I – XI, berfungsi untuk menghitung Objek (people) yang lewat sesuai ukuran.

o Button Save Report, berfungsi untuk menyimpan hasil perhitungan dalam bentuk .txt

file.

Gambar 4.4 Report

E. Kesimpulan

Page 10: Laporan People Counter Dengan Webcam

Melalui hasil percobaan dapat disimpulkan keakuratan software ini bisa mencapai 80%, Terlalu banyak proses mengakibatkan gambar yang ditampilkan menjadi lebih lambat dan terpotong-potong.