• Tidak ada hasil yang ditemukan

2. LANDASAN TEORI. Gambar 2.1. Checkboard Pattern

N/A
N/A
Protected

Academic year: 2022

Membagikan "2. LANDASAN TEORI. Gambar 2.1. Checkboard Pattern"

Copied!
22
0
0

Teks penuh

(1)

4

Universitas Kristen Petra

2.1. Kalibrasi Kamera

Sebelum dapat melakukan proses rekonstruksi 3D, kalibrasi kamera perlu dilakukan untuk mendapatkan beberapa parameter dari kamera digital yang digunakan. Parameter ini meliputi matrik intrinsik dan ektrinsik yang nantinya digunakan untuk melakukan perhitungan, sehingga kita dapat menentukan letak dari suatu benda dalam ruang 3 dimensi.

Parameter dari matrik intrinsik ini terdiri dari 4 unsur yaitu :

ƒ nilai fokus kamera, yaitu jarak antara lensa kamera dengan bidang gambar.

ƒ titik pusat proyeksi, yaitu lokasi titik tengah gambar dalam pixel koordinat.

ƒ ukuran pixel efektif.

ƒ koefisien distorsi, yaitu koefisien tingkat kelengkungan lensa meliputi radial dan tangensial distorsi.

Sedangkan parameter ektrinsik ini terdiri dari dua buah matriks, yaitu matrik translasi dan matrik rotasi. Parameter ektrinsik ini menggambarkan orientasi posisi dari kamera terhadap sistem koordinat sebenarnya dalam ruang 3 dimensi atau world coordinate.

Gambar 2.1. Checkboard Pattern

Untuk melakukan proses kalibrasi kamera kita menggunakan papan catur (chessboard pattern) dengan ukuran sisi perkotaknya 1 atau 3 cm seperti pada Gambar 2.1.

(2)

2.1.1. Metode Kalibrasi Kamera

Langkah pertama yang harus diambil sebelum melakukan kalibrasi kamera adalah mengambil beberapa gambar dari chessboard pattern, kemudian melakukan pencarian titik-titik chessboard pattern pada gambar.

Proses pencarian titik ini menggunakan fungsi yang terdapat pada OpenCV library. Metode yang digunakan OpenCV untuk melakukan pencarian titik-titik pada chessboard pattern tersebut adalah melakukan filtering dengan simple sobel edge, yaitu filter yang digunakan untuk mencari garis dari perbedaan warna yang yang mencolok pada gambar.

Gambar 2.2. Chessboard Pattern dengan simple sobel edge filtering

Setelah dilakukan proses filtering dari Gambar 2.1, maka akan didapatkan hasil seperti pada Gambar 2.2. Perpotongan antar garis melintang dan membujur ini menghasilkan beberapa titik. Dengan mengetahui letak titik-titik pada world coordinate dan pixel coordinate maka dapat dicari matrik yang menghubungkan keduanya. Matrik inilah yang disebut sebagai matrik intrinsik dan extrinsik.

Metode untuk mencari matrik ini menggunakan metode dari Zhang [9] yang telah diimplementasikan dalam fungsi-fungsi pada OpenCV.

2.1.2. Parameter Intrinsik Kamera

Setelah dilakukan proses kalibrasi maka didapatkan matrik intrinsik dan ektrinsik dari kamera. Seperti yang telah dijelaskan di atas bahwa matrik intrinsik (W) terdiri atas fokus kamera, titik tengah proyeksi atau principal point, ukuran pixel efektif dan koefisien distorsi radial dan tangensial. Matrik intrinsik adalah matrik yang menyatakan geometri dari kamera itu sendiri.

[

k1 k2 p1 p2

]

K = (2.1)

(3)

2.1.3. Parameter Extrinsik Kamera

Selain matrik intrinsic, kalibrasi kamera juga menghasilkan matrik extrinsik. Seperti yang telah dijelaskan diatas bahwa matrik extrinsik merupakan orientasi posisi dari kamera terhadap world coordinate. Matrik extrinsik ini terdiri atas matrik rotasi (R) dan matrik translasi (T).

⎥⎥

⎢⎢

=

33 32 31

23 22 21

13 12 11

r r r

r r r

r r r

R (2.3)

⎥⎥

⎢⎢

=

3 2 1

t t t

T (2.4)

Matrik rotasi sebenarnya adalah gabungan dari rotasi terhadap sumbu X, Y dan Z yang masing-masing berotasi dengan sudut (ψ,θ,φ).

⎥⎥

⎢⎢

=

1 0 0 0

0

int fy Cy

Cx fx

W (2.2)

Wint = Matrik intrinsic

fx = Nilai fokus kamera yang berorientasi pada sumbu x fy = Nilai fokus kamera yang berorientasi pada sumbu y Cx = Titik tengah / Principal point sumbu x

Cy = Titik tengah / Principal point sumbu y

K = Koefisien distorsi

k1, k2 = Distorsi radial p1, p2 = Distorsi tangensial

(4)

⎥⎥

⎢⎢

⎥⎥

⎢⎢

⎥ −

⎥⎥

⎢⎢

⎡ −

=

ψ ψ

ψ ψ

θ θ

θ θ

ϕ ϕ

ϕ ϕ

cos sin

0

sin cos

0

0 0

1

cos 0 sin

0 1 0

sin 0 cos

1 0 0

0 cos sin

0 sin cos

R (2.5)

2.2. Proyeksi Gambar

Perhitungan proyeksi suatu titik pada ruang 3D menjadi titik pada gambar 2D dilakukan dengan perkalian titik 3D dengan parameter kamera. Sebelum melakukan perhitungan terhadap matrik intrinsik dan extrinsic, perlu dipahami dahulu tentang hubungan antara kamera, gambar, frame dan world coordinate.

Gambar 2.3 Hubungan antara world coordinate dan camera coordinate[2]

Hubungan antara camera coordinate (P) ke world coordinate (Pw) adalah sebagai berikut:

⎥⎥

⎥⎥

⎢⎢

⎢⎢

×

⎥⎥

⎢⎢

×

⎥⎥

⎢⎢

=

⎥⎥

⎢⎢

1 1 0 0 0

0

1 31 32 33 3

2 23 22 21

1 13 12 11

Z Y X

t r r r

t r r r

t r r r Cy fy

Cx fx

v u

(2.6)

P = Camera coordinate (u,v) Pw = World coordinate (X,Y,Z) R = Matrik rotasi (r1-r9) T = Matrik translasi (t1-t3)

(5)

2.3. Eucledean distance

Euclidean Distance adalah sebuah metode yang digunakan untuk mengukur jarak (distance). Euclidean Distance sebenarnya merupakan generalisasi dari teorema phytagoras.

Berikut ini adalah contoh perhitungan dengan menggunakan Euclidean Distance. Jika terdapat dua buah titik pada sebuah bidang dua dimensi (R2),

(

x1, y1

)

u = dan v=

(

x2, y2

)

, maka untuk mengukur jarak dari kedua buah titik tersebut dapat digunakan persamaan phytagoras

( x

1

x

2

) (

2

y

1

y

2

)

2

d =

+

(2.7)

x1, x2 = Koordinat sumbu x dari sebuah titik.

y1, y2 = Koordinat sumbu y dari sebuah titik

Jarak tersebut menyebabkan sebuah metric pada R2, yang disebut sebagai Euclidean metric pada R2.

Bila terdapat dua buah vektor dengan n dimensi, a=

(

a1,a2,...,an

)

dan

(

b b bn

)

b= 1, 2,..., maka formula phytagoras 2.5, dapat digeneralisasikan ke dalam n dimensi (Rn) menjadi:

( ) ( ) (

n n

)

d =

a

1

b

1 2+

a

2

b

2 2+...+

ab

2 (2.8)

2.4. Segmentasi Gambar (Thresholding)

Segmentasi gambar atau thresholding merupakan proses untuk memisahkan antara gambar obyek dengan latar belakangnya. Pada proses ini akan mengubah nilai dari gambar menjadi bi-level image yaitu hitam (0) untuk latar belakang dan putih (255) untuk obyek atau sebaliknya. Pada proses threshold diperlukan nilai pixel yang dipakai sebagai batas untuk merubah nilai, misalnya nilai threshold yang dimasukkan adalah 150, maka artinya pixel pada gambar yang nilainya antara 150-255 akan diubah ke 255 semua dan yang nilai nya mulai

(6)

0-149 akan diubah menjadi 0 semua. Jadi semakin tinggi nilai threshold yang diinputkan maka akan semakin banyak nilai 0 atau hitam pada pixel image hasilnya, begitu pula bila semakin rendah nilai threshold yang diinputkan maka akan semakin banyak nilai 255 atau putih pada pixel hasilnya.

Nilai dari threshold ini dapat ditentukan dengan beberapa cara. Salah satunya adalah menggunakan metode iterative selection [6] yaitu dengan cara menghitung nilai rata-rata pixel background (Tb) dan pixel object (To) pada image, dan menggunakan rata-rata dari keduanya sebagai nilai threshold. Rumus yang digunakan yaitu

2 ) (To Tb

T = + (2.9)

Secara initial, nilai-nilai ini berdasarkan properties dari image yang diketahui. Terkadang nilai dari pixel keempat pojok gambar diasumsikan sebagai nilai pixel background. [6] Namun lebih memungkinkan untuk menggunakan nilai T yang merupakan nilai rata-rata pixel dari image sebagai nilai threshold sementara dan kemudian menggunakannya untuk menghasilkan nilai Tb yang merupakan nilai rata-rata pixel background dan nilai To yang merupakan nilai rata-rata pixel objek yang akan digunakan untuk iterasi selanjutnya.

Langkah selanjutnya adalah untuk menyaring nilai dari Tb dan To dengan menggunakan nilai threshold T. Diasumsikan bahwa daerah yang gelap adalah objek, To dihitung ulang untuk menjadi nilai nilai rata-rata dari semua pixel yang bernilai dibawah nilai T. Begitu pula sebaliknya, nilai Tb dihitung ulang untuk menjadi nilai rata-rata dari semua pixel yang bernilai sama atau diatas T. Setelah itu akan dilakukan pengecekan dengan menggunakan rumus diatas, apakah nilai rata-rata pixel dari image sama dengan nilai rata-rata pixel dari objek ditambah dengan nilai rata-rata pixel dari background. Jika tidak maka nilai dari T yang baru akan diisi dengan jumlah nilai rata-rata pixel objek dan background dibagi dengan 2. Proses ini seharusnya akan menghasilkan estimasi yang lebih baik terhadap nilai rata-rata dan hal ini seharusnya menghasilkan estimasi yang lebih baik terhadap nilai threshold.

Semua proses ini dilakukan berulang kali sampai threshold T dihasilkan

(7)

di 2 consecutive iterations ( T = (To+Tb)/2 ) atau sampai sebanyak jumlah pixel pada gambar, dimana nilai dari T diasumsikan sebelumnya untuk menjadi nilai threshold yang baik terhadap image. Berikut ini adalah contoh perhitungan nilai threshold pada sebuah image yang memiliki nilai pixel sebagai berikut :

255 255 255 255 255 255 255 0 255 255

255 0 0 0 255

255 255 0 255 255 255 255 255 255 255 Gambar 2.4. Susunan Pixel Gambar Sederhana

Looping pertama :

ƒ Rata-rata nilai pixel (T) = ( 255 * 20 + 0*5 ) / 25 = 204.

ƒ Rata-rata nilai pixel objek (To) = ( 0 * 5 ) / 5 = 0.

ƒ Rata-rata nilai pixel background (Tb) = ( 255 * 20 ) / 20 = 255.

ƒ Cek apakah T = (To+Tb) / 2 ? Æ tidak sama karena 204 ≠ (0+255) /2, maka nilai T selanjutnya diisi (0+255) / 2 Æ T = 127.5.

ƒ Looping selanjutnya.

Looping kedua :

ƒ Rata-rata nilai pixel (T) = 127.5.

ƒ Rata-rata nilai pixel objek (To) = ( 0 * 5 ) / 5 = 0.

ƒ Rata-rata nilai pixel background (Tb) = ( 255 * 20 ) / 20 = 255.

ƒ Cek apakah T = (To+Tb) / 2 ? Æ sama karena 127.5 = (0+255) /2, maka nilai T selanjutnya diisi (0+255) / 2 Æ T = 127.5.

ƒ Keluar dari looping.

Keluar dari looping dan nilai threshold untuk image diatas yaitu 127,5.

Setelah dilakukan proses segmentasi gambar maka warna yang terdapat pada gambar hanya ada warna hitam (0) dan putih (255) saja. Hasil proses ini dapat diatur juga agar obyek berwarna putih dan latar belakang berwarna hitam, ataupun sebaliknya. Namun untuk proses dalam perangkat lunak ini ditentukan

(8)

bahwa obyek berwarna putih dan latar belakang berwarna hitam. Dalam metode ini terdapat sedikit kelemahan, yaitu bila terdapat gambar dengan nilai pixel yang beragam, maka nilai yang diatas nilai threshold dianggap obyek meskipun sebenarnya bukan termasuk obyek.

(a) (b)

Gambar 2.5. Obyek asli (a), obyek hasil segmentasi (b).

2.5. Generalized Voxel Coloring

Generalized voxel coloring (GVC) adalah suatu metode untuk merekonstruksi obyek 3D dari kumpulan gambar 2D. Secara umum metode GVC dibagi menjadi 2 macam metode yaitu metode GVC dengan item buffer (GVC-IB) dan GVC dengan layered depth images (GVC-LDI). Perbedaan dari kedua metode ini adalah penggunaan memori dan waktu proses. [1] Pada metode GVC- IB memori yang digunakan lebih sedikit namun prosesnya akan lebih lama.

Sedang pada GVC-LDI, memori yang digunakan lebih besar namun waktu proses akan lebih cepat dibandingkan metode GVC-IB. Pada proses ini akan dipakai metode GVC-IB.

2.5.1 Item buffer dan Visibility

Item buffer dibentuk dari proses perhitungan proyeksi setiap voxel V dalam surface voxel list (SVL) ke tiap-tiap gambar. Item buffer akan berisi posisi V pada world coordinate (x, y, z) yang terdekat dengan kamera. Tiap-tiap gambar akan mempunyai sebuah item buffer sendiri.

Seperti pada Gambar 2.6, Titik A dan B pada SVL bila diproyeksikan pada gambar akan menunjuk nilai pixel yang sama, dengan metode item buffer maka

(9)

nilai yang disimpan dalam item buffer adalah nilai yang paling dekat dengan kamera. Pada Gambar 2.6 nilai dari titik A yang akan disimpan dalam item buffer.

Karena masing-masing gambar akan mempunyai sebuah item buffer sendiri, maka nilai yang tersimpan dalam masing-masing item buffer adalah posisi voxel yang paling dekat dengan masing-masing kamera.

Gambar 2.6 Perhitungan visibility dengan item buffer[1]

2.5.2 Color Consistency

Dalam memproses sebuah voxel V perlu dilakukan pengecekan bahwa voxel tersebut terlihat pada gambar dan merupakan bagian dari obyek, Pengecekan apakah suatu voxel terlihat pada gambar atau tidak, dapat dilihat dari hasil segmentasi gambar. Apabila proyeksi V pada gambar mengenai bagian yang berwarna putih maka V tersebut adalah termasuk obyek. Tiap-tiap warna dari hasil proyeksi V pada gambar yang termasuk obyek akan disimpan untuk selanjutnya dilakukan pengecekan warna.

Proses pengecekan selanjutnya adalah untuk melihat apakah V terproyeksi pada gambar dan menunjuk obyek yang sama. Proses dilakukan dengan menghitung standart deviasi dari kumpulan warna pixel hasil proyeksi V kemudian dibandingkan dengan nilai threshold tertentu. Apabila nilai standart deviasi kurang dari nilai threshold maka dapat dianggap bahwa proyeksi V menunjuk pada obyek yang sama.

(10)

=

=

n

i

r

i

r n

1

1

(2.10)

=

=

n

i

g

i

g n

1

1

(2.11)

=

=

n

i

b

i

b n

1

1

(2.12)

=

= n

i

r r r

n 1 ( )

σ

1 (2.13)

=

= n

i

g g g

n 1( )

σ

1 (2.14)

=

= n

i

b b b

n 1 ( )

σ

1 (2.15)

2 2 2

b g

r

σ σ

σ

σ = + +

(2.16)

⎩ ⎨

>

= ≤

T if False

T if V True

consist

σ σ , ) ,

(

(2.17)

Pada Gambar 2.7 dapat dilihat bahwa titik A adalah consistent karena terlihat pada kamera 1 dan 2 dan menunjuk titik yang sama, sedangkan titik B tidak consistent karena tidak menunjuk pada pixel yang sama.

Gambar 2.7. Color consistency check.

(11)

2.5.3 Generalized voxel coloring – Item buffer

Pada metode GVC-IB ini secara garis besar algoritmanya dapat dijabarkan pada segmen program 2.1 :

Segmen Program 2.1. Algoritma metode GVC-IB

initialize SVL for every voxel V

carved(V) = false loop {

visibilityChanged = false

compute item buffers by rendering voxel s on SVL for every voxel V ∈ SVL {

compute vis(V)

if (consist(vis(V)) = false) { visibilityChanged = true carved(V) = true

remove V from SVL

for all voxels N that are adjacent to V if (carved(N) = false and N ∉ SVL) add N to SVL

} else

color(V) }

if (visibilityChanged = false) { save voxel space

quit }

}

Pertama-tama dilakukan inisialisasi Surface Voxel List (SVL). SVL adalah suatu link list yang berisi informasi voxel yang akan diproses. Masing masing list dalam SVL berisi koordinat voxel dan warna voxel dalam RGB. SVL diisi dengan voxel-voxel yang berada pada permukaan kotak yang akan diproses. Kemudian setiap voxel dalam SVL akan diproses, bila suatu voxel bukan merupakan obyek maka voxel tersebut akan di-carved atau dihapus dari SVL dan digantikan dengan voxel lain yang berada disekitar voxel tersebut. Dengan syarat voxel tersebut belum pernah ada pada SVL. Proses ini akan dilakukan secara terus menerus hingga tidak ada lagi voxel yang dapat di-carved atau dengan kata lain semua voxel consistent. Inti dari proses rekonstruksi ini dapat diasumsikan seperti halnya proses pemahatan patung, pertama-tama patung adalah sebuah bongkahan kayu padat yang berbentuk kubus atau silinder. Kemudian untuk menjadikan suatu bentuk patung maka sedikit demi sedikit dari kayu tersebut dipahat, proses

(12)

pemahatan dilakukan terus menerus hingga tidak ada lagi bagian dari kayu tersebut yang bias dipahat, atau dengan kata lain sudah membentuk suatu patung.

Contoh proses pemahatan (carved) dapat dilihat pada Gambar 2.8.

Gambar 2.8 Proses removing voxel [4]

(Sumber : 3-D Object Reconstruction Using Spatially Extended Voxels and Multi- Hypothesis Voxel Coloring. England: Stanford University 2000 )

2.6. Open GL

Open GL merupakan sebuah application programmer’s interface ( API ) yang dapat mengakses hardware secara langsung. Open GL memiliki dua kelebihan yaitu pertama bahwa program yang ditulis dengan menggunakan standart bahasa Open GL dapat secara langsung mengakses hardware sehingga program dapat berjalan lebih cepat , dan Open GL sangat mudah untuk dipelajari dan dipakai.

Beberapa tahun yang lalu telah ada standart penggunaan grafik dalam pemrogramman komputer seperti GKS dan PHIGS tetapi kedua standart itu tidak memiliki jangka waktu hidup yang lama. Beberapa waktu kemudian Open GL keluar dari interface yang disebut GL Developed khusus untuk hardware Silicon Graphics Incorporated ( SGI ) [7].

Open GL adalah sebuah library dimana pemakai hanya menggunakan function-function yang telah disediakan di dalamnya. Open GL memiliki lebih dari 200 function. Function-function ini dipisahkan berdasarkan dari fungsi dan kegunaannya.

(13)

2.6.1. Primitive Function

Primitive function ini digunakan untuk mendefinisikan element yang dapat membuat gambar pada layar. Function ini dibedakan atas dua tipe: pertama geometric primitive, seperti polygon, yang dapat didefinisikan dua, tiga atau empat dimensi. Kedua discrete entities, seperti bitmap.

2.6.2. Attribute Function

Attribute function adalah kontrol untuk tampilan dari object primitive.

Function ini digunakan untuk mendefinisikan warna, tipe garis, material, sumber cahaya, dan texture.

2.6.3. Viewing Function

Viewing function digunakan untuk mendefinisikan property dari kamera.

Open GL menyediakan kamera yang dapat kita ubah posisi dan orientasinya ke object yang didefinisikan oleh primitive function. Kita juga dapat mengatur lensa dari kamera sehingga kita dapat mendapatkan padangan yang sesuai seperti yang kita inginkan.

2.6.4. Input Function

Input function bukan bagian dari inti Open GL tetapi karena function ini sangat berguna sebagai interaksi dengan user yang biasa disebut Open GL Utility Toolkit atau GLUT. Function ini digunakan untuk melakukan penggontrolan terhadap input yang berasal dari keyboard atau mouse.

2.6.5. Control Function

Control Function digunakan untuk melakukan start dan terminate pada program-program Open GL dan mengubah beberapa fitur dari Open GL.

2.7. Open CV

OpenCV adalah singkatan dari Intel® Open Source Computer Vision Library. Merupakan kumpulan dari struktur data dan fungsi-fungsi dalam bahasa

(14)

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, yang dibagi lagi menjadi beberapa kategori sebagai berikut:

• Image Function, seperti: pembuatan header image dan alokasi data (cvCreateImage), penghapusan image dari memori (cvReleaseImage), dan sebagainya.

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

• 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, seperti: melakukan pelacakan warna (cvCamShift), menghitung optical flow antara dua image dengan metode Lukas Kanade (cvCalcOpticalFlowLK), dan sebagainya.

c. Image Analysis, seperti: menghitung nilai mean pada image region (cvMean), menghitung nilai histogram image (cvCalcHist), dan sebagainya.

d. dan sebagainya.

Struktur data utama yang digunakan pada sebagian besar fungsi 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. Listing

(15)

program berikut menjelaskan struktur dari iplImage:

Segmen Program 2.2. Struktur dari IplImage

typedef struct _IplImage {

int nSize /* size of iplImage struct */

int ID /* image header version */

int nChannels;

int alphaChannel;

int depth; /* pixel depth in bits */

char colorModel[4];

char channelSeq[4];

int dataOrder;

int origin;

int align; /* 4- or 8-byte align */

int width;

int height;

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; /* 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;

Field width dan height menunjukkan panjang dan lebar citra dalam piksel. Sedangkan field depth berisi informasi tipe dari nilai pixel, 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 di memory, apakah dimulai dari baris atas citra/top row (origin ==

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

(16)

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 2.1 :

Tabel 2.1 Data Order Nilai Piksel 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)

...

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 pointer akan menunjuk ke struktur IplROI yang

(17)

berisi parameter informasi daerah ROI (seperti ditunjukkan pada list program dibawah . berikut), jika NULL maka dianggap daerah ROI mencakup keseluruhan image.

Segmen Program 2.3. Struktur dari IplROI

typedef struct _IplROI {

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

int xOffset;

int yOffset;

int width;

int height;

} IplROI;

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

Tabel 2.2 Nilai Field pada Struktur IplImage

Description Value Size of the 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)

IPL_DEPTH_32S (32 bit signed)

IPL_DEPTH_32F (32 bit float)

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"

(18)

Tabel 2.2 Nilai Field pada Struktur IplImage (lanjutan)

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 by

the library

Tiling information Pointer to IplTileInfo structure

2.8. QT Library

Qt adalah sebuah opensource library yang dibuat dan dikembangkan oleh Trolltech dengan menggunakan bahasa C++, yang mendukung pemrograman beorientasi obyek sepenuhnya. Sampai saat ini qt dapat berjalan hampir pada semua platform seperti [8] :

µ MS/Windows -- 95, 98, NT 4.0, ME, 2000, dan XP

µ Unix/X11 -- Linux, Sun Solaris, HP-UX, Compaq Tru64 UNIX, IBM AIX, SGI IRIX dan yang lainnya

µ Macintosh -- Mac OS X

µ Linux -- Redhat, Fedora, Mandrake, Gentoo, Slackware, dan lainnya

Dalam penggunaannya qt menyediakan berbagai macam class dan function yang biasa digunakan dalam membuat aplikasi, seperti class QPushButton,

(19)

Qimage, QtextEdit, dan lain-lain.

2.9 Flowchart

Flowchart adalah representasi grafik dari sebuah proses. Flowchart menggambarkan atau memvisualisasikan langkah demi langkah dari proses.

Keuntungan dari flowchart adalah:

• Membantu untuk mengidentifikasi adanya bottleneck pada sebuah proses secara cepat.

• Membantu meningkatkan efisiensi sebuah proses, karena dengan adanya flowchart maka dapat terlihat proses-proses yang kurang efisien.

Gambar 2.9 adalah sebuah contoh flowchart sederhana.

Gambar 2.9. Contoh Flowchart Sederhana

Flowchart menggunakan beberapa simbol yang merepresentasikan tipe dari operasi atau proses yang akan dilakukan. Simbol-simbol ini merupakan sebuah bahasa yang digunakan untuk memvisualisasikan masalah sehingga lebih mudah untuk dibaca dan dimengerti.

(20)

2.9.1. Terminator atau Terminal

Simbol ini berbentuk oval. Simbol ini digunakan untuk menandai awal dan akhir dari sebuah proses. Gambar 2.10 adalah adalah gambar dari simbol terminator.

Gambar 2.10. Simbol Terminator

2.9.2. Preparation atau Initialization

Simbol ini berbentuk segi enam. Simbol ini berfungsi untuk melakukan inisialisasi terhadap variabel-variabel yang digunakan dalam proses atau melakukan persiapan-persiapan sebelum sebuah proses dijalankan. Gambar 2.11 adalah gambar dari simbol preparation.

Gambar 2.11. Simbol Preparation

2.9.3. Proses atau Action

Simbol ini berbentuk persegi panjang. Simbol ini digunakan untuk menggambarkan sebuah aktifitas tunggal (contoh: “x = x + 1”) ataupun untuk menggambarkan keseluruhan subproses (contoh: “Hitung rata-rata nilai”) dalam sebuah proses yang lebih besar. Gambar 2.12 adalah gambar dari simbol proses.

Gambar 2.12. Simbol Proses

(21)

2.9.4. Input atau Output

Simbol ini berbentuk jajaran genjang. Simbol ini digunakan untuk menggambarkan data-data yang dimasukan ataupun dikeluarkan dari sebuah proses, contoh pesanan dari customer (input) sedangkan sebuah produk yang dipesan (output). Gambar 2.13 adalah gambar dari simbol input/output.

Gambar 2.13. Simbol Input/Output

2.9.5. Decision

Simbol ini berbentuk belah ketupat. Simbol ini digunakan untuk menggambarkan sebuah persimpangan dimana harus diambil keputusan jalan mana yang akan digunakan. Gambar 2.14 adalah gambar dari simbol decision.

Gambar 2.14. Simbol Decision

2.9.6. Connector

Simbol ini digunakan untuk menggambarkan bahwa alur proses akan dilanjutkan pada bagian atau halaman yang lain. Terdapat dua jenis konektor, yaitu: konektor untuk halaman yang sama, dan konektor untuk halaman yang berbeda. Gambar 2.15 menunjukkan kedua konektor tersebut.

(22)

A A

Gambar 2.15. Simbol One Page Connector

B B

Gambar 2.16. Simbol Other Page Connector

2.9.7. Subroutine (procedure/function)

Simbol ini mengindikasikan adanya rentetan aktifitas yang spesifik pada sebuah proses. Detail dari rentetan aktifitas ini dapat digambarkan pada flowchart yang berbeda.

Call Function A

Gambar 2.17. Simbol Subroutine

Referensi

Dokumen terkait

Layar tampilan user interface ketika aktor penjualan melakukan login , Pada menu penjualan terdapat option Sales Order , dimana penjualan akan melakukan input

Nilai tersebut jika dibandingkan dengan NSL-KDD sangat kuat, namun hasil yang didapat tidak mendapatkan nilai validasi mendekati nilai sempurna karena hal

Kelebihan penelitian ini adalah selain penilaian kemampuan prediksi mortalitas dari skor MSOFA pada kasus penyakit kritis tanpa riwayat DM baik pasien medis

Analisis OLAP menghasilkan berupa Performa KPI Lulusan berdasarkan dimensi tahun dan progam studi, sedangkan analisis metode Fuzzy model Tsukamoto dari studi kasus

Adapun besarnya pengaruh dapat diketahui dari nilai koefisien determinasi yaitu sebesar 0,307 yang artinya bahwa pemahaman nilai-nilai Pancasila dan pendidikan dalam

Pelelangan Terbuka Pengadaan dan Penggantian HP / LP Elemen Yard Instrument Air Compressor (YIAC) B PT PJB Unit Pembangkitan Gresik,.. Asli dari dokumen fotokopi

Pada setiap awal tahun akademik, mahasiswa baru Sekolah Tinggi Agama Hindu (STAH) Dharma Sentana, setiap mahasiswa yang diterima telah melalui semua prosedur yang

Penulis tertarik untuk membuat aplikasi chatting client-server jaringan lokal yang tidak terhubung dengan internet, dimana dalam pembuatan aplikasi ini penulis