Anda di halaman 1dari 6

[Jans Hendry / EE&IT UGM Indonesia]

August 5, 2011

Akses Kamera Web Cam dengan Matlab - 1

Dalam artikel ini kita akan membahas mengenai bagaimana menggunakan matlab untuk mendapatkan data dari Digital Web Cam. Data yang diambil bisa berupa citra ataupun video. Tujuannya adalah untuk membantu kita mengamati objek secara realtime. Aplikasi yang telah dikembangkan banyak sekali, misalnya untuk mengamati keberadaan manusia di suatu area (projek berikutnya), mengamati pergerakan pesawat secara real time (secara online pernah membantu mahasiswa dari inggris yang mengerjakan projek ini), menghitung jumlah produk yang berjalan dalam line produksi, dan lain-lain. Terlalu banyak yang bisa kita lakukan dengan menggunakan matlab.

Berdasarkan contoh di atas, mengapa kita memilih matlab untuk fungsi ini? Bukankah produk bahasa pemrograman lain bisa melakukan hal yang sama? Tentu saja bisa. Tapi matlab sangat unggul dalam kemudahan dalam akses dan kemampuannya dalam komputasi. Tentu setelah berhasil mengambil data secara realtime kita akan melakukan pengolahan terhadap data tersebut. Anggap misalnya anda ingin melakukan proses lanjutan berupa pengolahan citra digital terhadap video yang telah kita ambil dengan matlab. Pengolahan ini sangat mungkin dilakukan dalam matlab dengan berbagai toolbox yang telah disediakan. Dengan demikian kita bisa focus terhadap apa yang menjadi tugas analisa bukan hanya dalam pemrogramannya.

Tanpa memperpanjang basa basi ini, saya akan membagi artikel ini dalam beberapa bagian. Itulah sebabnya pada artikel ini judulnya diberi penomoran 1, karena artikel ini akan berlanjut dengan studi kasus yang mungkin bisa membantu pembaca dalam mengerti tentang video processing in matlab.

Dalam artikel ini akan dibahas:

1. Mendapatkan informasi perangkat keras kamera yang tersedia di komputer.

2. Inisialisasi perangkat keras sebagai objek dan membaca parameter dari kamera.

3. Memberikan nilai pada parameter perangkat keras.

4. Review melalui perangkat keras.

5. Bagaimana mendapatkan single image melalui kamera.

6. Sample program.

Untuk artikel ini, 8 topik di atas akan dikupas secara sederhana dan jelas. Tidak perlu dijelaskan secara panjang lebar jika hanya memberikan arti yang sama.

1. Mendapatkan informasi perangkat keras kamera yang tersedia di komputer

Biasanya laptop telah dilengkapi dengan sebuah kamera yang disebut sebagai webcam. Bila anda tidak memilikinya, anda bisa membeli di toko terdekat lalu lakukan instalasi driver yang sesuai dengan panduannya. Biasanya hal ini tidak sulit. Untuk urusan perangkat keras, saya berikan hak anda untuk mengurusnya.

Pada tahap ini, anda diminta untuk mengecek perangkat keras (kamera) yang terpasang pada laptop atau pc anda. Buka lah command window lalu ketik:

1

[Jans Hendry / EE&IT UGM Indonesia]

>> imaqhwinfo

August 5, 2011

Maka akan ditampilkan adaptor yang terpasang pada laptop anda. Perhatikan hasil di bawah ini:

ans =

InstalledAdaptors: {'coreco' 'winvideo'} MATLABVersion: '7.8 (R2009a)' ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '3.3 (R2009a)'

Berdasarkan hasil deteksi di atas, saya memilih winvideo sebagai adaptor karena merupakan adaptor webcam untuk laptop sistem operasi windows. Perlu diperhatikan bahwa hasilnya bisa berbeda dengan laptop anda.

2. Inisialisasi perangkat keras (adaptor) sebagai objek

Sekarang kita masuk kedalam tahap untuk mulai menggunakan kamera tersebut. Hal yang perlu dilakukan adalah inisialisasi kamera sebagai objek.

Instruksi yang digunakan dalam matlab adalah:

obj = videoinput(adaptorname,deviceID,format)

contohnya:

>> vd=videoinput('winvideo');

pertanyaannya, bagaimana saya tau parameter deviceID, dan format ? jawabannya adalah dengan mengetikkan perintah berikut dalam matlab:

>> get(vd)

Hasilnya adalah

General Settings:

DeviceID = 1 DiskLogger = [] DiskLoggerFrameCount = 0 EventLog = [1x0 struct] FrameGrabInterval = 1 FramesAcquired = 0 FramesAvailable = 0 FramesPerTrigger = 10 Logging = off LoggingMode = memory

2

[Jans Hendry / EE&IT UGM Indonesia]

Name = YUY2_1280x720-winvideo-1 NumberOfBands = 3 Previewing = off ROIPosition = [0 0 1280 720] Running = off Tag = Timeout = 10 Type = videoinput UserData = [] VideoFormat = YUY2_1280x720 VideoResolution = [1280 720]

Color Space Settings:

BayerSensorAlignment = grbg ReturnedColorSpace = YCbCr

Callback Function Settings:

ErrorFcn = @imaqcallback FramesAcquiredFcn = [] FramesAcquiredFcnCount = 0 StartFcn = [] StopFcn = [] TimerFcn = [] TimerPeriod = 1 TriggerFcn = []

Trigger Settings:

InitialTriggerTime = [] TriggerCondition = none TriggerFrameDelay = 0 TriggerRepeat = 0 TriggersExecuted = 0 TriggerSource = none TriggerType = immediate

Acquisition Sources:

SelectedSourceName = input1 Source = [1x1 videosource]

August 5, 2011

Anda dapat melihat bahwa parameter tersebut telah dicetak tebal. Dengan demikian anda bisa memberikan spesifikasi kepada perangkat keras yang anda panggil. Sehingga instruksi tersebut berubah menjadi:

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

Dengan dijalankannya instruksi tersebut, maka telah terbentuk sebuah objek baru yang bernama vid. Untuk seterusnya objek tersebut akan digunakan dalam memanggil kamera dan mengambil data seperti yang kita inginkan.

3. Memberikan nilai pada parameter perangkat keras.

3

[Jans Hendry / EE&IT UGM Indonesia]

August 5, 2011

Dengan perintah get(vd), kita dapat mengetahui parameter apa saja yang ada pada kamera. Lalu dari parameter tersebut, beberapa diantaranya bisa diset. Untuk mengetahui parameter apa saja yang bisa diset, gunakan perintah berikut ini:

>> set(vd)

Hasil eksekusinya adalah

General Settings:

DiskLogger FrameGrabInterval FramesPerTrigger LoggingMode: [ {memory} | disk | disk&memory ] Name ROIPosition Tag Timeout UserData

Color Space Settings BayerSensorAlignment: [ {grbg} | gbrg | rggb | bggr ] ReturnedColorSpace: [ rgb | grayscale | {YCbCr} | bayer ]

Callback Function Settings:

ErrorFcn: string -or- function handle -or- cell array FramesAcquiredFcn: string -or- function handle -or- cell array FramesAcquiredFcnCount StartFcn: string -or- function handle -or- cell array StopFcn: string -or- function handle -or- cell array TimerFcn: string -or- function handle -or- cell array TimerPeriod TriggerFcn: string -or- function handle -or- cell array

Trigger Settings:

TriggerFrameDelay

TriggerRepeat

Acquisition Sources:

SelectedSourceName: [ {input1} ]

Tampak bahwa cukup banyak parameter yang bisa kita set ulang. Bisa saja dalam suatu kasus anda perlu melakukan set ulang terhadap semua parameter. Perlu diingat bahwa parameter di atas

4

[Jans Hendry / EE&IT UGM Indonesia]

August 5, 2011

telah memiliki nilai awal atau default. Anda bisa mencari tahu sendiri melalui MATLAB HELP untuk melihat nilai yang telah diset pada mereka. Ada kemungkinan juga, anda tidak perlu melakukan perubahan terhadap semua parameter. Untuk contoh pada artikel ini, parameter yang penting dan perlu anda gunakan dan diubah adalah

>> set(vd,'SelectedSourceName','input1');

Artinya anda menjadikan objek vd sebagai sumber data.

>> vd.ReturnedColorSpace='rgb';

Artinya anda menset agar data yang dikembalikan berupa citra dalam format warna RGB.

4. Review melalui kamera.

Tahap berikutnya adalah memanggil window baru yang akan menampilkan hasil tangkapan kamera secara live. Tuliskan perintah ini:

>> preview(vd)

Maka sebuah window yang berisi lingkungan yang berada didepan kamera akan ditampilkan.

5. Bagaimana mendapatkan single image melalui kamera.

Untuk mendapatkan sebuah citra dari kamera anda, bisa digunakan perintah berikut:

>> gambar=getsnapshot(vd);

Ini berarti variabel gambar menyimpan data citra digital yang telah diambil menggunakan kamera. Data yang disimpan adalah matriks yang mirip dengan perintah ketika anda membaca informasi dari sebuah citra digital yang tersimpan di dalam komputer.

Lalu, untuk menampilkan hasil snapshot tidak bisa menggunakan perintah imshow. Karena data ini masih berupa data matriks. Sehingga kita perlu menggunakan perintah lain untuk mengubah matriks tersebut ke citra lalu menampilkannya sebagai citra. Perintahnya adalah

>> image(gambar);

Bagaimana jika anda ingin menyimpan data tersebut ke dalam sebuah citra? Anda bisa menggunakan perintah imwrite(gambar,’namafile.jpg’);

Yang perlu anda perhatikan adalah, ketika anda melakukan aksi itu ekstensi file menjadi sangat penting. Karena data original (gambar) akan diubah secara otomatis sesuai dengan ekstensi yang tertulis, misalnya bila anda menjadikan file tersebut berekstensi jpg, maka data akan mengalami kompresi yang signifikan sehingga ukurannya bisa menjadi lebih kecil dan informasi asli menjadi

5

[Jans Hendry / EE&IT UGM Indonesia]

August 5, 2011

terdistorsi. Jadi pilihlah dengan bijak. Sementara jika anda meminta saran saya, maka jawabannya adalah anda tidak perlu melakukan hal yang sia-sia. Faktanya anda sudah mendapatkan data!

Sejauh ini, anda telah menghasilkan sebuah program sederhana. Anda telah memiliki pengetahuan untuk memanfaatkan kamera dalam mendapatkan citra digital walaupun hanya satu citra saja. Perlu anda ingat, bahwa ketika anda selesai dengan hal di atas anda perlu untuk menutup dan menghapus objek (vid) yang tadi telah dibuat. Untuk menghapus objek tersebut dapat digunakan perintah:

>> delete(vd);

6. Sample program.

Contoh program siap pakai:

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

set(vd,'SelectedSourceName','input1');

vd.ReturnedColorSpace='rgb';

preview(vd);

gambar=getsnapshot(vd);

image(gambar);

delete(vd);

Artikel berikutnya akan dititiberatkan bagaimana cara mengambil series image, menjadikan beberapa citra menjadi video, membaca video yang sudah ada, membuat video dari kamera.

~~~ TERIMA KASIH ~~~

6