Kamis, 10 Januari 2013

Objek Tracking With OpenCV





Dalam Kesempatan kali ini saya akan mencoba menganalisa bagaimana tracking objek dapat dilakukan dengan menggunakan OpenCV sebagai piranti lunak dan webcam sebagai piranti keras. Analisa ini saya buat dengan mengacu berdasarkan video yang saya ambil dari youtube BERIKUT


Berikut ini merupakan hasil analisa Multiple Objek Tracking With OpenCV yang telah saya lakukan. Walau cuma sedikit yang bisa saya share semoga dapat bermanfaat. Kecil Tapi Luar Biasa.

Saya memang bukan orang yang pintar atau cerdas atau bahkan waaah ataupun Luar Biasa, tapi saya tahu ukuran kancing yang pas untuk baju saya.




Mohon maaf sebelumnya seyogyanya apabila ADA tulisan-tulisan yang jenengan cuplik dari sini saya dengan sangat mengharapkan untuk terbiasa menerapkan budaya MENCANTUMKAN sumber INI dalam daftar pustaka jenengan. Matur nuwun...

-----------------------------------------------------------------------------------------------------





Multiple Object Tracking OpenCV
(Pelacakan Beberapa Objek Menggunakan OpenCV)

Hermawan Prabowo , Soegianto Soelistiono
Mahasiswa , Dosen
Departemen Fisika,Fakultas Sains dan Teknologi
Universitas Airlangga Surabaya
Kampus C Mulyorejo, Surabaya 61113



Abstrak
Dalam analisa ini, digunakan bahasa pemrograman Pascal dan library Open Source Computer Vision (OpenCV) sebagai piranti lunak. Dengan menggunakan OpenCV dan metode image processing menggunakan webcam maka program JST dapat melakukan tracking beberapa objek. Proses image processing digunakan untuk mendeteksi objek bola, sehingga dari proses ini didapatkan data mengenai titik tengah objek dan luasan objek yang terdeteksi. Dari data yang didapatkan tersebut digunakan sebagai pendekatan lintasan objek dari proses tracking. Keberhasilan program JST ditentukan oleh kecermatan dalam melakukan image processing dan knowledge base dari pembelajaran yang diberikan.

Kata kunci: Image processing, jaringan syaraf tiruan, webcam, tracking, OpenCV.



PENDAHULUAN
 Tracking objek bisa dipahami sebagai sebuah contoh kasus yang cukup istimewa dari sekian banyak permasalahan umum yang dipelajari dalam bidang computer vision. Perkembangan tingginya kemampuan dari suatu komputer saat ini dan meningkatnya kebutuhan akan analisa video dilakukan secara otomatis yang telah banyak sekali menghasilkan sesuatu yang hebat dan menarik dalam algoritma tracking objek.
Penggunaan tracking objek ini merupakan sebuah permasalahan yang penting bagi sejumlah aplikasi yang mungkin bisa menguntungkan dalam penerapannya, seperti traffic monitoring, automated surveillance, sistem navigasi suatu kendaraan, terutama dalam bidang robotika yaitu mobile robot, robotic soccer dan masih banyak lagi yang bisa diaplikasikan.
Sudah diketahui dengan hasil yang baik bahwa vision digunakan sebagai sebuah computer vision yang handal dikarenakan kemampuannya untuk nonkontak dan penghitungan langsung dari lingkungan dan juga ketentuan dari beberapa informasi.
Dalam paper ini, dilakukan analisa untuk melakukan tracking / pelacakan beberapa objek lalu mengikutinya pada jarak yang bisa berubah-ubah. Prosedur tracking lebih ditekankan pada proses dalam pencarian objek dan mengikutinya. Hal tersebut dapat dilakukan melalui pemrosesan data dengan bantuan webcam.
TEORI PENUNJANG
Dalam teori penunjang ini disebutkan dan dijelaskan proses-proses yang dilakukan dalam melakukan tracking.
Konsep Sistem Objek Tracking
Tugas dari suatu penangkapan / deteksi obyek didefinisikan sebagai mengenali suatu obyek tertentu, sedangkan tracking / pelacakan didefinisikan sebagai mendekati sebuah obyek (juga disebut target) sampai cocok lokasinya.
Pengolahan Citra
            Pengolahan citra adalah suatu metode yang digunakan untuk mengolah gambar sehingga menghasilkan gambar yang sesuai dengan yang keinginkan kita. Pengambilan gambar bisa dilakukan dengan menggunakan kamera atau alat lain yang bisa digunakan untuk mentransfer gambar misalnya scanner atau kamera digital.
Bahasan kali ini berfokus pada pengambilan gambar menggunakan web kamera. Sehingga citra yang dihasilkan sudah berbentuk sinyal digital dan mudah dikenali atau dibaca komputer.
Citra digital adalah citra kontinyu yang sudah didiskritkan baik koordinat spasial maupun kecerahannya. Citra digital dianggap matrik dengan ukuran M x N dimana baris dan kolom menunjukkan titik-titiknya. Citra berwarna menggunakan metode RGB. Adapun masing-masing warna dalam tabel memiliki 3 buah kombinasi angka yaitu R, G, dan B yang menentukan proporsi warna merah, warna hijau dan warna biru dari warna tersebut. RGB masing-masing memiliki range antara 0 hingga 63 sehingga jumlah warna yang dapat kita pilih untukn mengisi warna pada sebuah cell di tabel ialah 63x63x63 = 16 juta warna. Tetapi seluruh tabel hanya dapat diisi dengan 256 pilihan warna. Kita dapat mengubah intensitas warna dari sebuah warna pada tabel dengan cara menggunakan interupt-interupt.
Seringkali citra yang dihasilkan atau didapatkan memiliki kualitas yang kurang bagus. Hal ini dapat dikarenakan gangguan teknis peralatan yang digunakan atau adanya noise sekitarnya. Dapat juga dikarenakan kurang bagusnya pencahayaan. Untuk ini dilakukan manipulasi data-data untuk memperbaiki kualitas citra.
Color Filtering
Color Filtering adalah metode yang berguna untuk menemukan sebuah warna yang terdapat pada sebuah gambar. Dengan ditemukannya warna yang kita cari pada sebuah gambar, kita dapat menentukan proses apa yang selanjutnya harus dilakukan.
Pada dasarnya pencarian ini menggunakan kombinasi dari komponen Red, Green, dan Blue yang terdapat pada gambar. Nilai dari masing-masing komponen ini didapat dari hasil beberapa kali eksperimen. Hasil dari eksperimen ini adalah sebuah kombinasi dari komponen warna Red, Green, dan Blue. Kombinasi warna ini yang kemudian dijadikan filter yang merupakan penentu sebuah warna diloloskan atau tidak.
Keluaran dari metode ini langsung akan menghasilkan sebuah gambar biner. Gambar biner sendiri adalah sebuah gambar yang hanya memiliki 2 derajat keabuan yaitu hitam dan putih seperti pada Gambar 1. Dimana warna putih pada gambar adalah merupakan representasi dari sebuah pixel yang warnanya diloloskan. Sedangkan warna hitam pada gambar merupakan representasi dari pixel yang warnanya tidak diloloskan.
Sehingga dari proses diatas, kita dapat menyimpulkan bahwa warna putih pada gambar adalah objek yang sedang kita cari. Karena warna putih pada gambar merupakan warna pada pixel yang sesuai dengan filter yang kita dapat dari hasil eksperimen.

Gambar 1. Contoh Gambar Derajat Keabuan
Sistem Warna RGB
Dalam pengolahan citra warna dipresentasikan dengan nilai hexadesimal dari 0x00000000 sampai 0x00ffffff. Warna hitam adalah 0x00000000 dan warna putih adalah 0x00ffffff. Definisi nilai warna diatas seperti Gambar 1 di bawah, variabel 0x00 menyatakan angka di belakangnya adalah hexadesimal.
Terlihat pada Gambar 2, bahwa setiap warna memiliki range nilai 00 (angka desimalnya adalah 0) dan ff (angka desimalnya adalah 256), atau mempunyai nilai derajat keabuan 256 = 28. Dengan demikian range warna yang digunakan adalah (28)(28)(28) = 224, 2 (atau yang dikenal dengan istilah True Colour pada Windows). Nilai warna yang digunakan diatas merupakan gabungan warna cahaya merah, warna hijau dan warna biru seperti yang terlihat pada gambar dibawah. Sehingga untuk menentukan nilai dari suatu warna yang bukan warna dasar digunakan gabungan skala kecerahan dari setiap warnanya.
Dari definisi Gambar 3 di bawah untuk menyajikan warna tertentu dapat dengan mudah dilakukan, yaitu dengan mencampurkan ketiga warna dasar RGB.

Gambar 2. Nilai warna RGB dalam Hexadesimal

Gambar 3. Kombinasi warna dalam Hexadesimal
Segmentasi Warna
            Segmentasi merupakan proses untuk memisahkan obyek yang kita ambil dengan latar belakang menggunakan teknik Color Filtering pada warna-warna yang mendekati warna obyek yang kita tentukan.

Gambar 4. Contoh segmentasi api

Thresholding
Tresholding digunakan untuk mengatur jumlah derajat keabuan yang ada pada citra. Dengan menggunakan tresholding maka derajat keabuan bisa diubah sesuai keinginan, misalkan diinginkan menggunakan derajat keabuan 16, maka tinggal membagi nilai derajat keabuan dengan 16. Proses tresholding ini pada dasarnya adalah proses pengubahan kuantisasi pada citra. Berikut ini contoh thresholding untuk mengubah citra berwarna.

Gambar 5. Hasil Tresholding

Erosi
Erosi merupakan proses penghapusan titik-titik batas objek menjadi bagian dari latar, berdasarkan structuring element yang digunakan. Pada operasi ini, ukuran obyek diperkecil dengan mengikis sekeliling objek.
Cara yang dapat dilakukan ada 2:
§  Dengan mengubah semua titik batas menjadi titik latar.
§  Dengan menset semua titik di sekeliling titik latar menjadi titik latar.
Algoritma untuk operasi Erosi:
Untuk semua titik dalam citra
Cek apakah tersebut titik latar
ü  Jika ya maka ubah semua tetangganya menjadi titik latar
ü  Jika tidak maka lanjutkan

Gambar 6. Proses Erosi

Dilasi
Dilasi merupakan proses penggabungan titik-titik latar menjadi bagian dari objek, berdasarkan structuring element yang digunakan. Proses ini adalah kebalikan dari erosi, yaitu merubah latar disekeliling objek menjadi bagian dari objek tersebut.
Terdapat 2 cara untuk melakukan operasi ini, yaitu:
§  Dengan cara mengubah semua titik latar yang bertetangga dengan titik batas menjadi titik obyek, atau lebih mudahnya set setiap titik yang tetangganya adalah titik obyek menjadi titik obyek.
§  Dengan mengubah semua titik di sekeliling titik batas menjadi titik obyek, atau lebih mudahnya set semua titik tetangga sebuah titik obyek menjadi titik obyek.
Algoritma untuk operasi dilasi citra biner:
Untuk semua titik dalam citra
Cek apakah tersebut titik objek
ü  Jika ya maka ubah semua tetangganya menjadi titik objek
ü  Jika tidak maka lanjutkan

Gambar 7. Proses Dilasi

Canny Edge Detection
Metode Canny ini tidak memiliki operator khusus, namun metode ini terdiri dari beberapa langkah khusus. Metode Canny akan mendeteksi tepi dengan mencari nilai gradien maksimal lokal dari sebuah citra I. Gradien tersebut dihitung menggunakan turunan dari Gaussian filter.
Metode Canny menggunakan dua thresholds, yang berguna untuk mendeteksi tepian yang terlihat jelas, dan tepian yang kurang jelas atau lemah, termasuk juga tepian yang kurang jelas yang terlihat pada output yang terhubung dengan tepian yang jelas.
Metode ini lain dengan metode sebelumnya, yang sebelum dilakukan proses deteksi tepi harus dilakukan terlebih dahulu proses penghilangan noise. Metode Canny lebih utama akan mendeteksi tepian yang kurang jelas, yang tidak dapat diperoleh dengan menggunakan metode lain.
Computer Vision
Pengolahan citra digital adalah computer vision atau machine computer. Pada hakikatnya, computer vision mencoba meniru cara kerja visual manusia (Human Vision). Human Vision sesungguhnya sangat kompleks, manusia melihat obyek dengan indera penglihatan (mata) lalu obyek citra diteruskan ke otak untuk diinterpretasi sehingga manusia mengerti obyek apa yang tampak dalam pandangan matanya. Hasil interpretasi ini mungkin digunakan untuk mengambil suatu keputusan.
Computer vision merupakan proses otomatis yang mengintegrasikan sejumlah besar proses untuk persepsi visual, seperti akuisisi citra, pengolahn citra, klasifikasi, pengenalan (recognition), dan membuat keputusan. Computer vision terdiri dari teknik-teknik untuk mengestimasi ciri-ciri objek dalam citra, pengukuran ciri yang berkaitan dengan geometri objek, dan menginterpretasi informasi geometri tersebut. Secara ringkas bisa dilihat persamaan berikut:

Vision = Geometry + Measurement + Interpretation

Proses-proses dalam computer vision dibagi dalam 3 (tiga) aktifitas :
ü  Memperoleh atau mengakuisisi citra digital.
ü  Melakukan teknik komputasi untuk memproses atau memodifikasi data citra. (operasi-operasi pengolahan citra).
ü  Menganalisis dan menginterpretasi citra menggunakan hasil pemrosesan untuk tujuan tertentu, misalnya memandu robot, mengontrol peralatan, memantau manufaktur dan lain-lain.

Pengolahan citra merupakan proses awal (preprocessing) pada computer vision, sedangkan pengenalan pola merupakan proses untuk menginterpretasi citra. Teknik-teknik di dalam pengenalan pola memainkan peranan penting dalam computer vision untuk mengenali objek.

OpenCV
            OpenCV adalah suatu library computer vision yang dibuat oleh para developer Intel Corporation yang bersifat Open Source, library tersebut merupakan kumpulan fungsi-fungsi C dan beberapa kelas C++ yang mengimplementasikan banyak algoritma-algoritma Image Processing dan Computer Vision.
METODE PENELITIAN
Di dalam pembuatan aplikasi Pelacakan beberapa objek proses yang harus ditekankan adalah image processing yaitu menganalisa ekstraksi ciri dari suatu warna, bentuk, bidang, dan sebagainya dari Suatu objek tertentu. Kasus yang dianalisa ini diambil dari salah satu video youtube.

Gambar 8. Tracking objek

Aplikasi pelacakan objek dalam hal ini menggunakan OpenCv dari Borland Delphi. Pada Gambar 9 ditampilkan desain flowchart dari sistem tracking.


Gambar 9. Flowcart sistem tracking
Pada Gambar 9 flowchart proses tracking terlihat bahwa perancangan sistem ini dimulai dari inisialisasi driver webcam dengan tujuan agar pada saat webcam menangkap objek aplikasi program ini langsung secara otomatis dapat langsung terhubung dengan program JST, sehingga mempermudah indentifikasi objek tertentu yang hendak dilacak. Langkah berikutnya yaitu image processing yaitu proses ekstraksi ciri berupa warna, bentuk, bidang, dan sebagainya dengan tujuan untuk mendapatkan posisi objek berdasarkan titik koordinat. Setelah itu, dari ekstraksi ciri tersebut diproses kembali dengan thresholding, erosi dan dilasi agar diperoleh karakter dari suatu objek yang akan menjadi bahan tracking.
Dari karakteristik warna, bentuk maupun bidang  yang lebih spesifik agar lebih mudah diidentifikasi dapat ditampilkan pada histogram. Dari histogram tersebut dapat digunakan untuk sistem pembelajaran yang nantinya dijadikan sebagai knowledge base JST. Selain itu dari histogram juga dapat mempermudah dalam pemberian syarat batas untuk memberikan garis tepi dari suatu objek tertentu yang hendak dilakukan tracking. Keberhasilan identifikasi oleh program JST bergantung bergantung pada proses pembelajaran yang diberikan.
HASIL DAN PEMBAHASAN
Pendekatan tingkat akurasi hasil tracking dilakukan dengan memanfaatkan pemrograman algoritma thresholding, erosi dan dilasi. Image processing dalam aplikasi tracking beberapa objek merupakan hal paling penting dan meaningfull yang menentukan tingkat keberhasilan program JST dalam melakukan pendekatan tracking. Karena dalam image processing ada proses penting yaitu erosi dan dilasi atau dengan bahasa awam disebut juga tendang menendang bit, sehingga akan diperoleh hasil ekstraksi ciri yang jelas. Dari ekstraksi ciri tersebut akan didapatkan karakteristik objek yang hendak dilakukan tracking. Hal lain yang juga berpengaruh dalam keberhasilan aplikasi tracking ini bergantung oleh knowledge base dari pembelajaran yang diberikan pada program JST.
Karena dalam aplikasi ini objek yang akan dilakukan tracking bukan objek diam atau dengan kata lain merupakan objek yang senantiasa terus bergerak dengan format video maka kehandalan webcam dalam mengakuisisi objek juga sangat berperan dalam keberhasilan program JST. Semakin besar pixel yang dimiliki alat perekam maka juga semakin smooth hasil objek yang didapat ataupun direkam sehingga mempengaruhi proses image processing yang dilakukan.
KESIMPULAN
Berdasarkan analisa dari beberapa pengujian yang dijelaskan, kesimpulan yang didapatkan adalah :
1.      Dari pemrograman algoritma thresholding, erosi dan dilasi dapat dilakukan tracking beberapa objek dengan menggunakan OpenCV dan bantuan webcam kualitas tinggi untuk proses perekaman objek tracking. 
2.      Intensitas pencahayaan dalam ruang sangat berpengaruh dalam mendeteksi proses tracking objek yang diberikan, karena perbedaan intensitas sangat berpengaruh dalam proses segmentasi warna objek.
DAFTAR PUSTAKA
Kaehler, Gary Bradski and Adrian. 2008. Learning OpenCV - Computer Vision with the OpenCV Library. O’Reilly Media, Inc. CA.
Ahmad, Usman. 2005. Pengolahan Citra Digital dan pemrogramannya. Graha Ilmu. Yogyakarta.
Gary Bradski & Adrian Kaehler, Learning OpenCV Computer Vision with OpenCV Library, O’REILLY.