Monday, November 15, 2010

Sistem Pengenalan Plat Nomor Mobil Dengan Metode Principal Components Analysis

Paper ini membahas sistem pengenalan plat nomor mobil menggunakan teknik computer vision. Image mobil diambil dari kamera, dan selanjutnya diidentifikasi secara otomatis dengan cara mencari lokasi plat nomor mobil tersebut, mensegmentasi setiap karakter yang ada dari plat tersebut dan kemudian melakukan pengenalan pada setiap karakter dengan metode feature reduction PCA. Aplikasi ini dibangun menggunakan Microsoft Visual C++ 6.0®, Microsoft® DirectShow®, Intel® Image Processing Library dan Open Source Computer Vision Library. Aplikasi ini telah diimplementasikan dan dapat mendeteksi letak plat nomor serta mengenalinya pada PC Pentium II/400 MHz. Sistem telah diujicobakan pada suatu basis data yang mewakili 26 karakter (0-9, A-Z) yang masing-masing terdiri dari beberapa variasi gambar mobil. Hasil uji coba menunjukkan tingkat keberhasilan yang cukup menggembirakan, dimana tingkat keberhasilan mencapai ±82%. Sistem cukup prospektif digunakan sebagai salah satu sistem kontrol dan sekuriti pada area parkir.
Deskripsi Sistem
Sistem deteksi dan pengenalan plat nomor kendaraan bermotor secara otomatis telah menjadi suatu aplikasi yang sangat penting dalam bidang computer vision. Sistem ini dibagi menjadi menjadi empat bagian modul yaitu  video capturing, database training, plate detection, dan character recognition.
 
Gambar Blok Diagram Sistem

1.   Video Capturing – DirectShow Process
Modul ini bertujuan untuk melakukan pengambilan gambar yang berasal dari kamera atau dari file video. Dalam proses ini terdiri dari dua sub program, yang pertama adalah proses untuk menerima input baik dari kamera atau dari file video dan yang kedua adalah proses untuk melakukan pengambilan gambar (grabbing) dari input tersebut. Kedua proses tersebut menggunakan fasilitas library yang telah disediakan oleh Microsoft® DirectShow®. Penggunaan library ini sangat bermanfaat karena proses input dapat berlangsung secara realtime.
Program aplikasi DirectShow yang dibuat dalam sistem ini, berdasarkan sumber inputnya (source filter) secara garis besar dapat dibagi menjadi dua bagian, yaitu: input dari file berupa AVIFile, dan input dari kamera. Bagian input AVIFile dibangun dengan pendekatan pertama, sedangkan bagian input kamera dibangun dengan menggunakan pendekatan ketiga. Kedua bagian ini secara garis besar memiliki prosedur utama yang hampir sama. Berikut diagram alir dari bagian input :

Gambar Proses Input Kamera

2.   Database Training – PCA Algorithm
Bagian ini adalah proses untuk melakukan proses training PCA pada kumpulan image database. Dimana database ini berupa sekumpulan gambar karakter alphanumeric yang terdiri dari beberapa macam variasi untuk masing-masing karakternya (0-9 dan A-Z). Database yang digunakan sebanyak ± 600 gambar. Dalam modul training ini dihasilkan output berupa Eigen Object dan Average Object serta bobot masing masing karakter yang terdapat dalam database, hasil bobot ini disimpan ke dalam suatu list array. Principal Components Analysis (PCA)[1] digunakan untuk mereduksi dimensi image menjadi feature yang lebih sedikit. Ini dilakukan dengan mentransformasi ruang image kedalam basis atau sistem koordinat yang baru dengan representasi yang lebih kompak. Basis-basis image didapatkan dari sekumpulan karakterkarakter yang dilatihkan (training alphanumeric). Feature yang baru tersebut akan dibentuk melalui kombinasi bobot linear dalam ruang eigen (basis image). Komponen dari feature ruang eigen ini tidak saling berkorelasi dan akan memaksimalkan perbedaan yang ada di dalam ruang aslinya.
Maksud dari Principal Components Analysis adalah untuk menangkap variasi total di dalam kumpulan karakter yang dilatihkan, dan untuk merepresentasikan variasi ini dengan variable yang lebih sedikit. Suatu image yang direpresentasikan dengan variabel yang sedikit akan lebih mudah untuk ditangani dan dimengerti daripada jika direpresentasikan dengan raw pixel yang banyak dari image tersebut.

3.   Plate Finder Algorithm
Berikut ini adalah proses diagram alir secara sederhana dari algoritma Plate Finder:


Gambar Diagram Pendeteksian Plat Nomor
Pada bagian ini, sistem akan menggunakan gambar yang dihasilkan pada proses capture dari kamera atau gambar dari input user. Gambar ini kemudian di konversi dari gambar berwarna menjadi gambar grayscale. Selanjutnya dilakukan proses thresholding pada gambar grayscale tersebut menghasilkan gambar biner (hitam dan putih saja).
Tahap selanjutnya adalah mencari kandidat angka/digit pada gambar biner ini (Digit Location). Semua kemungkinan objek yang berupa alphanumeric dari gambar akan dicari pada tahap digit location ini. Algoritma ini akan mencari pada setiap pixel yang terdapat pada gambar dan melakukan pengecekan pada setiap iterasi dengan menggunakan sejumlah aturan, dimana apakah terdapat sebuah kandidat digit pada posisi pixel yang bersangkutan. Proses ini terdiri dari dua langkah, yaitu:
3.1. Adaptive size bounding box searching

Proses ini dibagi lagi menjadi tiga tahap:
  • Sebuah model yang berbentuk “L” terbalik akan digerakkan pada gambar. Model “L” terbalik ini memiliki tinggi 20 pixel dan lebar 12 pixel. Nilai ini didapat dari hasil rata-rata setiap gambar kendaraan yang ada. Pada setiap posisi pixel beberapa hal berikut dilakukan:
(a) Jika tidak terdapat pixel (putih) pada posisi garis vertikal atau horisontal dari model “L” yang terbalik, maka tidak ada digit yang terdeteksi pada posisi ini.
(b) Jika terdapat pixel (putih) tepat pada posisi atas dan kiri dari model “L”, maka berarti ada terdeksi digit pada posisi ini. Jika suatu posisi memenuhi kondisi ini maka dapat diartikan bahwa telah ditemukan posisi pojok kiri atas dari suatu digit. Dibawah ini adalah visualisasi cara kerja dari model “L” terbalik:


Gambar Deteksi Karakter
  • Garis vertikal yang kedua digerakkan, untuk tiap pixel demi pixel, ke arah kanan, dari posisi terakhir yang ditemukan pada tahap sebelumnya. Garis vertikal ini digerakkan hingga tidak ditemukan satu pixel putih pun sepanjang garis vertikal ini. Dalam hal ini panjang dari kandidat digit yang ditemukan dihitung, dan apabila panjang dari kandidat digit ini melebihi batas rata-rata dari suatu digit, maka posisi akan didiskualifikasi.

  • Pada tahap ini, garis horisontal yang kedua dengan panjang yang telah ditemukan pada tahap sebelumnya, digerakkan ke bawah hingga tidak ditemukan satu pixel putih pun sepanjang garis horisontal ini. Jika tinggi dari kandidat digit ini memenuhi kondisi tinggi rata-rata suatu digit, maka proses dapat melanjutkan pada tahap selanjutnya, jika tidak maka proses akan kembali pada tahap yang pertama.

3.2 Pixel Coverage Checking
Setelah posisi suatu kandidat digit ditemukan maka, nilai semua pixel putih yang terdapat pada posisi ini akan dihitung semua. Jika nilai pixel memenuhi kondisi maka posisi ini akan disimpan sebagai kandidat karakter, jika tidak memenuhi akan didiskualifikasi. Tujuan dari proses ini adalah untuk menghilangkan suatu kandidat yang terlalu besar atau terlalu kecil.
Setelah semua kandidat digit ditemukan maka selanjutnya adalah mencari lokasi kandidat plat nomor kendaraan (Plate Area Location). Logika pada bagian ini adalah menggunakan posisi objek karakter yang ditemukan pada bagian sebelumnya untuk menentukan letak plat nomor. Langkah pertama adalah membangun suatu model yang berbentuk persegi panjang (plate bounding box). Panjang dan lebar model ini telah diatur berdasarkan rata-rata dari image kendaraan yang ada (lebar 120 pixel dan tinggi 33 pixel). Model ini akan digerakkan mulai dari posisi kandidat digit pertama yang ditemukan pada tahap sebelumnya hingga pada posisi terakhir kandidat digit yang ditemukan. Berikut ini adalah visualisasi dari model persegi panjang yang digunakan untuk mencari lokasi plat.

Gambar  Lokalisasi Karakter
Pada setiap iterasi akan dilakukan pengecekan apakah pada daerah sekitar model persegi panjang ini terdapat berapa banyak kandidat digit. Kandidat digit yang ada harus terdiri dari minimal tiga atau maksimal delapan digit. Hal ini diasumsikan bahwa plat nomor standart yang ada di negara kita memiliki kondisi yang demikian. Selain dilakukan pengecekan banyaknya kandidat digit, juga dilakukan pengecekan terhadap posisi dari masing masing kandidat digit tersebut. Hal ini dilakukan sebagai pencegahan terhadap pengambilan kandidat digit yang salah. Apabila posisi teratas antara kandidat digit yang satu dengan yang lain terpaut sangat jauh, maka posisi kandidat ini akan didiskualifikasi. Posisi model persegi panjang yang dapat diterima adalah posisi dimana terdapat kandidat digit yang lebih dari dua dan kurang dari sembilan, serta memiliki posisi yang tingginya tidak terpaut jauh antara satu dengan yang lainnya. Posisi yang benar akan disimpan dalam suatu list array.
Setelah semua kandidat plat nomor ditemukan, maka selanjutnya adalah mencari lokasi sebenarnya dari kandidat-kandidat plat nomor yang ditemukan pada tahap sebelumnya (Final Plate Location). Pada tahap ini akan melakukan iterasi terhadap seluruh kandidat plat nomor yang ditemukan pada tahap sebelumnya. Umumnya setelah memasuki tahap terakhir ini kandidat plat nomor yang ada sering menghasilkan satu kandidat saja. Dan apabila kandidat plat nomor yang dihasilkan ternyata lebih dari satu, maka plat nomor yang dipilih adalah kandidat yang memiliki posisi paling bawah pada image. Pada lokasi yang ditemukan tersebut kemudian dilakukan proses cropping. Hasil dari cropping tersebut disimpan ke dalam sebuah file yang digunakan lebih lanjut untuk proses pengenalan.


4.   Character Recognition: dengan Nearest Neighbour Classifier
Pada tahap akhir ini, image plat nomor yang ditemukan akan dilakukan segmentasi karakter terlebih dahulu. Proses segmentasi karakter dilakukan untuk mengekstraksi masing masing karakter yang terdapat pada plat nomor. Pada tahap ini algoritma yang dilakukan adalah menggunakan metode seperti pada modul deteksi letak plat nomor tetapi dengan melakukan perubahan pada algoritmanya. Perubahan yang dilakukan adalah apabila model “L” terbalik telah menemukan kandidat digit, maka pada setiap posisi tersebut dilakukan proses cropping dan dilakukan proses resize pada kandidat digit ini. Proses resize ini bertujuan agar semua karakter yang akan dikenali memiliki ukuran yang sama. Resize dilakukan dengan ukuran 20 pixel untuk lebar dan 30 pixel untuk tingginya (disesuaikan dengan data image pada database). Hasil cropping tersebut disimpan kedalam list. Pada bagian ini apabila terdapat kandidat digit yang saling berhubungan kemungkinan akan dapat terektraksi bersama. Setelah proses cropping selesai maka dilanjutkan pada proses selanjutnya, yaitu pengenalan karakter menggunakan Nearest Neighbour Classifier .

Open Source Computer Vision (OpenCV)
Implementasi sistem yang dikerjakan disini menggunakan platform Windows dengan bahasa pemrograman Visual C++. Di sini digunakan library perangkat lunak Open Source Computer Vision (OpenCV). OpenCV mulai dikembangkan sejak tahun 1999 oleh Visual Interactivity Group didalam Intel's Microprocessor Research Lab [4]. Proyek ini dibuat dengan tujuan untuk mendirikan sebuah komunitas open source vision dan menyediakan sebuah situs dimana usaha terdistribusi dari komunitas dapat dikonsolidasikan dan performance-nya dapat dioptimalkan. 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 prossesor Intel sehingga dapat berjalan jauh lebih cepat.




Paper ini membahas sistem pengenalan plat nomor mobil menggunakan teknik computer vision. Image mobil diambil dari kamera, dan selanjutnya diidentifikasi secara otomatis dengan cara mencari lokasi plat nomor mobil tersebut, mensegmentasi setiap karakter yang ada dari plat tersebut dan kemudian melakukan pengenalan pada setiap karakter dengan metode feature reduction PCA. Aplikasi ini dibangun menggunakan Microsoft Visual C++ 6.0®, Microsoft® DirectShow®, Intel® Image Processing Library dan Open Source Computer Vision Library. Aplikasi ini telah diimplementasikan dan dapat mendeteksi letak plat nomor serta mengenalinya pada PC Pentium II/400 MHz. Sistem telah diujicobakan pada suatu basis data yang mewakili 26 karakter (0-9, A-Z) yang masing-masing terdiri dari beberapa variasi gambar mobil. Hasil uji coba menunjukkan tingkat keberhasilan yang cukup menggembirakan, dimana tingkat keberhasilan mencapai ±82%. Sistem cukup prospektif digunakan sebagai salah satu sistem kontrol dan sekuriti pada area parkir.
Deskripsi Sistem

Sistem deteksi dan pengenalan plat nomor kendaraan bermotor secara otomatis telah menjadi suatu aplikasi yang sangat penting dalam bidang computer vision. Sistem ini dibagi menjadi menjadi empat bagian modul yaitu  video capturing, database training, plate detection, dan character recognition.
 
Gambar Blok Diagram Sistem

1.   Video Capturing – DirectShow Process

Modul ini bertujuan untuk melakukan pengambilan gambar yang berasal dari kamera atau dari file video. Dalam proses ini terdiri dari dua sub program, yang pertama adalah proses untuk menerima input baik dari kamera atau dari file video dan yang kedua adalah proses untuk melakukan pengambilan gambar (grabbing) dari input tersebut. Kedua proses tersebut menggunakan fasilitas library yang telah disediakan oleh Microsoft® DirectShow®. Penggunaan library ini sangat bermanfaat karena proses input dapat berlangsung secara realtime.

Program aplikasi DirectShow yang dibuat dalam sistem ini, berdasarkan sumber inputnya (source filter) secara garis besar dapat dibagi menjadi dua bagian, yaitu: input dari file berupa AVIFile, dan input dari kamera. Bagian input AVIFile dibangun dengan pendekatan pertama, sedangkan bagian input kamera dibangun dengan menggunakan pendekatan ketiga. Kedua bagian ini secara garis besar memiliki prosedur utama yang hampir sama. Berikut diagram alir dari bagian input :

Gambar Proses Input Kamera

2.   Database Training – PCA Algorithm

Bagian ini adalah proses untuk melakukan proses training PCA pada kumpulan image database. Dimana database ini berupa sekumpulan gambar karakter alphanumeric yang terdiri dari beberapa macam variasi untuk masing-masing karakternya (0-9 dan A-Z). Database yang digunakan sebanyak ± 600 gambar. Dalam modul training ini dihasilkan output berupa Eigen Object dan Average Object serta bobot masing masing karakter yang terdapat dalam database, hasil bobot ini disimpan ke dalam suatu list array. Principal Components Analysis (PCA)[1] digunakan untuk mereduksi dimensi image menjadi feature yang lebih sedikit. Ini dilakukan dengan mentransformasi ruang image kedalam basis atau sistem koordinat yang baru dengan representasi yang lebih kompak. Basis-basis image didapatkan dari sekumpulan karakterkarakter yang dilatihkan (training alphanumeric). Feature yang baru tersebut akan dibentuk melalui kombinasi bobot linear dalam ruang eigen (basis image). Komponen dari feature ruang eigen ini tidak saling berkorelasi dan akan memaksimalkan perbedaan yang ada di dalam ruang aslinya.

Maksud dari Principal Components Analysis adalah untuk menangkap variasi total di dalam kumpulan karakter yang dilatihkan, dan untuk merepresentasikan variasi ini dengan variable yang lebih sedikit. Suatu image yang direpresentasikan dengan variabel yang sedikit akan lebih mudah untuk ditangani dan dimengerti daripada jika direpresentasikan dengan raw pixel yang banyak dari image tersebut.

3.   Plate Finder Algorithm

Berikut ini adalah proses diagram alir secara sederhana dari algoritma Plate Finder:



Gambar Diagram Pendeteksian Plat Nomor
Pada bagian ini, sistem akan menggunakan gambar yang dihasilkan pada proses capture dari kamera atau gambar dari input user. Gambar ini kemudian di konversi dari gambar berwarna menjadi gambar grayscale. Selanjutnya dilakukan proses thresholding pada gambar grayscale tersebut menghasilkan gambar biner (hitam dan putih saja).

Tahap selanjutnya adalah mencari kandidat angka/digit pada gambar biner ini (Digit Location). Semua kemungkinan objek yang berupa alphanumeric dari gambar akan dicari pada tahap digit location ini. Algoritma ini akan mencari pada setiap pixel yang terdapat pada gambar dan melakukan pengecekan pada setiap iterasi dengan menggunakan sejumlah aturan, dimana apakah terdapat sebuah kandidat digit pada posisi pixel yang bersangkutan. Proses ini terdiri dari dua langkah, yaitu:
3.1. Adaptive size bounding box searching

Proses ini dibagi lagi menjadi tiga tahap:
  • Sebuah model yang berbentuk “L” terbalik akan digerakkan pada gambar. Model “L” terbalik ini memiliki tinggi 20 pixel dan lebar 12 pixel. Nilai ini didapat dari hasil rata-rata setiap gambar kendaraan yang ada. Pada setiap posisi pixel beberapa hal berikut dilakukan:

(a) Jika tidak terdapat pixel (putih) pada posisi garis vertikal atau horisontal dari model “L” yang terbalik, maka tidak ada digit yang terdeteksi pada posisi ini.

(b) Jika terdapat pixel (putih) tepat pada posisi atas dan kiri dari model “L”, maka berarti ada terdeksi digit pada posisi ini. Jika suatu posisi memenuhi kondisi ini maka dapat diartikan bahwa telah ditemukan posisi pojok kiri atas dari suatu digit. Dibawah ini adalah visualisasi cara kerja dari model “L” terbalik:



Gambar Deteksi Karakter

  • Garis vertikal yang kedua digerakkan, untuk tiap pixel demi pixel, ke arah kanan, dari posisi terakhir yang ditemukan pada tahap sebelumnya. Garis vertikal ini digerakkan hingga tidak ditemukan satu pixel putih pun sepanjang garis vertikal ini. Dalam hal ini panjang dari kandidat digit yang ditemukan dihitung, dan apabila panjang dari kandidat digit ini melebihi batas rata-rata dari suatu digit, maka posisi akan didiskualifikasi.

  • Pada tahap ini, garis horisontal yang kedua dengan panjang yang telah ditemukan pada tahap sebelumnya, digerakkan ke bawah hingga tidak ditemukan satu pixel putih pun sepanjang garis horisontal ini. Jika tinggi dari kandidat digit ini memenuhi kondisi tinggi rata-rata suatu digit, maka proses dapat melanjutkan pada tahap selanjutnya, jika tidak maka proses akan kembali pada tahap yang pertama.

3.2 Pixel Coverage Checking

Setelah posisi suatu kandidat digit ditemukan maka, nilai semua pixel putih yang terdapat pada posisi ini akan dihitung semua. Jika nilai pixel memenuhi kondisi maka posisi ini akan disimpan sebagai kandidat karakter, jika tidak memenuhi akan didiskualifikasi. Tujuan dari proses ini adalah untuk menghilangkan suatu kandidat yang terlalu besar atau terlalu kecil.

Setelah semua kandidat digit ditemukan maka selanjutnya adalah mencari lokasi kandidat plat nomor kendaraan (Plate Area Location). Logika pada bagian ini adalah menggunakan posisi objek karakter yang ditemukan pada bagian sebelumnya untuk menentukan letak plat nomor. Langkah pertama adalah membangun suatu model yang berbentuk persegi panjang (plate bounding box). Panjang dan lebar model ini telah diatur berdasarkan rata-rata dari image kendaraan yang ada (lebar 120 pixel dan tinggi 33 pixel). Model ini akan digerakkan mulai dari posisi kandidat digit pertama yang ditemukan pada tahap sebelumnya hingga pada posisi terakhir kandidat digit yang ditemukan. Berikut ini adalah visualisasi dari model persegi panjang yang digunakan untuk mencari lokasi plat.

Gambar  Lokalisasi Karakter
Pada setiap iterasi akan dilakukan pengecekan apakah pada daerah sekitar model persegi panjang ini terdapat berapa banyak kandidat digit. Kandidat digit yang ada harus terdiri dari minimal tiga atau maksimal delapan digit. Hal ini diasumsikan bahwa plat nomor standart yang ada di negara kita memiliki kondisi yang demikian. Selain dilakukan pengecekan banyaknya kandidat digit, juga dilakukan pengecekan terhadap posisi dari masing masing kandidat digit tersebut. Hal ini dilakukan sebagai pencegahan terhadap pengambilan kandidat digit yang salah. Apabila posisi teratas antara kandidat digit yang satu dengan yang lain terpaut sangat jauh, maka posisi kandidat ini akan didiskualifikasi. Posisi model persegi panjang yang dapat diterima adalah posisi dimana terdapat kandidat digit yang lebih dari dua dan kurang dari sembilan, serta memiliki posisi yang tingginya tidak terpaut jauh antara satu dengan yang lainnya. Posisi yang benar akan disimpan dalam suatu list array.

Setelah semua kandidat plat nomor ditemukan, maka selanjutnya adalah mencari lokasi sebenarnya dari kandidat-kandidat plat nomor yang ditemukan pada tahap sebelumnya (Final Plate Location). Pada tahap ini akan melakukan iterasi terhadap seluruh kandidat plat nomor yang ditemukan pada tahap sebelumnya. Umumnya setelah memasuki tahap terakhir ini kandidat plat nomor yang ada sering menghasilkan satu kandidat saja. Dan apabila kandidat plat nomor yang dihasilkan ternyata lebih dari satu, maka plat nomor yang dipilih adalah kandidat yang memiliki posisi paling bawah pada image. Pada lokasi yang ditemukan tersebut kemudian dilakukan proses cropping. Hasil dari cropping tersebut disimpan ke dalam sebuah file yang digunakan lebih lanjut untuk proses pengenalan.



4.   Character Recognition: dengan Nearest Neighbour Classifier

Pada tahap akhir ini, image plat nomor yang ditemukan akan dilakukan segmentasi karakter terlebih dahulu. Proses segmentasi karakter dilakukan untuk mengekstraksi masing masing karakter yang terdapat pada plat nomor. Pada tahap ini algoritma yang dilakukan adalah menggunakan metode seperti pada modul deteksi letak plat nomor tetapi dengan melakukan perubahan pada algoritmanya. Perubahan yang dilakukan adalah apabila model “L” terbalik telah menemukan kandidat digit, maka pada setiap posisi tersebut dilakukan proses cropping dan dilakukan proses resize pada kandidat digit ini. Proses resize ini bertujuan agar semua karakter yang akan dikenali memiliki ukuran yang sama. Resize dilakukan dengan ukuran 20 pixel untuk lebar dan 30 pixel untuk tingginya (disesuaikan dengan data image pada database). Hasil cropping tersebut disimpan kedalam list. Pada bagian ini apabila terdapat kandidat digit yang saling berhubungan kemungkinan akan dapat terektraksi bersama. Setelah proses cropping selesai maka dilanjutkan pada proses selanjutnya, yaitu pengenalan karakter menggunakan Nearest Neighbour Classifier .

Open Source Computer Vision (OpenCV)

Implementasi sistem yang dikerjakan disini menggunakan platform Windows dengan bahasa pemrograman Visual C++. Di sini digunakan library perangkat lunak Open Source Computer Vision (OpenCV). OpenCV mulai dikembangkan sejak tahun 1999 oleh Visual Interactivity Group didalam Intel's Microprocessor Research Lab [4]. Proyek ini dibuat dengan tujuan untuk mendirikan sebuah komunitas open source vision dan menyediakan sebuah situs dimana usaha terdistribusi dari komunitas dapat dikonsolidasikan dan performance-nya dapat dioptimalkan. 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 prossesor Intel sehingga dapat berjalan jauh lebih cepat.