• Tidak ada hasil yang ditemukan

Open Source Computer Vision (OpenCV)

OpenCV adalah singkatan dari Intel® Open Source Computer Vision Library. Merupakan kumpulan dari struktur data dan fungsi-fungsi dalam bahasa pemrograman C serta beberapa class C++, yang menggunakan prinsip pemrograman berorientasi objek atau lebih dikenal dengan sebutan OOP (Object Oriented Programming). Kumpulan struktur data, fungsi, dan class tersebut merupakan implementasi dari beberapa algoritma populer yang sering digunakan pada aplikasi Computer Vision dan dikelompokkan dalam beberapa kategori, sesuai dengan penjelasan dari Intel Open Source Computer Vision Library – Reference Manual, yaitu sebagai berikut:

a. Basic Structure and Operations

dibagi lagi menjadi beberapa kategori sebagai berikut:

• Image Function, seperti: pembuatan header image dan alokasi data (cvCreateImage), penghapusan image dari memori (cvReleaseImage), menentukan ROI (cvSetImageROI), dan sebagainya. Perlu diperhatikan bahwa terdapat beberapa fungsi yang memiliki kegunaan yang sama antara IPL dan OpenCV.

• Drawing Primitives, seperti: menggambar garis (cvLine), mencetak string (cvPutText), dan sebagainya.

Universitas Kristen Petra

• Utility Function, seperti: memisahkan warna image ke dalam masing-masing plane yang terpisah (RGB, HSV) dengan fungsi cvCvtPixToPlane, melakukan fill image dengan suatu nilai konstan (cvFillImage), dan sebagainya.

• dan sebagainya.

b. Motion Analysis and Object Tracking

melakukan pelacakan warna (cvCamShift), menghitung optical flow antara dua image dengan metode Lukas Kanade (cvCalcOpticalFlowLK), dan sebagainya.

c. Image Analysis

menghitung nilai mean pada image region (cvMean), menghitung nilai histogram image (cvCalcHist), dan sebagainya.

d. Object Recognition

berisi fungsi-fungsi yang digunakan pada sistem pengenalan objek, seperti:

menghitung nilai likelihood/kemiripan (cvEViterbi) pada metode EHMM, menghitung koefisien decomposition dari input objek (cvCalcDecompCoeff) pada metode PCA, dan sebagainya.

e. dan sebagainya.

Struktur data utama yang digunakan pada sebagian besar fungsi IPL dan OpenCV yaitu struktur iplImage yang menyimpan informasi dari sebuah image, karena itu semua format citra (BMP, JPEG, TIFF, PNG) yang digunakan sebagai input harus diubah terlebih dahulu ke dalam struktur iplImage. Tabel berikut menjelaskan struktur dari iplImage:

Universitas Kristen Petra

Tabel 2.1. Struktur IplImage

Sumber : Intel Image Processing Library – Reference Manual. California: Intel Corporation, 2000

Field width dan height menunjukkan panjang dan lebar citra dalam piksel. Sedangkan field depth berisi informasi tipe dari nilai piksel, yaitu:

a. IPL_DEPTH_8U - unsigned 8-bit integer value (unsigned char), b. IPL_DEPTH_8S - signed 8-bit integer value (signed char atau char), c. IPL_DEPTH_16S - signed 16-bit integer value (short int),

d. IPL_DEPTH_32S - signed 32-bit integer value (int),

e. IPL_DEPTH_32F - 32-bit floating-point single-precision value (float).

Field nChannels menunjukkan jumlah color plane pada citra, dimana citra grayscale memakai satu channel, sedangkan citra berwarna biasanya terdiri dari tiga atau empat channel. Field origin menunjukkan letak data nilai piksel citra 50 di memory, apakah dimulai dari baris atas citra/top row (origin ==

IPL_ORIGIN_TL) atau dari baris bawah citra/bottom row (origin ==

typedef struct _IplImage {

int nSize /* size of iplImage struct */

int ID /* image header version */

struct _IplROI *roi; /* pointer to ROI if any */

struct _IplImage *maskROI; /*pointer to mask ROI if any

*/

void *imageId; /* use of the application */

struct _IplTileInfo *tileInfo; /* contains information on tiling */

int imageSize; /* useful size in bytes */

char *imageData; /* pointer to aligned image */

int widthStep; /* size of aligned line in bytes */

int BorderMode[4]; /* the top, bottom, left, and right border mode */

int BorderConst[4]; /* constants for the top, bottom, left, and right border */

char *imageDataOrigin; /* ptr to full, nonaligned image

*/

} IplImage;

Universitas Kristen Petra

IPL_ORIGIN_BL). Windows bitmap biasanya bertipe bottom-origin, sedangkan format citra lain pada umumnya bertipe top-origin. Field dataOrder menunjukkan tipe color planes pada citra berwarna antara interleaved (dataOrder

== IPL_DATA_ORDER_PIXEL) atau terpisah/separate (dataOrder ==

IPL_DATA_ORDER_PLANE), seperti ditunjukkan pada Tabel berikut:

Tabel 2.2. Data Order Nilai Pixel dari Struktur IplImage Data Ordering Description RGB Example

(channel ordering = RGB) Pixel-oriented All channels for

each pixel are clustered.

RGBRGBRGB (line 1) RGBRGBRGB (line 2) RGBRGBRGB (line 3) Plane-oriented All image data for

each channel is contiguous followed by the

next channel.

RRRRRRRRR (line 1)

RRRRRRRRR (line 2) R plane RRRRRRRRR (line 3)

GGGGGGGGG (line 1)

GGGGGGGGG (line 2) G plane GGGGGGGGG (line 3)

...

Sumber : Intel Image Processing Library – Reference Manual. California: Intel Corporation, 2000

Field widthStep berisi jumlah byte antar dua piksel pada kolom yang sama dengan baris yang berurutan atau dengan kata lain lebar citra dalam jumlah byte.

Field width tidak bisa dipakai untuk menghitung jarak (nilai byte) tersebut karena pada tiap baris bisa terdapat tambahan beberapa byte informasi untuk mempercepat image processing, sehingga terdapat jarak/gap antara akhir dari baris ke-i dan awal dari baris ke i+1. Field imageData berisi pointer ke baris pertama dari image data, jika terdapat beberapa plane pada image (jika field dataOrder = IPL_DATA_ORDER_PLANE), masing-masing akan ditempatkan pada image terpisah dengan total baris height*nChannels. Dapat dipilih daerah fokus pada image (berbentuk kotak) atau color plane tertentu saja, atau gabungan keduanya dan proses pada image hanya akan dilakukan pada daerah tersebut. Daerah fokus pada image disebut "Region of Interest" atau ROI.

Pada struktur IplImage terdapat field roi yang mendukung hal ini. Jika pointer tidak NULL, maka akan menunjuk ke struktur IplROI yang berisi parameter

Universitas Kristen Petra

informasi daerah ROI (seperti ditunjukkan pada Tabel 2.3. berikut), jika NULL maka dianggap daerah ROI mencakup keseluruhan image.

Tabel 2.3. Struktur IplROI

Sumber : Intel Image Processing Library – Reference Manual. California: Intel Corporation, 2000

Tabel berikut akan menjelaskan deskripsi dari tiap-tiap field pada struktur IplImage dan atribut nilai yang didukung.

Tabel 2.4. Nilai Field pada Struktur IplImage

Description Value

Size of IplImage Header (for internal use) nSize in bytes Image Header Revision ID (internal use) ID number

Number of Channels 1 to N

(Including alpha channel, if any)

Alpha channel number N (0 if not present)

Bits per channel

Gray Only IPL_DEPTH_1U (1 bit)

All Images: color,gray, and multi spectral IPL_DEPTH_8U (8 bit unsigned)

(The signed data is used only as output for some image output operations)

IPL_DEPTH_8S (8 bit signed)

IPL_DEPTH_16U (16 bit unsigned)

IPL_DEPTH_16S (16 bit signed)

typedef struct _IplROI {

int coi; /* channel of interest or COI */

int xOffset;

int yOffset;

int width;

int height;

} IplROI;

Universitas Kristen Petra

Tabel 2.4. Nilai Field pada Struktur IplImage(sambungan) IPL_DEPTH_32U (32 bit unsigned) IPL_DEPTH_32S (32 bit signed) Color Model 4 character string: "Gray", "RGB",

"RGBA", "CMYK", etc.

Channel Sequence

4 character string, can be: "G",

"GRAY", "BGR", "BGRA", "RGB",

"RGBA", "HSV", "HLS", "XYZ", "YUV",

"YCr", "YCC", or "LUV"

Data Ordering IPL_DATA_ORDER_PIXEL

IPL_DATA_ORDER_PLANE

Origin IPL_ORIGIN_TL (top left corner)

IPL_ORIGIN_BL (bottom left)

Scanline alignment IPL_ALIGN_DWORD

IPL_ALIGN_QWORD Image Size: Height Integer

Width Integer

Region Of Interest (ROI) Pointer to Structure

Mask Pointer to Another IplImage

Image Size (bytes) Integer

Image Data Pointer Pointer to Data

Aligned Width Width (row lengths in bytes) of image padded for alignment

Border mode of the top, bottom,

left, right, sides of the image BorderMode[4]

Border constant of the top, bottom, left, right, sides of the image

BorderConst[4]

Original image Pointer to original image data

Image ID For application use only (ignored on library) Tiling information Pointer to IplTileInfo structure

Sumber : Intel Image Processing Library – Reference Manual. California: Intel Corporation, 2000

2.4.1. High Graphical User Interface (HighGUI)

HighGUI merupakan kumpulan struktur data, fungsi, dan class dengan menggunakan bahasa pemrograman C/C++ yang merupakan library tambahan dari OpenCV dan IPL, berfungsi untuk membantu pengembangan aplikasi terutama dalam hal user-interface, dan dikelompokkan dalam beberapa kategori sebagai berikut:

a. Window Functions, berisi fungsi-fungsi yang mengatur window tempat menampilkan image hasil, seperti: membuat window (cvNamedWindow), menghapus alokasi window dari memori (cvDestroyWindow), dan sebagainya.

Universitas Kristen Petra

b. Image Handling Functions, berisi fungsi-fungsi terhadap image, seperti: load image dari file (BMP, JPEG, PNG, TIFF) ke memori dengan tipe IplImage (cvLoadImage), save image ke file (cvSaveImage), menampilkan image pada window tertentu (cvShowImage), dan sebagainya.

c. Video I/O Functions, berisi fungsi-fungsi terhadap frame video/camera, seperti: melakukan alokasi dan inisialisasi struktur CvCapture untuk membaca video stream dari file AVI (cvCaptureFromAVI), mengambil frame image dari camera atau file AVI (cvQueryFrame), melakukan alokasi dan inisialisasi struktur CvAVIWriter yang digunakan untuk menulis ke file AVI secara frame by frame (cvCreateAVIWriter), menuliskan sebuah frame image ke AVI file (cvWriteToAVI), dan sebagainya.

d. Support/System Functions, berisi fungsi-fungsi tambahan, seperti: menunggu penekanan tombol (cvWaitKey), menambahkan path ke dalam daftar search path (cvAddSearchPath), dan sebagainya.

2.5. Likelihood

Likelihood yang disebut juga fungsi likelihood, adalah salah satu istilah yang digunakan pada statistik yang juga bisa berarti “probabilitas”. Jika probabilitas dapat melakukan prediksi akan apa yang terjadi berdasarkan parameter yang diketahui, likelihood adalah kebalikannya, yakni untuk mengetahui parameter yang tidak diketahui berdasarkan apa yang terjadi

Dari pengertian diatas terlihat bahwa antara probabilitas dan likelihood bersifat berkebalikan. Bila diketahui B, kita gunakan probabilitas kondisional Pr(A|B) untuk menentukan A, dan bila didapatkan A, kita gunakan fungsi likelihood L(B|A) untuk menentukan B. Cara ini dijabarkan pada teorema bayesian

Dalam ilmu statistik, fungsi likelihood adalah fungsi probabilitas kondisional, digunakan sebagai fungsi dari argumen kedua yang memiliki argumen pertama bersifat tetap.

)

| Pr(A B b

ba =

Universitas Kristen Petra

Dan juga fungsi lain yang proporsional dengan fungsi tersebut. Likelihood dari B adalah equivalence class dari fungsi

)

Untuk setiap konstanta proporsionalitas a>0, nilai numerikal dari L(B|A) bersifat immaterial. Hal yang berpengaruh adalah rasionya

)

Antara likelihood dan fungsi densitas probabilitas ( probability density function, P.D.F ) memiliki hubungan terbalik. Sebagai contoh terdapat P.D.F berikut

) , (χ θ χ a f

T adalah parameternya, fungsi likelihood dari persamaan diatas adalah )

? adalah hasil yang diobservasi dari eksperimen yang dilakukan. Dengan kata lain apabila f(χ,θ) dianggap sebagai fungsi ? dengan T tetap (fixed), persamaan tersebut adalah P.D.F. Apabila dianggap sebagai fungsi T dengan ? tetap (fixed), maka persamaan tersebut adalah fungsi likelihood

Sebagai contoh apabila dilakukan percobaan melempar koin, dengan probabilitas keluar angka PA adalah 0.5, maka kemungkinan untuk mendapatkan dua kali angka pada dua kali pelemparan berturut-turut adalah (PA)2, yakni 0.25.

Notasi dari percobaan adalah sebagai berikut 25

Cara lain untuk menyatakannya persamaan diatas adalah dengan membaliknya, sehingga dapat dikatakan sebagai berikut “likelihood dari PA = 0.5, dari hasil observasi keluarnya AA yang bernilai 0.25”

25

Namun pernyataan diatas adalah salah jika dikatakan sebagai berikut :

“probabilitas dari PA = 0.5, dari hasil observasi keluarnya AA yang bernilai 0.25”.

Berikut adalah contoh yang membedakan P.D.F dengan fungsi likelihood : likelihood dari PA = 1 dari hasil observasi AA yang bernilai 1. Namun bukan berarti probabilitas dari PA adalah 1 yang didapatkan dari observasi bernilai 1

Universitas Kristen Petra

(karena dalam kenyataan nilai PA = 0.5). Dengan demikian terlihat bahwa fungsi densitas probabilitas tidaklah sama dengan fungsi likelihood.

Dokumen terkait