1. LAPORAN WORKSHOP KOMPUTER VISI
CAMERA CALLIBRATION
LUSIANA DIYAN NINGRUM
2210181051
3 D4 TEKNIK KOMPUTER B
PRODI SARJANA TERAPAN TEKNIK KOMPUTER
DEPARTEMEN TEKNIK INFORMATIKA DAN KOMPUTER
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA
2. PERALATAN & BAHAN
1. Visual Studio 2017
2. OpenCV3.1
3. MATLAB
LANGKAH PERCOBAAN
KALIBRASI OFFLINE > Upload Gambar dari Camera HP
Pada percobaan pertama ini, karena tadi di awal saya mengalami kendala pada webcame
sehingga untuk capture add image saya menggunakan gambar yang saya ambil menggunakan
kamera HP.
Untuk total image yang saya gunakan ada 15 images, dan 1 image di reject
Setelah saya menentukan ukuran kotak papan catur, maka MATLAB melakukan proses
pendeteksian corner dari gambar tersebut.
3. Setelah keluar hasil deteksi corner, maka dapat dilanjutkan dengan Calibrate untuk
memproses penghitungan kalibrasi
Hasilnya akan menampilkan error pixel yang dapat digunakan untuk menganalisa error
Jika sudah tidak masalah dengan error yang ada, maka proses dapat dilanjutkan dengan
menekan tombol Export Camera Parameters > Generate MATLAB Script, kemudian akan
muncul script program yang siap menampilkan hasil intrinsic kamera matriks > Run.
Pada bagian command window ketik : cameraParams.IntrinsicMatrix , maka akan muncul
hasilnya matriks 3 x 3
4. KALIBRASI OFFLINE DENGAN CAPTURE WEBCAME
Source Code untuk Mencapture Gambar Livecam
#include <iostream>
#include <fstream>
#include <Windows.h>
#include "tchar.h"
//#include "stdafx.h"
#include <opencv2opencv.hpp>
#include <windows.h>
using namespace cv;
using namespace std;
int ct = 0;
char tipka;
char filename[100];
int c = 1;
int main(int, char**)
{
Mat frame;
VideoCapture cap;
cap.open(0);
int deviceID = 0;
int apiID = cv::CAP_ANY;
cap.open(deviceID + apiID);
if (!cap.isOpened())
{
cout << "ERROR! Unable to open cameran";
return -1;
}
5. cout << "Start grabbing" << endl
<< "Press a to terminate" << endl;
for (;;)
{
cap.read(frame);
if (frame.empty())
{
cout << "ERROR! blank frame grabbedn";
break;
}
Sleep(1);
imshow("CAMERA 1", frame);
tipka = cv::waitKey(30);
if (tipka == 's')
{
sprintf_s(filename, "E:/kalibrasikamera/Image_%d.jpg", c);
cv::waitKey(10);
imshow("CAMERA 1", frame);
imwrite(filename, frame);
cout << "Image_" << c << endl;
c++;
}
if (tipka == 'q')
{
cout << "Terminating..." << endl;
Sleep(10);
break;
}
}
return 0;
}
Image yang dihasilkan dari capture program ini kemudian dimasukkan ke kalibrasi file di
MATLAB. Dengan menggunakan langkah – langkah yang sama dengan kalibrasi
menggunakan file image sebelumnya yang dari capture camera hp.
6. Disini saya menggunakan 25 image, yang selanjutnya berdasarkan analisa error pixel masih
tinggi nilai errornya sehingga image – image yang mengalami error tinggi saya remove yang
akan membuat nilai rata – rata error pixel semakin mengecil.
Selanjutnya dilakukan Export Camera Parameters > Generate MATLAB Script. Maka anda
akan terhubung lagi dengan MATLAB editor degan berisikan program yang siap
menampilkan hasil dari intrinsic kamera matriks, lalu klik Run, maka akan muncul hasil plot
seperti gambar di bawah ini.
7. Maka pada bagian command window ketik : cameraParams.IntrinsicMatrix , maka akan
muncul hasilnya matriks 3 x 3
KALIBRASI ONLINE > ONLINE CAPTURE IMAGE
Untuk langkah – langkah nya sesuai dengan modul praktikum Camera Calibration.
Disini saya mengcapture sebanyak 20 image.
8. Jika sudah selesai, prosedur selanjutnya dalah sama dengan yang meng upload file. Jika
intrinsik kamera matriks sudah anda dapatkan, maka anda dapat menggunakan matriks
tersebut pada pemrogaman anda untuk anda proses ke tahap selanjutnya.
Disini saya me remove dan melakukan recalibrate untuk image yang memiliki error pixel
tinggi agar didapat rata – rata error pixel yang rendah.