Jumat, 04 Juli 2014

Menggunakan Webcam pada MATLAB

Seperti yang kita ketahui bersama, webcam adalah alat standar yang biasa digunakan pada komputer ketika kita ingin melibatkan video dalam aktivitas kita. Kegiatan ini misalnya chating menggunakan Skype, Yahoo Messager, dan sebagainya. Untuk keperluan dibidang robotika, webcam dapat dijadikan sebagai sensor visual pada robot vision. Salah satu perangkat lunak yang tangguh untuk proses pengolahan citra yang melibatkan video adalah MATLAB. Nah, pada kesempatan ini, kita akan membahas bagaimana cara mengaktifkan webcam menggunkan MATLAB.

Pada kesempatan ini, kita akan menggunakan MATLAB 2014a untuk mengaktifkan webcam. Syarat utama yang harus kita lakukan adalah memastikan MATLAB kita telah mengikutkan Image Acquisition Toolbox. Syarat kedua adalah memastikan bahwa adaptor webcam telah terinstal pada MATLAB. Pada MATLAB versi 2014a, adaptor ini belum terinstal secara otomatis. Oleh karena itu, kita harus menginstalnya terlebih dahulu. Proses instalasi telah kita bahas pada ulasan sebelumnya. Yup.... langsung saja kita ikuti langkah-langkah berikut:

Pastikan adaptor kita telah terinstal pada MATLAB dengan mengetikan sintaks imaqhwinfo pada Command Window dan amati respon dari MATLAB

>> imaqhwinfo
ans =
    InstalledAdaptors: {'winvideo'}
        MATLABVersion: '8.3 (R2014a)'
          ToolboxName: 'Image Acquisition Toolbox'
       ToolboxVersion: '4.7 (R2014a)'

Amati bahwa nama adaptor yang terinstal adalah winvideo. Ini adalah adaptor standar yang ketika kita menggunakan webcam berbasis sistem operasi Windows. Selanjutnya, mari kita buat perintah yang spesifik daripada perintah sebelumnya.

>> dev = imaqhwinfo('winvideo')
dev = 

AdaptorDllName: 'C:\MATLAB\SupportPackages\R2014a\genericvideo\adapt...'
    AdaptorDllVersion: '4.7 (R2014a)'
          AdaptorName: 'winvideo'
            DeviceIDs: {1x0 cell}
           DeviceInfo: [1x0 struct]

Setiap keterangan yang diberikan oleh MATLAB dapat ditelusuri lebih jauh dengan menuliskan tanda titik (.) setelah nama objek ingin dicari dan diikuti dengan keterangan tambahan pada jawaban yang diberikan oleh MATLAB sebelumnya. Contoh, pada respon di atas, penelusuran terhadap objek dev dapat dilakukan misalnya dengan mengetikkan dev.AdaptorDllName, dev.AdaptorDllVersion, dev.AdaptorName dan sebagainya. Nah, untuk saat ini, mari kita gunakan dev.DeviceInfo:

>> dev.DeviceInfo
ans =
             DefaultFormat: 'YUY2_160x120'
       DeviceFileSupported: 0
                DeviceName: 'USB2.0 Camera'
                  DeviceID: 1
     VideoInputConstructor: 'videoinput('winvideo', 1)'
    VideoDeviceConstructor: 'imaq.VideoDevice('winvideo', 1)'
          SupportedFormats: {1x5 cell}


Amati bahwa format default dari webcam adalah 'YUY2_160x120'. Informasi ini berarti bahwa webcam anda menggunakan format YUY2 untuk ekoding format warna pada gambar yang diambil untuk meghasilkan video. Contoh format lain misalnya RGB24 dan YUYV. Keterangan 160x120 menunjukkan ukuran piksel video Anda. Mari kita coba membuat objek video berdasarkan keterangan sebelumnya dengan menggunakan sintaks videoinput dan lihat hasilnya dengan sintaks preview.

>> vid = videoinput('winvideo');
>> preview(vid)


 

Sudah kita duga bersama bahwa video yang dihasilkan cukup kecil, yaitu 160x120. Nah, sekarang mari kita perbesar. Kembali ke object dev yang di atas. Mari kta cari apa saja format yang disuport oleh webcam kita selain ukuran 160x120:

>> dev.DeviceInfo.SupportedFormats
ans =
  Columns 1 through 4
    'YUY2_160x120'    'YUY2_176x144'    'YUY2_320x240'    'YUY2_352x288'
  Column 5
    'YUY2_640x480' 

Ternyata formatnya cukup banyak juga. Mari kita mencoba frame yang lebih besar, misalnya 320x240. Namun sebelum itu, coba amati berapa ID dari device kita. Berdasarkan keterangan sintaks kedua yang telah kita ketikkan, yaitu dev = imaqhwinfo('winvideo'), kita ketahui bahwa ID dari webcam kita adalah 1. Mari kita mengubah ukuran frame kita. Oya, jangan lupa ditutup dulu video kita dengan perintah: closepreview(vid).

>> closepreview(vid)
>> vid = videoinput('winvideo',1,'YUY2_320x240');
>> preview(vid)






Yup, gambarnya sudah cukup besar. Jika kita masih bingung menggunakan sintaks videoinput, kami sarankan untuk membeca keterangan lebih lanjut pada MATLAB Help. Nah, kira-kira apa yang bisa kita lakukan selanjutnya? Mari kita capture satu gambar dari video kita. Kita gunakan webcam sebagai kamera untuk mengambil gambar. Gunakan perintah getsnapshot untuk mengambil gambar, dan perlihatkan hasilnya menggunakan sintaks imshow, seperti berikut: 

>> gambar = getsnapshot(vid);
>> imshow(gambar)





Mmmm... amati bahwa hasil yang ditampilkan tidak sesuai dengan harapan kita. Ini adalah pengaruh format YUY2 yang telah kita bahas sebelumnya. Jika kita menggunakan format lain, seperti RGB24, mungkin hasilnya sudah sesuai dengan harapan kita, jadi tidak perlu kita ubah lagi. Untuk saat ini, mari kita ubah format warna agar sesuai yang kita inginkan. Gunakan sintaks ycbcr2rgb untuk mengubahnya, dan jalan lupa kita tutup dulu gambar sebelumnya dengan perintah close.

>> close
>> gambarRGB = ycbcr2rgb(gambar);
>> imshow(gambarRGB)







Oke... gambar sudah sesuai dengan apa yang kita inginkan. Sekarang, mari kita simpan gambar kita. Misalnya, saya mau menyimpannya menggunakan format .PNG. Pada MATLAB, sintaks yang digunakan untuk menyimpan data menjadi citra/gambar adalah imwrite. Kita simpan data sebelumnya, yaitu gambarRGB dengan nama gambarku.png.

>> imwrite(gambarRGB,'gambarku.png');

Secara default, gambar akan tersimpan pada folder  \Documents\MATLAB. Jika ingin menyimpan di lokasi lain, misalnya di direktori D:\ , bisa kita ubah menggunakan sintaks berikut:

>> imwrite(gambarRGB,'D:\gambarku.png');

RANGKUMAN
Mari kita rangkum pembahasan kita. Jika kita telah mengetahui format webcam kita, maka kita dapat rangkum sintaks yang telah kita bahas sebelumnya:

>> vid = videoinput('winvideo',1,'YUY2_320x240');
>> preview(vid)
>> gambar = getsnapshot(vid);
>> gambarRGB = ycbcr2rgb(gambar);
>> imwrite(gambarRGB,'gambarku.png');


Okay.... selesai sudah pembahasan kita pada kesempatan kali ini... semoga bermanfaat wink



4 komentar:

Tania Bonita mengatakan...

Trimakasih materinya.
Saya ingin menanyakan, mengapa mini dv camera saya tidak terdeteksi di Device ID? jadi yang keluar hanya 1 DeviceIDs -> webcam laptop.
Mohon bantuannya, mungkin jawabannya bisa dikirim ke email saya

faisal styawan mengatakan...

Mantap. Makasih

sandi mengatakan...

mas jika ingin menghubungkan ip kamera dengan matlab bagaimana caranya?

Nurulwart mengatakan...

Kamera sudah jalan tapi belum juga mau mendeteksi