Anda di halaman 1dari 3

[Jans Hendry / EE&IT UGM Indonesia]

August 15, 2011

Akses Kamera Web Cam dengan Matlab – 3 (Merekam Video Dengan Matlab)

Pada artikel sebelumnya kita telah membahas mengenai cara mengambil gambar secara real time dengan menggunakan kamera lalu menjadikan beberapa gambar tersebut menjadi video.

Pada artikel ini, akan dibahas lebih lanjut mengenai merekan video secara real time dari kamera web cam. Menggunakan kamera untuk merekam video bisa dilakukan dengan matlab. Rekaman yang didapat bisa langsung disimpan dalam bentuk file AVI dalam harddisc. Hasil dari rekaman bisa dimanfaatkan untuk pengolahan data lebih lanjut.

Program berikut ini dapat digunakan untuk merekam video dengan menggunakan MATLAB.

%% inisialisasi objek caminf = imaqhwinfo; mycam = char(caminf.InstalledAdaptors(end)); mycaminfo = imaqhwinfo(mycam); resolution = char(mycaminfo.DeviceInfo.SupportedFormats(end));

vd = videoinput(mycam, 1, resolution);

Bagian dari program di atas ditujukan untuk mendapatkan informasi dari kamera yang terinstal dalam komputer. Dalam hal ini, kita mengambil winvideo yang akan selalu ada di laptop yang memiliki webcam. Bentuk yang lebih sederhana adalah bentuk statis yang bisa juga anda gunakan. Dengan catatan, anda telah mengetahui dengan baik jenis adaptor yang telah terinstal. Perhatikan potongan code di bawah ini:

% vd=videoinput('winvideo',1,'YUY2_1280x720');

vd.ReturnedColorSpace='rgb'; vd.FramesPerTrigger=Inf;

vd.FrameGrabInterval=1;

vd.LoggingMode = 'disk&memory';

Potongan program di atas merupakan atribut yang di set untuk objek video (vd). Yang perlu anda pelajari adalah penggunaan ‘disk&memory’ pada LoggingMode. Ini menujukkan bahwa kita akan merekam video dalam harddisc. Sehingga kita akan mengalokasikan memori untuk tujuan ini. Alokasinya ditunjukkan oleh potongan program berikut ini:

% imaqmem(200000000);

1

[Jans Hendry / EE&IT UGM Indonesia]

August 15, 2011

Tapi pembatasan tersebut dilakukan apabila kita telah melakukan perhitungan tentang seberapa besar ukuran data yang ingin kita rekam. Yang menjadi masalah adalah pemberian nilai pada imaqmem kerap kali menimbulkan error. Karena matlab dengan sendirinya mengetahui bahwa nilai tersebut tidak cukup atau malah terlalu berlebihan karena memori kita sendiri tidak cukup untuk kebutuhan yang dituliskan.

tenang saja, saya bisa saja menjelaskan lebih rinci kepada anda, tapi itu akan

menyita waktu. Jadi saya punya ide, bagaiman jika imaqmem tersebut kita hapus saja?? Lalu kita

Bingung ya???? Hehe

gantikan dengan program yang lain, sehingga anda bisa merekam selama yang anda mau perhatikan program ini hingga selesai

untuk itu, mari

video = avifile('1.avi', 'Compression', 'None', 'Quality', 75, 'keyframepersec', 2.14, 'FPS',25); vd.DiskLogger = video;

vd_src = getselectedsource(vd); set(vd_src,'Tag','Video Tracking'); %%

Bagian dari program di atas menujukkan cara pembuatan file untuk video berformat AVI. Sebaiknya anda mengikuti formati diatas, terlebih untuk line teratas karena biasanya akan muncul pesan kesalahan pada indeo5. Namun hanya formatnya saja yang anda tiru, nilai-nilai nya bisa saja anda ubah seperti Quality, FPS dan lain-lain.

Yang perlu diperhatikan juga, bahwa kita perlu menghubungkan variable VIDEO (avifile) dengan variabel objek video(VD). Bisa dibilang memberikan benang merah antara keduanya. Hal tersebut dilakukan dengan menset disklogger pada vd menjadi video.

Bagian program berikutnya adalah menset objek vd sebagai video recorder. Atribut yang digunakan adalah Video Tracking.

%% Previewing video figure('Name', 'Video Preview'); uicontrol('String', 'Close', 'Callback', 'close(gcf)'); vidRes = get(vd, 'VideoResolution'); nBands = get(vd, 'NumberOfBands'); hImage = image(zeros(vidRes(2), vidRes(1), nBands)) ; preview(vd, hImage); %%

Bagian ini hanya untuk memunculkan figure baru untuk menampilkan keadaan yang ditangkap oleh kamera saat ini.

2

[Jans Hendry / EE&IT UGM Indonesia]

August 15, 2011

%% Begin recording disp('Mengambil data

start(vd)

while(vd.FramesAcquired<=1000)

');

data = getdata(vd,1); flushdata(vd);

end

Potongan program di atas merupakan perintah untuk matlab agar mulai merekam. Jumlah frame yang ingin direkam dibatasi dengan menggunakan perintah FrameAcquired.

Bagian terpenting sebagai pengganti imaqmem adalah flushdata(vd). Mengapa ini menjadi penting, karena kita meminta matlab untuk segera menghapus frame lama. Frame lama yang dimaksud adalah frame saat ini yang sudah direkam ke dalam file AVI oleh matlab. Seperti yang diketahui bahwa FrameAqcuired akan melakukan inkremen secara otomatis, sehingga ketika frame saat ini telah direkam lalu dihapus maka matlab akan merekam frame berikutnya. Dengan demikian, kita bisa membuat memori tetap bebas dari aktifitas perekaman matlab.

% clearing

stop(vd); disp('Selesai '); stoppreview(vd); video = close(vd.DiskLogger); delete(vd); clear mex; imaqreset;

Potongan program di atas hanya bagian untuk ‘pembersihan’. Hanya dengan membaca program di atas, saya yakin anda bisa mengerti maksud dan tujuannya.

Untuk artikel berikutnya, saya akan menunjukkan cara membuat real time edge detection of objects. Program tersebut telah disempurnakan dan teruji dengan baik. Semoga anda masih bisa memanfaatkan apa yang telah dihadirkan pada artikel ini dan artikel sebelumnya

%% terima kasih

% originale by jans hendry

% UGM, Indonesia

3