Ruang Chupa @ ISP

A blog from M Yusuf (AKA Chupa), a Microsoft Student Partners of UPI.

November 2010 - Posts

Pendekatan Microsoft terhadap Dunia Pendidikan

Tema Acara

Pendekatan Microsoft terhadap Dunia Pendidikan

Hasil

  1. 50 lebih pelajar mendaftar untuk acara ini.
  2. Peserta antusias pada teknologi Windows MultiPoint Mouse dan akan diadakan workshopnya untuk internal UPI.
  3. Para calon pendidik mengerti bagaimana pentingnya IT dalam dunia pendidikan.
  4. Beberapa tim Imagine Cup terbentuk di UPI seusai acara ini.

Background

Pada tanggal 27 November 2010, Microsoft Student Partners UPI bekerjasama dengan BEM KEMAKOM FPMIPA UPI mengadakan acara seminar dengan tema yaitu “Pendekatan Microsoft terhadap Dunia Pendidikan”. Acara ini berlangsung selama 4 jam yaitu dari pukul 9.00 s/d 13.00. Pemateri-pemateri berasal dari MSP UPI, MUGI Kampus UPI, Microsoft Indonesia, dan MIC ITB. Dalam mempersiapkan acara ini kami membentuk tim kecil terdiri dari 2 MSP UPI dan 2 MUGI Kampus UPI. Juga banyak bantuan dari BEM KEMAKOM FPMIPA UPI untuk membantu dalam hal birokrasi dan penyediaan tempat.

Foto-foto

Publikasi acara salah satunya melalui media spanduk


Sedikit bercanda-canda saat persiapan :)


Aulia Ul Haq (MUGI UPI) sang penerima tamu


Muhammad Yusuf (MSP UPI) sebagai MC sedang membuka acara


Dicky Dwijayanto (MUGI UPI) sedang membawakan materi Windows MultiPoint Mouse


Rendy (MSP UPI) sedang mendemokan Windows MultiPoint Mouse


Beberapa raut muka dari peserta


Pembagian goodies untuk para penanya


Muhammad Yusuf (MSP UPI) sebagai MC sedang sedikit menjelaskan tentang Microsoft Student Partners


Senyum semangat Pak Julius saat membawakan materi


Puja Pramudya (MIC ITB) membawakan materi tentang pengenalan Imagine Cup


Foto-foto dulu setelah acara usai, sayang Pak Julius sedang terburu-buru sehingga tidak bisa ikut sesi foto-foto. :(

Testimoni dari Peserta

  1. “Lanjutkan!”
  2. “Keren… Alhamdulillah, saya gak nyesal memutuskan untuk datang.”
  3. “Seharusnya lebih sering diadakan krn memang kemajuan teknologi sangat cepat.”
  4. “Excellent!”
  5. “Tambah doorprize dan konsumsi ^_^”

Materi yang Disampaikan

  1. Pengenalan Windows MultiPoint Mouse

    Dibawakan oleh Rendy (Microsoft Student Partners) dan Dicky Dwijayanto (Microsoft User Group Indonesia)

  2. Pendekatan Microsoft terhadap Dunia Pendidikan

    Julius Fenata (Academic Developer Evangelist Microsoft Indonesia)

  3. Pengenalan Imagine Cup

    Puja Pramudya (MIC ITB; Anggota Tim Ganesh, Juara 1 Software Design Imagine Cup Indonesia Local Final 2010)

Credits

Berikut adalah anggota tim kecil yang mempersiapkan acara ini.

  1. Aulia Ul Haq (Microsoft User Group Indonesia), sebagai divisi dokumentasi, konsumsi, transportasi, logistik, penerima tamu, juga menjadi divisi publikasi yang menjadi tukang masang spanduk. Berikutnya jangan *** datang telat lagi yaa.. :P
  2. Dicky Dwijayanto (Microsoft User Group Indonesia), sebagai pemateri, transportasi, logistik, dan juga sempat jadi dokumentasi. Berkat acara ini dia bisa bangun pagi.. :)
  3. Muhammad Yusuf (Microsoft Student Partners), sebagai MC, divisi logistik, publikasi keliling nempel-nempel poster, bikin undangan di facebook, masang spanduk juga, dan juga mendadak ditunjuk sebagai ketua pelaksana demi formalitas di proposal.
  4. Rendy (Microsoft Student Partners), sebagai pemateri, divisi publikasi nempel-nempel poster keliling kampus, dan juga sedikit menjadi divisi dokumentasi pribadi Puja. :P

Juga tak lupa kami sadar acara kami tak akan berlangsung lancar tanpa bantuan dan partisipasi dari:

  1. Septiyadi Guslinar dari BEM KEMAKOM FPMIPA UPI yang sangat banyak membantu dan membimbing dalam mempersiapkan acara ini.
  2. Para pemateri yang mengisi acara ini.
  3. Prodi Ilmu Komputer dan Pendidikan Ilmu Komputer FPMIPA UPI yang sudah mendukung kami dalam mengadakan acara ini.
  4. Para peserta acara ini dan pihak lain yang tidak dapat disebutkan satu per satu.
Gaussian Smoothing pada Hasil Capture Webcam Menggunakan OpenCV pada C++

Minggu lalu yang sangat-sangat super sibuk 2010 sekarang benar-benar terlewati. Kini dampaknya adalah rasa lega dan kocek yang bertambah :P . Saatnya kembali ke kegiatan mempelajari OpenCV untuk Augmented Reality sekaligus blogging.

Kemarin-kemarin, saya mempelajari bagaimana menerapkan algoritma gaussian pada library OpenCV untuk smoothing pada suatu gambar. Cara mengambil library OpenCV untuk smoothing gambar adalah seperti berikut:

cvSmooth(framekameramurah, gaused, CV_GAUSSIAN, 75, 75);

Kita tinggal ambil fungsi cvSmooth(), lalu parameter pertama kita isi dengan variabel untuk gambar yang akan diproses, lalu variabel kedua kita isi dengan variabel untuk gambar keluaran setelah gambar diproses, variabel ketiga kita isi dengan tipe Smoothing yang akan kita gunakan, lalu variabel yang keempat dan kelima kita isi dengan area smoothing untuk setiap piksel-pikselnya.

Nah dari ilmu yang saya dapatkan itu, saya coba menerapkannya pada sebuah hasil capture Webcam. Berikut skrip yang berhasil saya buat:

#include “stdafx.h”
#include “highgui.h”
#include “cv.h”

int _tmain(int argc, _TCHAR* argv[])
{
    cvNamedWindow(“Kamera1″);
    cvNamedWindow(“Gaussian”);
    CvCapture* kameramurah;
    if(argc==1){
        kameramurah = cvCreateCameraCapture(1);
    } else {
        kameramurah = cvCreateFileCapture(“D:/softboy.avi”);
    }
    assert(kameramurah!=NULL);
    IplImage* framekameramurah;
    IplImage* gaused;
    while(1){
        framekameramurah=cvQueryFrame(kameramurah);
        if(!framekameramurah) break;
        gaused = cvCreateImage(
            cvGetSize(framekameramurah),
            IPL_DEPTH_8U,
            3
            );
        cvSmooth(framekameramurah, gaused, CV_GAUSSIAN, 75, 75);
        cvShowImage(“Kamera1″, framekameramurah);
        cvShowImage(“Gaussian”, gaused);
        char c = cvWaitKey(33);
        if(c==27) break;
        cvReleaseImage(&gaused);
    }
    cvWaitKey(0);
    cvReleaseCapture(&kameramurah);
    cvReleaseImage(&framekameramurah);
    cvReleaseImage(&gaused);
    cvDestroyWindow(“Kamera1″);
    cvDestroyWindow(“Gaussian”);
}

Disana terlihat bahwa saya menyimpan gambar hasil smoothing sementara di variabel gaused. Saya mendeklarasikan dulu variabel gausednya dengan sebuah tipe IplImage. Lalu terlihat juga saya menentukan properti untuk variabel gaused dengan cvCreateImage(). Saya tentukan ukuran dari gaused adalah sama dengan ukuran dari gambar yang dicapture oleh webcam, lalu kedalamannya 8 bit per channel dengan 3 channel.

Lalu saya tampilkan kedua citra dari capture Webcam sebelum smoothing dan sesudah smoothing pada dua jendela yang berbeda. Berikut tampilan dari hasil aplikasinya:

Lalu timbul pertanyaan dibenak pembaca sekalian, mengapa cvCreateCameraCapture(); nya dimasukkan ke variabel yang bernama kameramurah? Lalu mengapa hasil capture Webcamnya jelek, burem dan banyak noisenya? Jawabannya tak lain dan tak bukan karena Webcam yang saya gunakan adalah Webcam murahan yang berharga IDR40ribuan dan beli di Borma Setiabudhi hehe. Saya jauh lebih ganteng kok dibanding yang terlihat di hasil capture Webcam di atas. :P

Namun Webcam ini yang sangat berjasa untuk saya dalam mempelajari OpenCV. Inilah si Webcam murah tersayang:

Ada LEDnya yang bisa nyala juga loh..

Aplikasi Capture Webcam Menggunakan C++ dan OpenCV

Akhirnya satu persatu deadline di minggu ini berhasil dilewati dengan sukses. Saatnya blogging dengan hati yang tenang dan berbunga-bunga!

Kali ini saya ingin berbagi tentang membuat aplikasi yang dapat mengcapture gambar dari webcam menggunakan C++ dan library OpenCV.

Saya menggunakan Microsoft Visual Studio 2010 Ultimate, OpenCV versi 2.1, dan Windows 7 Ultimate x64. Saya anggap Anda sekalian sudah bisa menginstall OpenCV di komputer Anda, lalu membuat proyek baru C++ Win32 Console Application di Visual Studio, lalu menghubungkan VS dengan OpenCVnya. Jika belum, silahkan kunjungi postingan blog saya yang membahasnya disini.

Setelah OpenCV diinstall dan proyek kita pada VS telah dihubungkan dengan OpenCVnya silahkan berikan skrip berikut pada aplikasi Anda.

#include “stdafx.h”

#include “highgui.h”

int _tmain(int argc, _TCHAR* argv[])

{

    cvNamedWindow(“Kamera1″, CV_WINDOW_AUTOSIZE);

    CvCapture* kameramurah;

    if(argc==1){

        kameramurah=cvCreateCameraCapture(1);

    } else {

        kameramurah=cvCreateFileCapture(“D:/softboy.avi”);

    }

    assert(kameramurah!=NULL);

    IplImage* framemurah;

    while(1){

        framemurah=cvQueryFrame(kameramurah);

        if(!framemurah) break;

        cvShowImage(“Kamera1″, framemurah);

        char c = cvWaitKey(33);

        if(c==27) break;

    }

    cvReleaseCapture(&kameramurah);

    cvDestroyWindow(“Kamera1″);

}

Pada OpenCV ada fungsi cvCreateCameraCapture() untuk mengambil gambar dari webcam dengan id tertentu. Pada contoh tertera bahwa saya mengambil gambar dari webcam dari id=1. Konsep menampilkan gambarnya adalah kita memasukkan setiap frame pada kameramurah ke dalam variabel IplImage framemurah. Dan framemurah akan ditampilkan secara berulang-ulang sesuai dengan setiap frame dari kamera tersebut. Setelah menampilkan satu frame, maka aplikasi kita menggunakan fungsi cvWaitKey() akan menunggu selama 33 milidetik untuk adanya even adanya suatu tombol yang ditekan sebelum melanjutkan. Dan jika ditekan tombol Escape (kode ASCII 27), maka aplikasi kita akan diberhentikan.

Hasil aplikasinya adalah seperti berikut:

Berikutnya Anda dapat berkreasi dan memodifikasi misalnya untuk menambahkan beberapa kamera lagi untuk dicapture dengan menambahkan fungsi cvCreateCameraCapture() lagi dengan id webcam yang berbeda-beda. Enjoy! J

Aplikasi Sederhana Penampil Gambar Menggunakan C++ dan OpenCV

Seharusnya saya tidak berada di sini, seharusnya saya mengerjakan yang lain. Itulah yang ada pada benak saya ketika menulis blog post ini. Karena sebenarnya saya sedang dikejar deadline atau dateline (yang mana sih yang bener? Deadline atau Dateline? Tapi saya lebih memilih mengejanya Deadline karena ketika Deadline datang memang kadang-kadang rasanya mau mati saja sehingga pantas disebut garis kematian). Pelatihan Software GMM (Gema Mahasiswa Matematika) adalah minggu ini! Dan saya harus membuat modul dengan deadline hari ini! Dan bahkan saya belum menyentuh pembuatan modul ini sedikit pun! But whatever lah, nanti sore saya bakal mengerjakan modulnya digeder sampai malam hari, sekarang OpenCV masih terlalu menarik untuk ditinggalkan sementara. Ya, OpenCV telah membuatku tertarik untuk mendalaminya beberapa hari ini sehingga melupakan unsur-unsur kehidupan lainnya. Dan sekarang saya ingin coba berbagi bagaimana membuat aplikasi sederhana penampil gambar menggunakan C++ dan OpenCV.

Saya menggunakan Microsoft Visual Studio 2010 Ultimate, OpenCV versi 2.1, dan Windows 7 Ultimate x64. Saya anggap Anda sekalian sudah bisa menginstall OpenCV di komputer Anda, lalu membuat proyek baru C++ Win32 Console Application di Visual Studio, lalu menghubungkan VS dengan OpenCVnya. Jika belum, silahkan kunjungi postingan blog saya yang membahasnya disini.

Setelah OpenCV diinstall dan proyek kita pada VS telah dihubungkan dengan OpenCVnya silahkan berikan skrip berikut pada aplikasi Anda.

#include “StdAfx.h”

#include “highgui.h”

int main( int argc, char** argv )

{    

    IplImage* gbr = cvLoadImage( “D:/KEMAKOM.jpg”,1 );

    cvNamedWindow(“Logo Kemakom”, CV_WINDOW_AUTOSIZE );

    cvShowImage(“Logo Kemakom”, gbr );

    cvWaitKey(0);

    cvReleaseImage( &gbr );

    cvDestroyWindow(“Logo Kemakom”);

}

Silahkan dijalankan (F5).Dasarnya, aplikasi ini mengambil gambar dari direktori “D:/KEMAKOM.jpg”, lalu membuat suatu jendela bernama “Logo Kemakom” dengan ukuran yang disesuaikan, lalu menampilkan gambar yang tadi telah diambil ke suatu jendela bernama “Logo Kemakom”.

Mari kita lihat baris programnya satupersatu:

IplImage* gbr = cvLoadImage( “D:/KEMAKOM.jpg”,1 );

Baris ini berguna untuk membuka gambar dan menyimpannya pada variabel gbr. Fungsi cvLoadImage adalah fungsi yang dapat menentukan format berkas berdasarkan dari nama berkasnya dan juga secara otomatis mengalokasikan memori yang diperlukan untuk struktur data gambar. Sebagai catatan bahwa cvLoadImage() dapat membaca berbagai macam format gambar yaitu BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS, dan TIFF.

cvNamedWindow(“Logo Kemakom”, CV_WINDOW_AUTOSIZE );

cvNamedWindow() membuka jendela pada layar sehingga dapat mengandung dan menampilkan gambar. Fungsi ini didukung oleh library HighGUI dari OpenCV, dan langsung memberi nama pada jendela tersebut, pada contoh ini “Logo Kemakom”. Untuk selanjutnya untuk memanggil jendela ini menggunakan nama ini. CV_WINDOW_AUTOSIZE artinya ukuran dari jendela akan disesuaikan dengan konten yang ada di jendela tersebut.

cvShowImage(“Logo Kemakom”, gbr );

Baris ini untuk menampilkan suatu gambar yang telah dideklarasikan oleh pointer IplImage*.

cvShowImage() memerlukan parameter nama dari suatu jendela yang sudah ada (atau jika belum ada maka akan dibuatkan baru), lalu nama variabel gambar yang akan ditampilkannya.

cvWaitKey(0);

Baris ini untuk menunggu suatu Keystroke selama milidetik sejumlah parameter yang diisikan. Jika tidak ada Keystroke maka aplikasi akan dilanjutkan.

cvReleaseImage( &gbr );

cvDestroyWindow(“Logo Kemakom”);

Kedua baris ini adalah untuk membebaskan memori kembali. Walau sebenarnya ketika kita menutup aplikasi kita sistem operasi akan secara otomatis melakukannya, tapi tak ada salahnya kita tulis kedua baris ini.

Oh sh*t, Tugas Kelompok PLSBT pun belum dikerjakan! Padahal Jum’at minggu ini presentasi! Damn.

OpenCV dan Microsoft Visual Studio 2010

Kali ini kita bicara tentang sesuatu yang bernama OpenCV. OpenCV (Open Source Computer Vision) adalah library yang dulunya dikembangkan oleh Intel dan sekarang didukung oleh Willow Garage yang bermain pada bidang real-time image processing. OpenCV adalah gratis untuk digunakan dibawah lisensi Open Source BSD.

Library OpenCV dapat bekerja secara cross-platform. OpenCV ditulis dalam bahasa C, sehingga mudah dikembangkan ke berbagai platform. Maka dari itu OpenCV banyak dikembangkan supaya mendukung bahasa lain seperti C#, Phyton, Ruby, dan Java (menggunakan JavaCV).

Semenjak hadirnya OpenCV versi 2.0 (sekarang sudah sampai versi 2.1), OpenCV selain menggunakan bahasa C, juga menggunakan bahasa C++. Hal ini bermanfaat dalam mengurangi banyak kesalahan pemrograman ketika menggunakan OpenCV di C. Namun C++ sulit dikembangkan untuk mendukung bahasa lain sehingga banyak bahasa yang jadi tidak terlalu cocok dengan OpenCV 2.0.

Maka dari itu saya menggunakan bahasa C++ dalam menggunakan library OpenCV. Saya juga menggunakan Microsoft Visual Studio dalam mengembangkan aplikasi berbahasa C++. Nah pertanyaannya sekarang, bagaimana caranya menghubungkan library OpenCV yang telah kita installkan kepada Microsoft Visual Studio?

Disini saya contohkan menggunakan OpenCV versi 2.1 (bisa diunduh gratis disini) dan juga Microsoft Visual Studio 2010 Ultimate (versi expressnya yang gratis bisa diunduh disini). Oh ya saya juga menggunakan Windows 7 Ultimate x64 sebagai environment pengembangannya.

Setelah Anda mengunduh library OpenCV, silahkan lakukan proses penginstallan. Pilih saja yang default-defaultnya (klik next-next saja hehe). Setelah penginstallan selesai kita bisa melihat direktori penginstallan OpenCV kita:

Setelah itu silahkan buka Visual Studionya.

Buatlah sebuah C++ project misalnya untuk contoh C++ Win32 Console Application.

Setelah itu buka properties dari project kita, caranya klik Project lalu pilih menu yang paling bawah (<namafileproject> Properties).

Pada bagian Configuration Properties lalu masuk ke bagian C/C++, lalu pilih sub-bagian General. Pada properti Additional Include Directoriesnya klik dropdown menunya lalu pilih Edit.. lalu masukkan direktori C:\OpenCV2.1\include\opencv (anggapan saya menginstall OpenCVnya di C:\).

Lalu masuk ke bagian Linker, pada sub-bagian General pada properti Additional Library Directoriesnya masukkan direktori C:\OpenCV2.1\lib dengan cara yang sama seperti sebelumnya.

Masih di bagian Linker, kita masuk ke sub-bagian Input. Edit properti Additional Dependenciesnya, tambahkan semua file *.lib yang ada di folder lib di folder penginstallan OpenCV kita.

Lalu terapkan semua perubahan-perubahan yang telah kita lakukan di atas. Dan sekarang VS2010 kita sudah terhubung dengan OpenCV. Dan tinggal menambahkan skrip include pada aplikasi kita untuk benar-benar menambahkan library OpenCV ke aplikasi kita. Misalnya:

#include “highgui.h” 
#include “cv.h”
 
Oh ya, jika kita menambahkan proyek baru atau solution baru, kita harus mengeset ulang pengaturan-pengaturan di atas ke proyek baru kita tersebut supaya terhubung dengan OpenCV.