Pages

Subscribe:

Labels

Minggu, 17 Februari 2013

Mengkonversi Image dari format RGB ke Grayscale


Setelah berhasil menampilkan gambar dari webcam, langkah selanjutnya ialah melakukan konversi format gambar dari RGB menjadi Grayscale. Grayscale adalah suatu format citra atau gambar dimana tiap-tiap piksel gambar hanya terdiri dari 1 channel warna. Perbedaan mendasar dengan format RGB ialah pada tiap-tiap piksel gambar terdiri dari 3 channel warna, yaitu channel R(red), channel G(green), dan channel B(blue).

Salah satu Algoritma buat mengkonversi image dari format RGB ke Grayscale ialah dengan me-rerata nilai ketiga buah channel RGB.

Grayscale = (R+G+B) / 3.

Pada bahasan kali ini akan digunakan fungsi dari Library OpenCV untuk mengkonversi gambar dari RGB ke Grayscale.

cvCvtColor(image sumber,image tujuan,CV_RGB2GRAY);

image sumber adalah image RGB sedangkan image tujuan adalah image grayscale yang akan dibuat. Namun terlebih dahulu harus dibuat deklarasi pointer untuk image grayscale, yaitu dengan cara seperti berikut.

IplImage* gray = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1); 

maksud dari IPL_DEPTH_8U adalah tiap-tiap piksel bernilai 8 bit, sementara angka 1 setelahnya itu bermakna tiap-tiap piksel hanya terdiri dari sebuah channel. Berikut adalah listing program secara  lengkap

#include "stdafx.h"
#include <highgui.h>
#include <ml.h>
#include <cv.h>
#include <cxcore.h>

   
    int _tmain(int argc, _TCHAR* argv[])
    {
        int c;  

 //deklarasi pointer dengan nama img
        IplImage *img; 

  //capture video dari kamera dg ID "1
        CvCapture* capture = cvCaptureFromCAM(1);
 

 // membuat window dengan nama gambar gue dan gray image
        cvNamedWindow("gambargue", CV_WINDOW_AUTOSIZE);
        cvNamedWindow("gray image", CV_WINDOW_AUTOSIZE);
        while(1)
        {
            //memasukan gambar hasil capture ke pointer dengan nama img
            img=cvQueryFrame(capture);

             //deklarasi frame dengan nama grey, 8 bit, 1 channel
            IplImage* gray = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
            
            //melakukan konversi image dari format RGB menjadi Grayscale
            cvCvtColor(img,gray,CV_RGB2GRAY);
       
            //menampilkan gambar dari pointer img dan gray ke window gambargue dan gray image
            cvShowImage("gambargue", img);
            cvShowImage("gray image",gray);
           
            c=cvWaitKey(10);
            if(c == 27)
           
            break;
           
        }
       
     return 0;
    }






0 komentar:

Posting Komentar