tugas kelompok open cv
Post on 24-Oct-2015
170 Views
Preview:
TRANSCRIPT
MEMBUAT APLIKASI PENGOLAHAN CITRA
MENGGUNAKAN OPEN CV
HISTOGRAM
Tim Penyusun:
Annisah (50410879)
Vibri Ariyaningrum (58410361)
UNIVERSITAS GUNADARMA
NOVEMBER 2013
Histogram Citra Page 2
BAB 1
PENDAHULUAN
Pada saat ini kemajuan teknologi informasi sudah berkembang pesat mulai dari teks,
audio, gambar, dan video. Pada penulisan kali ini kami akan membahas tentang membuat sutu
aplikasi pengolahan citra. Citra atau biasa dikenal sebagai gambar adalah bentuk informasi
visual. Beberapa orang berpendapat bahwa gambar mewakilkan ribuan kata. Kami setuju
denagn pendapat mereka. Pada kenyataannya gambar atau citra tidak seluruhnya terlihat baik.
Terdapat proses untu membuat suatu gambar dapat terlihat lebih baik. Proses tersebut
dinamakan pengolahan citra.
Teknik pengolahan citra sudah digunakan pada dunia perdagangan. Salah satu
contohnya adalah penggunaan barcode pada suatu barang di supermarket. Dimana barcode
tersebut digunakan untuk mempermudah pembacaan harga suatu barang. Bila tidak
menggunakan barcode petugas akan sulit mengetahui harga barang tersebut. Maka digunakan
barcode yang bertujuan agar petugas dapat dengan mudah mengecek harga barang tersebut.
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)
Kami akan menjelaskan tahapan pembuatan aplikasi pengolahan citra yang berkaitan
dengan Histogram Citra menggunakan OpenCV. Dengan histogram kita bisa menentukan
apakah citra yang akan dinilai tersebut baik atau malah sebaliknya. Kita juga bisa tahu bahwa
Histogram Citra Page 3
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.
Komposisi warna pada citra dapat direpresentasikan dalam bentuk histogram. Histogram warna
merepresentasikan distribusi jumlah piksel untuk tiap intensitas warna dalam citra. Untuk
mendefinisikan histogram, warna di kuantisasi menjadi beberapa level diskrit, kemudian untuk
tiap level tersebut dihitung jumlah piksel yang nilainya sesuai.
Histogram Citra Page 4
BAB 2
Installansi Dan Konfigurasi
Pada pembuatan aplikasi pengolahan citra menggunakan OpenCV dibutuhkan beberapa
software yaitu OpenCV 2.4.6 dan Microsoft Visual Studio 2008.
a. Microsoft Visual Studio 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.
b. Open CV 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.
2.1 Installasi software Microsoft Visual Studio 2008
Langkah- langkah untuk menginstall Microsoft Visual Studio 2008 adalah:
1. Langkah pertama adalah download software Microsoft Visual Studio 2008
2. Setelah berhasil mendownload. Kemudian ekstrak file.rar tersebut. Klik 2x pada setup
(Aplication)
Histogram Citra Page 5
3. Lalu pilih Install Visual Studio 2008 >> View ReadMe
4. Tampilan selanjutnya akan seperti ini. Kemudian pilih Next
Histogram Citra Page 6
Kemudian pilih i have read and accept the license terms >> Next
5. Setelah itu tampilan selanjutnya adalah
Pilih default >> Install. Maka tahapan selanjutnya adalah installing component, maka
tampilan selanjutnya akan seperti ini:
Histogram Citra Page 7
6. Setelah proses installing selesai maka kita telah berhasil melakukan menginstall
Microsoft Visual Studio 2008.
Histogram Citra Page 8
2.2 Installasi software OpencV 2.4.6
Langkah- langkah untuk menginstall OpenCV 2.4.6 adalah:
A. Langkah pertama adalah download software OpenCV 2.4.6
B. Klik 2x pada sofware OpenCV >> Run
Histogram Citra Page 9
C. Tahapan selanjutnya kita atur tempat penyimpanan folder OpenCV. Kita simpan folder
OpenCV pada folder C. Langkah selanjutnya kita pilih Extract.
D. Setelah kita pilih extract maka tampilannya akan seperti ini. Tampilan ini adalah proses
penginstallan openCV. Setelah proses selesai artinya kita telah berhasil menginstall
OpenCV.
Histogram Citra Page 10
BAB 3
Tahapan Pembuatan Aplikasi Histogram Citra
Pengertian histogram dalam pengolahan citra adalah .representasi grafis untuk distribusi warna
dari citra digital atau menggambarkan penyebaran nilai-nilai intensitas pixel dari suatu citra
atau bagian tertentu di dalam citra. Dari sebuah histogram dapat diketahui frekuensi
kemunculan relatif dari intensitas pada citra, kecerahan, dan kontas dari sebuah gambar.
Histogram citra adalah suatu grafik yang menyatakan hubungan antara BV (brightness value)
dengan frekuensi. Dari histogram pada suatu citra yang ada kita dapat menentukan berapa
buah objek yang terdapat pada citra tersebut. Satu kurva sempurna mencerminkan satu buah
objek. Jadi semakin banyak kurva yang terdapat pada suatu histogram maka semakin bervariasi
pula objek pada citra tersebut. Untuk tiap band yang berbeda pada satu citra, memiliki
histogram dengan bentuk kurva yang berbeda-beda pula.
Histogram citra merupakan salah satu bentuk representasi grafis karakteristik spektral citra
yang bersangkutan. Dengan histogram, analis citra dapat memahami citra yang dipelajari
misalnya aspek kecerahan dan ketajamannya. Dari histogram juga kadang-kadang dapat diduga
jenis saluran spektral citra yang digunakan. Perubahan atas distribusi nilai pada citra secara
langsung berakibat pada perubahan tampilan histogram. Sebaliknya, dengan memainkan
bentuk histogramnya banyak program pengolah citra secara interaktif mampu mengubah
tampilan citranya. Dengan kata lain, perangkat lunak pengolah citra kadang-kadang
menggunakan histogram sebagai jembatan komunikasi antara pengguna dengan data citra.
Histogram citra dipresentasikan dengan dua bentuk: pertama tabel yang memuat kolom-kolom
nilai piksel jumlah absolut setiap nilai piksel, jumlah komulatif piksel, presentase absolut setiap
nilai, dan presentase komulatifnya; kedua, gambaran grafis yang menunjukkan nilai piksel pada
sumbu x dan frekuensi kemunculan pada sumbu y. Melalui gambaran grafis histogram ini,
secara umum dapat diketahui sifat-sifat citra yang diwakilinya. Misalnya citra yang direkam
dengan spectrum gelombang relatif pendek akan menghasilkan “ bukit tunggal “ histogram
yang sempit (unimodal) wilayah yang memuat tubuh air agak luas akan menghasilkan
kenampakan histogram dengan dua puncak, apabila direkam pada spektrum inframerah dekat
(bi-modal). Histogram unimodal yang sempit biasanya kurang mampu menyajikan kenampakan
obyek secara tajam, sedangkan histogram yang gemuk (lebar) relatif lebih tajam dibandingkan
yang sempit.
Penajaman kontras citra melalui histogram dapat dilakukan dengan dua macam cara yaitu
perentangan kontras dan ekualisasi histogram. Perentangan kontras merupakan upaya
mempertajam kenampakan citra dengan merentang nilai maksimmum dan nilai minimum citra.
Kompresi citra justru sebaliknya dilakukan dengan memampatkan histogram yaitu menggeser
Histogram Citra Page 11
nilai minimum ke nilai minimum baru yang lebih tinggi dan menggeser nilai maksimum ke nilai
maksimum baru yang lebih rendah sehingga histogramnya menjadi lebih “langsing”. Berbeda
halnya dengan perentangan kontras yang bersifat linier, ekualisasi histogram merupakan upaya
penajaman secara non- linier yang menata kembali distribusi nilai piksel citra dalam bentuk
histogram ke bentuk histogram yang baru, dimana dapat terjadi penggabungan beberapa nilai
menjadi nilai baru dengan frekuensi kemunculan yang baru pula. Untuk penajaman citra sendiri
meliputi semua operasi yang menghasilkan citra baru dengan kenampakan visual dan
karakteristik visual yang berbeda. Citra baru disini maksudnya aadalah citra dengan
kenampakan yang lebih bagus dibanding dengan citra aslinya.
Penajaman citra (enhancement) dalam pengertiannya adalah proses mengubah nilai piksel
secara sistematis sehingga menghasilkan efek kenampakan citra yang lebih ekspresif sesuai
dengan kebutuhan pengguna. Meliputi semua operasi yang menghasilkan citra baru dengan
kenampakan visual dan karakteristik spektral yang berbeda. Penajaman Kontras ini bertujuan
untuk memperoleh kesan kontras yang lebih tinggi. Dengan mentransformasi seluruh nilai
kecerahan maka hasilnya adalah berupa citra baru dengan nilai maksimum awal, dan nilai
minimum baru lebih rendah dari nilai minimum awal dan jika dilihat secara visual hasilnya
berupa citra baru yang variasi hitam putihnya lebih menonjol sehingga tampak lebih tajam dan
memudahkan proses interpretasi.
Kontras citra dapat dilakukan dengan merentangkan nilai kecerahan pikselnya. Citra asli
biasanya memiliki panjang gelombang yang lebih sempit dari 0-255. Sehingga hasil citra baru
memiliki histogram yang memiliki kurva lebih besar.
Pemfilteran adalah cara untuk ekstraksi bagian data tertentu dari suatu himpunan data dengan
menghilangkan bagian-bagian data yang tidak diinginkan.
Filter dirancang untuk menyaring informasi spectral sehingga menghasilkan citra baru yang
mempunyai variasi nilai spektral yang berbeda dengan citra asli. Terdapat dua jenis filtering,
yaitu filter high pass dan filter low pass.
1. Filter high pass menghasilkan citra dengan variasi nilai kecerahan yang besar dari piksel
ke piksel, sedangkan filter low pass justru sebaliknya, memiliki fungsi untuk menaikkan
frekwensi sehingga batas satu bentuk dengan bentuk lainnya menjadi jelas. Tujuannya untuk
menonjolkan perbedaan antara objek ataupun perbedaan nilai, kondisi ataupun sifat antar
objek yang diwakili oleh nilai piksel.
Histogram Citra Page 12
2. Filter low pass adalah batas antara satu bentuk dengan bentuk lainnya menjadi kabur
sehingga terkesan memiliki gradasi yang halus. Tujuannya untuk memperhalus kenampakan
citra.
Dalam pembuatan aplikasi pengolahan citra menggunakan OpenCV kita menggunakan
microsoft visual studio 2008 untuk penulisan sintak dan untuk melakukan proses eksekusi.
a. Langkah pertama adalah buka software Microsoft Visual Studio 2008. Untuk membuat
project baru pilih New Project >> Visual C++ >> Win 32 >> (kemudian isi Name dengan
latihan) >> OK . Karena nama project yang kita gunakan adalah Latihan.
b. Setelah itu kita buka folder OpenCv untuk mengambil kodingan project yang akan kita
buat. Alamat yang digunakan adalah opencv >> samples >> cpp. Kodingan yang kami
gunakan adalah image. Kodingan tersebut kami copy kemudian paste pada Visual
Studio.
Kodingan yang digunakan
#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;
Histogram Citra Page 13
//Returns the index of the maximum element in the array
int find_max(int * hist,int n){
int i_max=0;
for( int i=0;i<n;i++)
if(hist[i]>hist[i_max])
i_max=i;
printf("Nilai matriks yang paling sering muncul = %d\n",i_max);
return (i_max);
}
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("bendera.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" );
printf("\n+---Info seputar gambar---+\n");
i_max=find_max(hist,256);
Histogram Citra Page 14
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( "bendera.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);
}
Histogram Citra Page 15
c. Kemudian kita setting relese dan debug. Untuk mengaturnya kita masuk ke Project >>
Latihan Properties
d. Ketika sudah tampil coba property page nya kemudian klik Linker >> Input. Pertama
kita atur relese. Untuk mengatur relese kita ubah pada bagian Configuration >> Relese
Histogram Citra Page 16
>> Additional Include Directories. Kita kita input kodingan. Kodingan yang kita input
adalah:
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
Setelah itu klik OK
e. Setelah itu kita atur Debug. Caranya sama hanya saja pada Configuration kita ubah
menjadi Debug. Yang berbeda hanya kodingannya. Kodingan yang digunakan pada
debug adalah: opencv_features2d246.lib
opencv_highgui246d.lib
opencv_core246d.lib
opencv_imgproc246d.lib
opencv_ml246d.lib
Histogram Citra Page 17
opencv_objdetect246d.lib
opencv_video246d.lib
opencv_contrib246d.lib
opencv_calib3d246d.lib
Setelah itu klik OK
Jika Relese dan Debug sudah kita atur kemudian pilih Apply >> OK
f. Langkah selanjutnya adalah mengatur alamat folder pada Tools. Kita pilih Tools >>
Properties Project >> Project and Solution >> VC++ Directories. Pertama kita atur Library
File. Maka yang kita atur pada show directories >> Library files. Selanjutnya kita pilih
new line (kita masukan alamat folder penyimpanan) >> OK.
kita coppy paste C:\opencv\build\x86\vc9\lib pada library files
Histogram Citra Page 18
g. Setelah itu kita atur library pada Include files. Kita ubah Show directories foe menjadi
Include files.ada 2 alamat yag akan kita input yaitu:
C:\opencv\build\include
C:\opencv\include\opencv
Kemudian pilih OK
h. Setelah itu kita paste image ke dalam folder Visual Studio 2008 >> Projects >> latihan>>
latihan. Tampilan folder saat image berhasil kita paste pada folder visual studio.
Histogram Citra Page 19
i. Setelah semua settingan selesai kita atur lalu pilih save project. Kemudian kita jalankan
program dengan menngunakan tombol F5 pada keyboard atau kita pilih Debug >> start
Debugging.
Jika program berhasil maka hasil gambar seperti ini:
Histogram Citra Page 21
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://mahisaajy.blogspot.com/
http://www.guntara.com/2013/04/pengenalan-histogram-citra-dan.html
top related