Anda di halaman 1dari 21

2013

Membuat Aplikasi Pengolahan Citra Histogram dengan menggunakan OpenCV

INDRA LUMBANTOBING (59410282) STEPHANIE SAGITA (56410687)

4IA03

KATA PENGANTAR
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Kuasa atas Rahmat dan Karunia-Nya sehingga penulis dapat menyelesaikan tugas ebook ini dengan tepat waktu, ebook ini penulis buat untuk melengkapi salah satu tugas kuliah yaitu matakuliah Pengantar Pengolahan Citra, ebook ini penulis beri judul Membuat Aplikasi Pengolahan Citra Histogram dengan menggunakan OpenCV . Dalam makalah ini berisi tentang Instalasi Microsoft Visual Studio 2008, Instalasi Open CV 2.4.6, Cara mengatur Open CV, dan Cara membuat aplikasi Histogram. Penulis juga mengucapkan terimakasih kepada semua pihak yang telah membantu demi terselesainya ebook ini, penulis berterimakasih baik kepada orang tua, Dosen Universitas Gunadarma khusus nya bapak Eri Prasetyo Wibowo selaku dosen Pengantar Pengolahan Citra, teman dan kepada semua pihak yang telah membantu terselesainya makalah ini dan telah memberikan dukungan baik dalam dukungan moral maupun materi. Penulis juga meminta maaf jika ada kekurangan dalam ebook ini, oleh karena itu penulis mengharapkan adanya kritik dan saran yang membangun dari para pembaca sehingga penulis dapat membuat ebook yang lebih baik untuk kedepannya. Sekian pengantar dari penulis kurang lebihnya penulis meminta maaf.

DEPOK, 16 November 2013

Penulis

DAFTAR ISI

KATAPENGANTAR .................................................................................................... 1 BAB 1 PENDAHULUAN....................3 BAB 2 - INSTALASI DAN KONFIGURASI .. 4 BAB 3 - PROGRAM 1: HISTOGRAM CITRA .......... 12 LISTING PROGRAM19 DAFTAR PUSTAKA.............21

BAB 1 PENDAHULUAN
Seiring dengan pesatnya kemajuan teknologi informasi, data atau informasi semakin banyak bila dilihat dari bentuk dan jenisnya. Mulai dari teks, gambar, audio, dan juga video. Gambar, atau yang bisa juga disebut sebagai citra, berperan sangat penting sebagai bentuk informasi visual. Ada yang mengatakan bahwa citra (gambar) lebih berarti dari ribuan kata-kata. Saya membenarkan hal tersebut, karena memang benar dengan melihat suatu gambar kita langsung bisa mendefinisikan sendiri mengenai gambar tersebut. Dan juga bisa memberikan banyak arti lainnya. Terkadang citra yang ada itu tidak sepenuhnya baik maksudnya tidak sepenuhnya sempurna, perlu dilakukan suatu proses untuk membuatnya menjadi lebih baik. Proses inilah yang dinamakan pengolahan citra. Teknik pengolahan citra-pun sudah semakin banyak digunakan. Contohnya saja dalam dunia perdagangan. Kita semua mungkin sudah tahu dengan yang namanya barcode. Penggunaan barcode di supermarket dibuat untuk mempermudah pembacaan harga. Bila tidak menggunakan barcode mungkin petugas bisa dibuat sulit, karena harus mengecek harga barang satu-satu. Selain itu masih ada lagi, sidik jari untuk kehadiran juga termasuk aplikasi pengolahan citra. Pengolahan citra merupakan suatu proses perbaikan kualitas citra agar mudah di interpretasi oleh manusia atau komputer. Proses-proses yang termasuk ke dalam pengolahan citra, yaitu : 1. Perbaikan kualitas citra (Image Enhancement) 2. Pemugaran citra (Image Restoration) 3. Pemampatan citra (Image Compression) 4. Segmentasi citra (Image Segmentation) 5. Pengorakan citra (Image Analysis) 6. Rekonstruksi citra (Image Recontruction) Di dalam ebook ini akan dijelaskan bagaimana membuat suatu aplikasi yang berkaitan dengan pengolahan citra. Aplikasinya yaitu Histonogram. Di halaman terakhir, penulis juga melampirkan source code yang digunakan dalam pembuatan aplikasi tersebut.

BAB 2 INSTALASI DAN KONFIGURASI


Dalam pembuatan aplikasi pengolahan citra, penulis menggunakan perangkat lunak berikut : 1. Microsoft Visual C++ 2008 Microsoft Visual C++ adalah software yang digunakan sebagai compiler. Compiler adalah perangkat lunak yang digunakan untuk mengubah source code dari suatu bahasa pemrograman (dalam kasus ini bahasa pemrogramannya yaitu C++) menjadi native code / bahasa mesin (file executable) agar dapat dieksekusi oleh komputer. Microsoft Visual C++ ini dibuat oleh perusahaan Microsoft. 2. OpenCV 2.4.6 OpenCV (Open Computer Vision) merupakan semacam library yang digunakan dalam membuat aplikasi yang berkaitan dengan computer vision. OpenCV juga menyediakan banyak fungsionalitas, yang tentunya dapat mempersingkat waktu dalam pembuatan aplikasi yang lumayan rumit. Spesifikasi minimum sistem yang harus Anda miliki yaitu : 1,6 GHz or faster processor 1024 MB RAM 3 GB or available hard-disk space 5400 RPM hard-disk Drive Direct X 9 capable video car running at 1024 x 768 or higher display resolution DVD ROM Drive

2.1 INSTALASI
2.1.1 INSTALASI MICROSOFT VISUAL STUDIO 2008 Adapun langkah-langkah instalasi MS Visual Studio 2008 sebagai berikut: 1. Masukkan DVD software MS Visual Studio 2008 kedalam DVD Room PC/laptop Anda, kemudian akan muncul auto run CD. Jika tidak muncul maka klik file Setup.exe atau jika anda mendownload software MS Visual Studio langsung saja klik setup sehingga muncul seperti gmbar aberikut ini :

2. Kemudian pilih menu yang paling atas yaitu "Install Visual Studio 2008", lalu klik sehingga muncul seperti gambar berikut ini :

3. Tunggulah hingga progressbar selesai loading sehingga muncul tombol "Next" seperti gambar berikut ini :

4. Kemudian klik tombol "Next" di atas sehingga muncul seperti gambar berikut ini :

5. Karena penulis menggunakan lisensi yang disediakan oleh kantor teman saya, maka secara otomatis product key number akan terisi. Jangan lupa pilih "I have read and accept the license terms" lalu klik tombol "Next" lagi sehingga muncul seperti gambar berikut ini :

6. Pilih saja fitur "Default" sesuai rekomendasi sistem. Jika, tampilan Anda sudah sesuai dengan gambar di atas. Silakan klik tombol "Install" sehingga muncul seperti gambar berikut ini :

7. Inilah proses instalasi komponen, tunggulah beberapa menit hingga proses benarbenar selaesai. Lalu muncul seperti gambar berikut ini :

8. Instalasi telah selesai dilakukan maka klik tombol "Finish".


7

2.1.2 INSTALASI OPENCV 2.1 1. Download terlebih dahulu software OpenCv 2.4.6 2. Setelah selesai download kita akan akan muncul jendela instalasi klik saja next maka kita akan masuk ke proses ekstrak, seperti gambar dibawah ini :

3.

Tunggu sampai proses ekstraksi selesai maka OpenCV sudah terinstall dan dapat digunakan.

2.2 KONFIGURASI / PENGATURAN PADA OPENCV


1. Untuk melakukan konfigurasi pada OpenCv kita bisa melakukannya dengan masuk ke File -> New -> Project 2. Setelah itu pilih Win32 Console Application 3. Beri nama Histogram (ini dapat diganti sesuka kita)

4. Setelah itu kita setting Project Directories Klik kanan project>>Properties >>Linker >>Input >> release opencv_features2d246.lib opencv_highgui246.lib opencv_core246.lib opencv_imgproc246.lib opencv_ml246.lib opencv_objdetect246.lib opencv_video246.lib opencv_contrib246.lib opencv_calib3d246.lib

debug opencv_features2d246.lib opencv_highgui246d.lib opencv_core246d.lib opencv_imgproc246d.lib opencv_ml246d.lib opencv_objdetect246d.lib opencv_video246d.lib opencv_contrib246d.lib opencv_calib3d246d.lib

Klik Tools -> Options -> Projects and Solutions -> VC++ Directories -> Library C:\opencv\build\x86\vc9\lib

10

Include C:\opencv\build\include C:\opencv\include\opencv

11

BAB 3 HISTOGRAM CITRA

3.1 HISTOGRAM CITRA Untuk membuat histogram, penulis terlebih dahulu merubah gambar asli menjadi gambar grayscale (abu-abu), baru setelah itu membuat histogramnya. 3.1.1 Citra asli (RGB). Citra asli merupakan citra yang memiliki warna alami dan belum mengalami perubahan. Dalam citra ini terdiri dari kombinasi warna merah (Red), hijau (Green), dan biru (Blue). Dengan demikian citra ini mempunyai 3 kanal, yang masing-masing kanal memiliki 8 bit per piksel, berarti total bit keseluruhan yang dimiliki citra ini yaitu 24 bit per piksel. 3.1.2 Citra grayscale. Citra grayscale terdiri atas warna abu-abu, bervariasi pada warna hitam pada bagian intensitas terendah dan warna putih pada intensitas tertinggi. Pada citra grayscale, warna bervariasi antara hitam dan putih, tetapi variasi warna diantaranya sangatlah banyak. Citra grayscale disimpan dalam format 8 bit untuk setiap sample pixel, yang memungkinkan sebanyak 256 intensitas. Format ini sangatlah membantu dalam pemrograman karena manipulasi bit yang tidak terlalu banyak. 3.1.3 Histogram. Dengan histogram kita bisa menentukan apakah citra yang akan dinilai tersebut baik atau malah sebaliknya. Kita juga bisa tahu bahwa citra tersebut cenderung gelap (under exposure) atau malah cenderung terang (over exposure). Grafik histogram yang dominan di bagian kiri menandakan gambar cenderung gelap. Puncak grafik di bagian kiri yang juga tampak sangat tinggi menandakan adanya clipping atau under exsposure. Grafik histogram yang dominan di bagian kanan menandakan gambar terlalu terang. Puncak grafik di bagian kanan yang juga tampak sangat tinggi menandakan over exposure.

12

3.2 ALGORITMA Algoritma membuat histogram citra 1. Konversi citra RGB menjadi citra grayscale - ambil nilai pixel merah, hijau, biru dari gambar berwarna - gunakan fungsi matematika dan masukkan nilainya dalam satu warna grayscale citra grayscale = 0,33 RED + 0,56 GREEN + 0,11 BLUE - ganti warna merah, hijau, biru dengan warna baru grayscale 2. Membuat matriks dari citra 3. Menentukan intensitas matriks 4. Membuat histogram 3.3 PEMROGRAMAN Penjelasan kode program #include <stdio.h> #include <cv.h> #include <iostream> #include <conio.h> #include <cxcore.h> #include <highgui.h> #include <stdlib.h> #include "cv.h" using namespace std; using namespace cv; Perintah include diatas merupakan prepocessor yang digunakan untuk melampirkan file header. IplImage * img; IplImage * gray; IplImage * histogram; int height, width, step, channels,k,i_max; int * hist; uchar * data; uchar * * gray_arr; uchar * * histo_arr; Digunakan untuk mendeklarasikan variabel-variabel yang akan digunakan di fungsi main. img = cvLoadImage("Kucing.jpg"); Digunakan untuk memuat gambar dari sumber. Mat src, dst,src1; const char* nama_kelompok = "Nama Kelompok"; const char* source_window = "Source image"; const char* equalized_window = "Histogram Image";

13

Mendeklarasikan variabel src, ext, src1 dan juga menetapkan nilai untuk masing-masing pointer yaitu nama_kelompok, source_window, equalized_window /// Load image src1 = imread( "nama.jpg",1 ); src = imread( "kucing.jpg",1 ); Perintah diatas digunakan untuk membaca gambar, gambar yang akan ditampilkan adalah gambar nama yaitu berisi nama kelompok, dan gambar kucing. /// Convert to grayscale cvtColor( src, src, COLOR_BGR2GRAY ); /// Apply Histogram Equalization equalizeHist( src, dst ); Perintah diatas digunakan untuk merubah warna gambar yang akan ditampilkan for(int i=0; i<height; i++) { histo_arr[i]=(uchar *)malloc(sizeof(uchar)*(width + 1)); gray_arr[i] = (uchar * )malloc(sizeof(uchar)*(width + 1)); for(int j=0; j<width; j++) { // we know that ISO grayscale image is 11%BLUE + 56% GREEN + 33% RED..... so converitng 1d array into 2d array gray_arr[i][j] = (0.11*data[i*step + j*channels] + 0.56*data[i*step + j*channels + 1] + 0.33*data[i*step + j*channels + 2]); histo_arr[i][j] = 0; } } Digunakan untuk mengkonversi gambar ke grayscale. for(int i=0;i<height;i++) { fprintf(pFile,"baris %d --> ",(i+1)); for (int j=0;j<width;j++) { //gray_arr[i][j]+=80; k=gray_arr[i][j]; fprintf (pFile, "| %d | ", gray_arr[i][j]); //printf("| %d | ", gray_arr[i][j]); // tambahan hist[k]++; } fprintf(pFile,"\n"); //printf("\n"); // tambahan } Digunakan untuk membuat histogram array. /// Display results namedWindow( nama_kelompok, WINDOW_AUTOSIZE ); namedWindow( source_window, WINDOW_AUTOSIZE ); namedWindow( equalized_window, WINDOW_AUTOSIZE ); imshow( nama_kelompok, src1 ); imshow( source_window, src ); imshow( equalized_window, dst );
14

cvNamedWindow("Original Image", CV_WINDOW_NORMAL); cvMoveWindow("Original Image", 100, 100); cvShowImage("Original Image", img); cvNamedWindow("GrayScaled Image", CV_WINDOW_NORMAL); cvMoveWindow("GrayScaled Image", 500, 100); cvShowImage("GrayScaled Image", gray); cvNamedWindow("Histogram Image",CV_WINDOW_NORMAL); cvMoveWindow("Histogram Image",100,100); cvShowImage("Histogram Image",histogram); Perintah diatas digunakan untuk menginisialisasi window yang digunakan dan menampilkan gambar histogram. 3.4 DEMO PROGRAM Setelah program dijalankan maka akan mengeluarkan output berupa gambar asli, gambar abu-abu, gambar histogram, dan intentsitas matriks. Properti gambar yang digunakan yaitu : Name : lena.jpg dan nama.jpg Item type : JPEG image Dimensions : 512 pixel x 512 pixel Size : 89,6 KB dan 99,2 KB Bit depth : 24 Camera maker : EASTMAN KODAK COMPANY Camera model : KODAK V550 ZOOM DIGITAL CAMERA

Figure 1Original Image

15

Figure 2Grayscale Image

Figure 3 Histogram Image

Figure 4 Histogram Image

16

17

Listing Program
#include "stdafx.h" #include <stdio.h> #include <cv.h> #include <iostream> #include <conio.h> #include <cxcore.h> #include <highgui.h> #include <stdlib.h> #include "cv.h" using namespace std; using namespace cv; void main(){ IplImage * img; IplImage * gray; IplImage * histogram; int height, width, step, channels,k,i_max; int * hist; uchar * data; uchar * * gray_arr; uchar * * histo_arr; img = cvLoadImage("Kucing.jpg"); height = img->height; width = img->width; step = img->widthStep; channels = img->nChannels; data = (uchar *)img->imageData; hist = (int *)calloc(256,sizeof(int)); histo_arr =(uchar * * )malloc(sizeof(uchar * )*(height + 1)); gray_arr = (uchar * * )malloc(sizeof(uchar * )*(height + 1)); for(int i=0; i<height; i++) { histo_arr[i]=(uchar *)malloc(sizeof(uchar)*(width + 1)); gray_arr[i] = (uchar * )malloc(sizeof(uchar)*(width + 1)); for(int j=0; j<width; j++) { gray_arr[i][j] = (0.11*data[i*step + j*channels] + 0.56*data[i*step + j*channels + 1] + 0.33*data[i*step + j*channels + 2]); histo_arr[i][j] = 0; } } printf("\nUntuk dapat mengetahui intensitas matriks,\n\ Anda dapat melihat program notepad yang terbuka atau \n\ bisa juga dengan melihat file matriks-histogram.txt"); printf("\n\nUntuk melihat bentuk histogramnya,\n\ Anda harus menutup (close) program notepad yang terbuka,\n\ Baru setelah itu window histogram akan muncul"); FILE * pFile; pFile = fopen("matriks-histogram.txt","w"); for(int i=0;i<height;i++) { fprintf(pFile,"baris %d --> ",(i+1)); for (int j=0;j<width;j++) { k=gray_arr[i][j]; fprintf (pFile, "| %d | ", gray_arr[i][j]); hist[k]++; } fprintf(pFile,"\n"); } fclose (pFile); printf("\n"); // tambahan system("notepad.exe matriks-histogram.txt" );

18

printf("\n+---Info seputar gambar---+\n"); i_max=find_max(hist,256); printf("MAX=%d\ni=%d",hist[i_max],i_max); for(int i=(height-1);i>0;i--) { for (int j=0;j<256;j++) { if(i<=((hist[j]*height)/hist[i_max])) { histo_arr[height-i][j*(width/256)]=255; }}} printf("\nUkuran gambar = %d x %d",width,height); printf("\nPanjang Gambar (height) = %d pixel ",height); printf("\nLebar Gambar (width) = %d pixel \n",width); gray = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 1); histogram = cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1); for(int i=0; i<height; i++) { for(int j=0; j<width; j++) { gray->imageData[i*gray->widthStep + j*gray->nChannels] = gray_arr[i][j]; }} for(int i=0; i<height; i++) { for(int j=0; j<width; j++) { histogram->imageData[i*histogram->widthStep + j*histogram->nChannels] = histo_arr[i][j]; }} cvNamedWindow("Original Image", CV_WINDOW_NORMAL); cvMoveWindow("Original Image", 100, 100); cvShowImage("Original Image", img); cvNamedWindow("GrayScaled Image", CV_WINDOW_NORMAL); cvMoveWindow("GrayScaled Image", 500, 100); cvShowImage("GrayScaled Image", gray); cvNamedWindow("Histogram Image",CV_WINDOW_NORMAL); cvMoveWindow("Histogram Image",100,100); cvShowImage("Histogram Image",histogram); Mat src, dst,src1; const char* equalized_window = "Gambar Histogram"; const char* nama_kelompok = "Nama Kelompok"; src1 = imread( "nama.jpg",1 ); src = imread( "Kucing.jpg",1 ); cvtColor( src, src, COLOR_BGR2GRAY ); equalizeHist( src, dst ); namedWindow( nama_kelompok, CV_WINDOW_NORMAL ); namedWindow( equalized_window, CV_WINDOW_NORMAL ); imshow( nama_kelompok, src1 ); imshow( equalized_window, dst ); cvWaitKey(0); cvReleaseImage(&img); cvReleaseImage(&gray); cvReleaseImage(&histogram); free(gray_arr); free(histo_arr); }

19

DAFTAR PUSTAKA

Buku dan Ebook Fatta, Hanif Al. 2007. Konversi Format Citra RGB Ke Format Grayscale Menggunakan Visual Basic. Nursyamsu, Ardi. 2011. Masuki Dunia Hacker Dengan C++. Jakarta: Jasakom. Wibowo, Esther dan Erick Kurniawan. 2008. Histogram. Hidayatno, Achmad dkk. 2010. Analisis Deteksi Tepi Pada Citra Berdasarkan Perbaikan Kualitas Citra Website http://opencv.willowgarage.com/documentation/cpp/ http://docs.opencv.org/ http://www.codeblues.in/programming.php https://sammypatikawa.wordpress.com/2012/05/11/greyscale/ http://www.mathworks.com/support/solutions/en/data/1-ECUGQX/ http://blog.aguskurniawan.net/post/opencv-210-with-visual-studio-2010.aspx http://myopencv.wordpress.com/2009/06/14/image-enhancement-using-hsv-color-space/ http://www.tenouk.com/installusevisualstudio2008.html http://adhit8.blogspot.com/2011/06/instalasi-microsoft-visual-studio-team.html http://priawadi.blogspot.com/2012/09/install-opencv-dengan-visual-c-visual.html

20

Anda mungkin juga menyukai