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ūüėõ. 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.ūüėõ

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

Ada LEDnya yang bisa nyala juga loh..

We need your comment here. Please leave it below.

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: