129
Lampiran 1. Proses Kaiibrasi untuk Mendapatkan Matrik Intrinsik
Sebelum melakukan kaiibrasi kamera, kita perlu membuat chessboard pattern ukuran 4 x 6 dengan ukuran kotak 3 x 3 cm (lihat lampiran 3). Setelah kita memiliki chessboard pattern kemudian kita perlu memasukkan setting terhadap perangkat lunak.
Jumlah row x col
Size Kotak
Jumlah Image 0
X
Kamera yang akati dikalibrasi ■ Camera 1 Camera 2
Start Calibration
S ave Calibration Load Calibration
1
Kita masukkan nilai row (baris) dan col (kolom) dari chessboard pattern.
Kemudian kita masukkan size kotaknya dan jumlah image yang akan kita pakai untuk menghitung matrik intrisiknya. Setelah kita melakukan setting kemudian kita memilih kamera mana yang mau di setting. ’’"Camera 7” merupakan kamera sebelah kanan dan
"''camera 2” merupakan kamera sebelah kiri. Kemudian “Start Calibration’" maka kaiibrasi akan dilakukan.
Setelah selesai melakukan kaiibrasi kita dapat m&save atau me-load hasil kaiibrasi tersebut. Contoh hasil kaiibrasi kamera dengan menggunakan beberapa ukuran chessboard pattern dapat dilihat pada table dibawah ini.
130
Lampiran 1. Proses Kalibrasi untuk Mendapatkan Matrik Intrinsik (lanjutan)
Contoh Hasil kalibrasi dengan Menggunakan Chessboard Pattern 4x6 dengan Ukuran Kotak 3 X 3 cm dan 5x9 dengan Ukuran Kotak 2 x 2 cm
Chessboard pattern
Instrinsic matrix Extrinsic matrix
4x6 I 467.04892 0.00000 176.54819 0.00000 509.03281 114.13542
0.00000 0.00000 0.00000
0.03426 -0.98759 -0.15327 5.49509 0.99829 0.02657 0.05198 -2.61824 -0.04726 -0.15479 0.98682 32.51352
2 432.72681 0.00000 161.40039 0.00000 470.40021 119.75106
0.00000 0.00000 0.00000
0.00496 -0.99995 -0.00827 7.13736 0.99825 0.00446 0.05889 -2.99057 -0.05885 -0.00855 0.99823 26.10036 474.61447 0.00000 171.19662
0.00000 514.93665 131.46198 0.00000 0.00000 0.00000
-0.00972 -0.99458 0.10350 7.88266 0.99644 -0.00096 0.08431 -2.22092 -0.08375 0.10395 0.99105 28.44988
5x9 1 425.76343 0.00000 173.74345 0.00000 461.02151 123.31297
0.00000 0.00000 0.00000
0.05184 -0.99251 0.11064 6.48340 0.99860 0.05268 0.00461 -2.20861 -0.01041 0.11025 0.99385 24.52576
2 423.33719 0.00000 158.50548 0.00000 457.94894 117.67343
0.00000 0.00000 0.00000
-0.01127 -0.99991 -0.00709 8.45032 0.99929 -0.01151 0.03583 -2.08828 -0.03591 -0.00668 0.99933 24.38110
3 428.67471 0.00000 170.25507 0.00000 464.34802 120.17898
0.00000 0.00000 0.00000
-0.01379 -0.99923 0.03660 8.86091 0.99725 -0.01107 0.07333 -2.39500 -0.07287 0.03751 0.99664 25.78136
Tabel diatas merupakan table contoh hasil kalibrasi dengan menggunakan chessboard pattern 4x6 dengan ukuran kotak 3x3 cm. Dari hasil diatas dapat kita lihat bahwa hasil kalibrasi kamera tidak selalu sama.
131
Lampiran 1. Proses Kalibrasi untuk Mendapatkan Matrik Intrinsik (lanjutan)
Contoh Hasil Kalibrasi dengan Menggunakan Chessboard Pattern 4x6 dengan Ukuran kotak 3 x3 cm pengambilan Frame 10, 15 dan 30
Jumlah Frame
Instrinsic matrix Extrinsic matrix
10 482.39703 0.00000 146.88338 0.00000 523.23315 125.81467 0.00000 0.00000 0.00000
-0.06424 -0.98967 0.12817 7.58111 0.99547 -0.05453 0.07785 -2.33586 -0.07006 0.13259 0.98869 28.80462
15 498.84250 0.00000 147.50592 0.00000 541.70984 124.67293 0.00000 0.00000 0.00000
-0.00206 -0.99957 0.02934 8.11138 0.99950 -0.00113 0.03153 -3.3! 254 -0.03149 0.02939 0.99907 30.66878
20 472.91107 0.00000 157.47255 0.00000 512.44067 108.01546 0.00000 0.00000 0.00000
-0.01718-0.99396 0.10841 7.20469 0.99985 -0.01708 0.00181 -3.42106 0.00005 0.10842 0.99411 30.21593
30 446.20465 0.00000 167.75436 0.00000 484.84464 121.37954 0.00000 0.00000 0.00000
-0.06693 -0.98789 0.13994 6.17696 0.99776 -0.06607 0.01079 -2.12687 -0.00141 0.14035 0.99010 25.17777
132
Lampiran 2. Chessboard Pattern 4 x 6
Berikut adalah langkah-Iangkah instalasi OpenCV {Open Source Computer Vision Library) untuk pengembangan perangkat lunak, pada Windows 98/2000/XP:
Instalasi Sofhvare
1. Dahului dengan instalasi Microsoft Visual C ++ versi 6.0 yang terdapat dalam paket Microsoft Visual Studio versi 6.0.
2. Install DirectX SDK {Software Development Kit) versi 8.1, ubah direktori default instalasi dari c:\dxsdk\ menjadi c;\mssdk\
Filename: DX81SDK_FULL.exe
URL:http://download.microsoft.com/download/vvhistler/dx/8.1/W982KMeXP/
EN-US/DX81 SDK_FULL.exe
3. Install IPL {Intel Image Processing Library) versi 2.5, direktori default instalasi adalah: c:\program files\intel\plsuite\
Filename: ipl25.exe
URL: http://developer.intel.com/software/products/perflib/ipl/
4. Install OpenCV {Intel Open Source Computer Vision) versi beta3.1, direktori defauh instalasi adalah: c:\program files\intel\opencv\
Filename: OpenCV bS.l.exe
URL: http://sourceforge.net/projects/opencvlibrary/
Settins Path
5. Tambahkan path instalasi program, yaitu:
c:\program files\intel\opencv\bin; c:\program files\intel\plsuite\bin (perhatikan pemakaian karakter untuk memisahkanpath).
• Untuk Windows 2000/XP:
Klik Start->Settings->Control Panel->System~>Advanced->Environment Variables->System Farz<3Z>/eA->Tambahkan pada variable Path
■ Untuk Windows 98:
133
Lampiran 3: Petunjuk Instalasi OpenCV
Tambahkan palh pada file autoexec.bat, yang secara default terletak di root directory, yaitu di c:\
Setting Visual C++ 6.0
6. Dahului dengan melakukan build baseclasses dari DirectShow baik untuk versi Win32 Release maupun Debug, yaitu dengan membuka file baseclasses.dsp pada lokasi:
C:\MSSDK\samples\Multimedia\DirectShow\BaseClasses\ melalui Visual C++ dan pilih menu: Build->Batch Build.
1. Tambahkan direktori untuk include, library, dan executable files, melalui menu:
Tools->Options->Directories (letakkan direktori-direktori tersebut pada urutan teratas).
a. Direktori untuk Include Files:
■ c:\mssdk\include
■ c:\mssdk\samples\multimedia\directshow\baseclasses
■ c:\mssdk\sampIes\multimedia\common\include
■ c:\program flles\intel\opencv\cvaux\include
■ c:\program files\intel\opencv\cv\include
■ c:\program files\intel\opencv\apps\common
■ c:\program files\intel\opencv\otherlibs\highgui
■ c:\program files\intel\plsuite\include
■ c:\program files\intel\plsuite\bin b. Direktori untuk Library Files:
• c:\mssdk\samples\multimedia\directshow\baseclasses\debug
■ c:\mssdk\samples\multimedia\directshow\baseclasses\release
■ c:\mssdk\lib
■ c:\program files\intel\opencv\lib
■ c:\program flles\intel\opencv\otherlibs\highgui
■ c:\program fiies\intel\plsuite\lib\msvc
134
Lampiran 3: Petunjuk Instalasi OpenCV (ianjutan)
c. Direktori untuk Executable Files:
• c:\program flles\intel\opencv\bin
■ c:\program files\intel\plsuite\bin
Development Perangkat Lunak
8. Tahap pengembangan perangkat lunak dalam Visual C++ menggunakan mode Win32 Debug untuk mendukung proses Debugging, setelah proses develop selesai baru aplikasi di-kompile dengan mode Win32 Release, dimana mode ini akan mempercepat eksekusi program, karena informasi debug yang sudah tidak diperiukan akan dihilangkan dari program. Untuk mendukung mode Win32 Debug maka build library versi debug dari OpenCV dan HighGUI yang akan menghasilkan library cvd.lib dan highguid.lib.
■ Untuk library versi debug dari OpenCV, buka file C:\Program Files\Intel\OpenCV\cv\make\cv.dsp, lakukan build secara batch untuk versi debug dan release.
■ Untuk library versi debug dari HighGUI, buka file C:\Program Files\Intel\OpenCV\otherlibs\highgui\highgui.dsp, lakukan build secara batch untuk versi debug dan release.
9. Dalam pembuatan aplikasi (proses coding) tambahkan informasi library-library yang digunakan oleh program (untuk keperluan proses linking), yaitu melalui menu:
Project->Settings->Link, tambahkan pada pilihan Object/library modules: cvd.lib ipl.lib vfw32.1ib highguid.lib (perhatikan pemakaian spasi untuk memisahkan library).
135
Lampiran 3: Petunjuk Instalasi OpenCV (lanjutan)
PROPOSAL TUGAS AKHIR
PERANCANGAN DAN PEMBUATAN APLIKASI
PERANGKAT LUNAK UNTUK MEMANTAU PERGERAKAN SEBUAH BENDA DALAM RUANG TIGA DIMENSI DENGAN
MENGGUNAKAN METODE STEREO VISION
Oleh:
Darmawan Sugiarto NRP: 26400050
JURUSAN TEK NIKINFORM ATIKA
FAKULTAS TEKNOLOGl INDUSTRI UNIVERSITAS KRISTEN PETRA
SURABAYA 2004
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEK NO LOG IINDUSTRI UNIVERSITAS KRISTEN PETRA
Nama NRP Peminatan
Judul Tugas Akhir
USULAN TUGAS AKHIR
: Darmawan Sugiarto :26400050
: Teknologi Perangkat Lunak
: Perancangan dan Pembuatan Aplikasi Perangkat Lunak untuk Memantau Pergerakan Sebuah Benda dalam Ruang Tiga Dimensi dengan Menggvinakan Metode Stereo Vision
: Resmana Lim, Ir., M.Eng.
: Arie Wirawan M., S.Kom.
: Semester Gasal 2003/2004
Surabaya, 16 Januari 2004 Pembimbing I
Pembimbing II Dilaksanakan
Mengetahui Pembimbing I
an Sugiarto
Pembimbing II
Resmana Lim, Ir., M.Eng. Arie Wirawan M., S.Kom.
Koordinator Tugas Akhir
Silvia Rostianingsih, S.Kom.
1. Judul
Perancangan dan Pembuatan Aplikasi Perangkat Lunak untuk Memantau Pergerakan Sebuah Benda dalam Ruang Tiga Dimensi dengan Menggunakan Metode Stereo Vision
2. Latar Belakang
Didalam dunia komputer saat ini perlu sangatlah perlu untuk sebuah komputer mengetahui letak dari sebuah benda dalam sebuah ruang tiga dimensi, contohnya dalam aplikasi motion detector, aplikasi untuk membuat three dimension object modeling, dll. Untuk membuat aplikasi-aplikasi seperti yang telah disebutkan diatas maka sangatlah diperlukan sistem mapping terhadap sebuah benda yang ada di dalam ruangan tiga dimensi sehingga letak dari titik- titik dapat ditentukan sesuai dengan benda aslinya.
Dengan melihat betapa pentingnya sistem yang dapat memantau letak dari sebuah benda didalam ruangan tiga dimensi maka penulis ingin mencoba membuat sebuah aplikasi yang dapat menentukan letak sebuah benda dalam ruangan tiga dimensi dengan menggunakan metode stereo vision depth calculation.
3. Perumusan Masalah
Penulis berencana mengembangkan sebuah software yang dapat mengetahui letak sebuah benda dalam ruang tiga dimensi. Software ini juga dapat melakukan pemetaan ulang terhadap benda tersebut beserta jaraknya terhadap kamera. Setelah itu software akan menampilkan pergerakan benda secara tiga dimensi.
Output program berupa visualisasi secara tiga dimensi ini diharapkan dapat memudahkan orang untuk melihat dan mengukur jarak sebenamya antara benda dengan kamera. Penulis merasa output berupa visualisasi secara tiga dimensi sangatlah penting sebab dengan visualisasi orang akan lebih mudah memahaminya daripada berupa kata-kata. Didalam output program nantinya penulis berharap dapat menampilkan pergerakan benda setiap detiknya sehingga dapat dianimasikan.
Selain itu software yang dibuat direncanakan untuk dapat mendeteksi jarak minimum yang diperbolehkan terhadap objek bergerak. Jika objek yang bergerak mendekati batas minimum yang ditentukan maka software akan mengeluarkan atau membunyikan alarm.
4. Ruang Lingkup
Secara garis besar software yang akan dikembangkan oleh penulis terdiri atas 3 bagian utama, dimana tiap-tiap bagian memiliki ftmgsi yang penting.
Ketiga bagian itu adalah:
a) Object detection, berftingsi untuk mengenali objek yang ditangkap oleh kamera.
b) Three dimension depth calculation, berftingsi untuk menghitung jarak antara kamera dengan benda yang ditangkapnya. Sistem ini menggunakan Stereo mapping depth calculation yaitu sistem yang dapat menentukan letak sebuah benda dengan menggunakan dua buah kamera seperti konsep mata manusia.
c) Object mapping system, adalah output dari software yang ingin penulis buat yaitu sistem yang menampilkan benda tersebut dalam tampilan ruang tiga dimensi.
Menggunakan bahasa pemrograman Microsoft Visual C++ dan untuk tampilan akhimya menggunakan Open GL.
Batasan dari software ini :
• Pada bentuk benda yang dapat diterima oleh computer.
• Estimasi pengambilan gambar (frame per second).
• Jarak maksimal dan minimal yang dapat dipantau oleh kamera.
5. Tinjauan Pustaka
Sebelum software ini digunakan perlu dilakukan camera calibration yang berftingsi untuk mendapatkan titik ft)kus dari kamera. Sistem ini diperlukan sebab beberapa attribute dari kamera nantinya digunakan untuk melakukan perhitungan sehingga kita dapat menemukan letak dari benda yang kita kehendaki.
Ada 5 unsur intrinsik dalam kamera yaitu nilai x dari titik pusat proycksi, nilai y dari titik pusat proyeksi, nilai fokus kamera, aspect ratio, dan sudut antara lensa. Camera calibration digunakan untuk menentukan unsur-unsur intrinsik tersebut.
Nilai tengah dari proyeksi kamera biasanya terletak tepat atau didekat titik pusat dari gambar yang diambilnya. Tetapi walapun teijadi pergeseran yang kecil dari titik tengah akan sangat besar pengaruhnya. sebab semakin jauh jaraknya maka nilai error dari titik tengah akan semakin besar.
Fokus kamera sangat penting didalam software ini sebab nilai fokus lensa kamera digunakan untuk melakukan perhitungan jarak benda seperti yang akan dijelaskan dibawah. Nilai fokus ini digunakan dalam perhitungan perbandingan segitiga maka jika semakin besar error terhadap nilai fokus maka semakin besar pula error terhadap nilai output yang dihasilkan oleh program.
Aspect ratio biasanya bemilai 1.0 dan sudut antara lensa biasanya bemilai 90° (derajat).
Ada 2 macam cara yang dapat digunakan untuk camera calibration yang pertama menggunakan papan catur (lihat gambar 1) dan yang kedua menggunakan dua papan yang bergambar kotak-kotak disusun tegak lurus satu sama lainnya (lihat gambar 2).
IMH v-v-v.v-vw -v-v.
gambar I : checkhoard pattern
gamhcir 2: (). T. L u o n g ’s calibrate object
Desain sistem dari software ini terdiri atas 3 hal seperti yang telah disebutkan diatas yaitu object detection, three dimension depth calculation, dan object mapping sistem.
Object detection direncanakan untuk mengenali benda bergerak dengan mengidentifikasikan warna benda terhadap ruangan. Setelah dikenali dan diidentifikasi maka sistem akan mengambil titik berat benda sebagai acuan untuk melakukan proses selanjutnya yaitu three dimension depth calculation.
Three dimension depth calculation menggunakan konsep stereo mapping.
Sistem ini menggunakan bantuan dua buah kamera yang ditempatkan sejajar sesuai dengan kebutuhan. Tiap-tiap kamera akan menangkap benda yang sama didalam image yang dihasilkan tetapi terletak di tempat yang berbeda. Sistem ini akan menghitung kedalaman sebuah objek tersebut dengan metode sebagai berikut.
cr
r
x c I I
X r
C r
gambar 3: Penggambaran benda dan bayangan
Misalkan P adalah sebuah objek yang akan dihitung jaraknya maka kamera akan menangkap objek P tersebut. Jarak antara kainera dan objek P adalah Z - f dimana f adalah titik fokus dari lensa kamera.
Dengan menggunakan rumus perbandingan segitiga maka didapatkan rumus sebagai berikut:
V 2
gambar 4: Persamman segitiga
J > x l ^ ^
Z -f f
gambar 5: persamaan 1
T = Jarak antara dua kamera
xl == Jarak antara normal lensa kiri dengan bayangan benda xr = Jarak antara normal lensa kanan dengan bayangan benda Z = Jarak antara bayangan yang ada di kamera dengan
f = Fokus dari lensa kamera
z= fT
xr-xl
Dari rumus diatas dapat diturunkan menjadi rumus untuk menghitung nilai Z yang merupakan jarak antara bayangan benda di lensa dan benda yang asli.
Object mapping system, direncanakan menggunakan Open GL. OpenGL merupakan standar graflk yang paling luas dipergunakan dalam pengembangan aplikasi grafik 2D dan 3D. Setelah diperkenalkan pada tahun 1992, OpenGL sangat luas di pergunakan dan mendukung Application Programming Interface (API) dari 2D dan 3D dan dapat dipergunakan dalam berbagai platform komputer di seluruh dunia.
Secara garis besar sistematika program adalah sebagai berikut:
gambar 6: persamaan 2
[
c a m era c a lib r a t io n !1
ca p tu re i ma g e
^^TTmagTJI
m a t c h i n g a r e a
t h r e e d i m e n s i o n a l m o d e l i n g
d e p t h c a l c u l a t i o n
i
gambar 7 sistematika proses
6. Tujuan
Software ini dirancang dan dibuat oleh penuiis dengan tujuan untuk
a) Membuat aplikasi yang dapat mengenali benda bergerak yang tertangkap melalui kamera.
b) Membuat aplikasi yang dapat memantau pergerakan benda yang terpantau oleh kamera.
c) Membuat applikasi yang dapat memvisualisasikan benda bergerak tersebut menjadi gambaran tiga dimensi.
d) Membuat aplikasi untuk memberikan peringatan kalau benda yang bergerak berada lebih kecil daripada jarak minimum yang ditentukan.
7. Metodologi
a) Studi literatur, yaitu dengan melakukan pembelajaran terhadap teknik pemrograman dengan menggunakan Visual C++ serta pengumpulan dan pembelajaran algorithma yang dipakai.
b) Desain perangkat lunak, dalam tahap ini penulis akan mencoba membuat desain software yang akan dihasilkan dengan membuat flowchart terhadap jalannya program.
c) Pengkodean, dilakukan dengan menggunakan sistem operasi Windows dengan bahasa pemrograman Visual C++ serta beberapa library yang diperlukan.
d) Pengujian dan evaluasi software, dilakukan pengujian secara tiga tahap yaitu: Pertama pengujian untuk object detection, pengujian pertama ini dimaksudkan untuk mengenali benda bergerak jika pengujian pertama ini berhasil dengan baik maka coding untuk three dimensional depth calculation system dapat dilakukan .Kedua pengujian untuk three dimensional depth calculation system, pengujian ini dilakukan untuk memastikan apakah software dapat dengan tepat menghitung jarak antara kamera dengan benda jika ada error didalamnya maka akan dilakukkan coding ulang sebelum masuk ketahap selanjutnya. Ketiga adalah pengujian untuk object mapping system.
e) Kesimpulan
Hasil dari tiga kali pengujian diatas akan diambil kesimpulan terhadap software yang dikerjakan. Software yang dihasilkan diharapkan baik jika software dapat menentukan dan memetakan letak benda dengan
benar.
8. Timeline
Tugas akhir ini direncanakan berjaian selama 4 bulan, dan penulis merencanakan untuk menyelesaikannya dengan penjadwaian seperti dibawah ini:
Daflar kegiatan Bulan ke - 1 Bulan ke - 2 Bulan ke - 3 Bulan ke - 4
1 11 111 IV 1 11 111 IV 1 11 111 IV I 11 111 IV Studi Literatur
Analisa dan desain sistem Pembuatan program Pengujian program Kesimpulan