1

Pengolahan Citra Digital Menggunakan

MATLAB

oleh : Andik Mabrur, S.Si

Tulungagung, Juni 2011
www.its-matematika.blogspot.com

A Ditulis Menggunakan LTEX

2

1. Tentang MATLAB
1.1 Sejarah Matlab
Nama MATLAB merupakan singkatan dari matrix laboratory. MATLAB pada awalnya ditulis untuk memudahkan akses perangkat lunak matrik yang telah dibentuk oleh LINPACK dan EISPACK. Saat ini perangkat MATLAB telah menggabung dengan LAPACK dan BLAS library, yang merupakan satu kesatuan dari sebuah seni tersendiri dalam perangkat lunak untuk komputasi matrik.

1.2 Kegunaan Matlab
Dalam lingkungan perguruan tinggi teknik, Matlab merupakan perangkat standar untuk memperkenalkan dan mengembangkan penyajian materi matematika, rekayasa dan kelimuan. Di industri, MATLAB merupakan perangkat pilihan untuk penelitian dengan produktifitas yang tinggi, pengembangan dan analisanya. Penggunaan Matlab meliputi bidang - bidang : • Matematika dan Komputasi • Pembentukan Algorithm • Akusisi Data • Pemodelan, simulasi, dan pembuatan prototipe • Analisa data, explorasi, dan visualisasi • Grafik Keilmuan dan bidang Rekayasa

1.3 Fasilitas Matlab
Fitur-fitur MATLAB sudah banyak dikembangkan, dan lebih kita kenal dengan nama toolbox. Sangat penting bagi seorang pengguna Matlab, toolbox mana yang mandukung untuk learn dan apply technologi yang sedang dipelajarinya. Toolbox toolbox ini merupakan kumpulan dari fungsi-fungsi MATLAB (M-files) yang telah dikembangkan ke suatu lingkungan kerja MATLAB untuk memecahkan masalah dalam kelas particular. Area-area yang sudah bisa dipecahkan dengan toolbox saat ini meliputi pengolahan sinyal, system kontrol, neural networks, fuzzy logic, wavelets, dan lain-lain. Selain toolbox, matlab juga dilengakapi dengan Simulink yang sangat powerfull untuk mensimulasikan dan menyelesaikan masalah - masalah yang berhubungan dengan Pemodelan Matematika. Dengan Simulink, kita dapat dengan mudah mengecek kestabilan suatu model Matematika yang kita punya. Sebagai sebuah sistem, MATLAB tersusun dari 5 bagian utama:

3 1. Development Environment. Merupakan sekumpulan perangkat dan fasilitas yang membantu anda untuk menggunakan fungsi-fungsi dan file-file MATLAB. Beberapa perangkat ini merupakan sebuah graphical user interfaces (GUI). Termasuk didalamnya adalah MATLAB desktop dan Command Window, command history, sebuah editor dan debugger, dan browsers untuk melihat help, workspace, files, dan search path. 2. MATLAB Mathematical Function Library. Merupakan sekumpulan algoritma komputasi mulai dari fungsi-fungsi dasar sepertri: sum, sin, cos, dan complex arithmetic, sampai dengan fungsi-fungsi yang lebih kompek seperti matrix inverse, matrix eigenvalues, Bessel functions, dan fast Fourier transforms. 3. MATLAB Language. Merupakan suatu high-level matrix/array language dengan control flow statements, functions, data structures, input/output, dan fitur-fitur object-oriented programming. Ini memungkinkan bagi kita untuk melakukan kedua hal baik "pemrograman dalam lingkup sederhana " untuk mendapatkan hasil yang cepat, dan "pemrograman dalam lingkup yang lebih besar" untuk memperoleh hasil-hasil dan aplikasi yang komplek. 4. Graphics. MATLAB memiliki fasilitas untuk menampilkan vektor dan matrik sebagai suatu grafik. Di dalamnya melibatkan high-level functions (fungsi-fungsi level tinggi) untuk visualisasi data dua dimensi dan data tiga dimensi, image processing, animation, dan graphics presentation. Ini juga melibatkan fungsi level rendah yang memungkinkan bagi anda untuk membiasakan diri untuk memunculkan grafik mulai dari bentuk yang sederhana sampai dengan tingkatan graphical user interfaces (GUI) pada aplikasi MATLAB anda. 5. MATLAB Application Program Interface (API). Merupakan suatu library yang memungkinkan program yang telah anda tulis dalam bahasa C dan Fortran mampu berinterakasi dengan MATLAB. Ini melibatkan fasilitas untuk pemanggilan routines dari MATLAB (dynamic linking), pemanggilan MATLAB sebagai sebuah computational engine, dan untuk membaca dan menuliskan MAT-files.

2. MEMULAI MATLAB
2.1 Membuka Matlab
Apabila komputer sudah terinstal program Matlab, maka kita akan dengan sangat mudah membuka program Matlab. Caranya yaitu klik Menu Start pada Desktop, kemudian pilih All Program, lalu pilih program Matlab sesuai dengan versi yang sudah terinstal pada komputer atau tinggal klik 2 kali pada shortcut program Matlab pada Desktop. Tampilan program Matlab ketika dibuka pertama kali adalah seperti gambar di bawah ini.

4

2.2 Memulai Memakai Matlab
Untuk percobaan pertama, kita akan membuat 2 variabel yakni panjang dan lebar dengan nilai tertentu. Kemudian akan dicari Luas dari 2 variabel yang disimpan tersebut. >> panjang=10 (lalu tekan "enter") panjang = 10 >> lebar=5 lebar = 5 >> Luas=panjang*lebar Luas = 50 >> Untuk percobaan kedua, akan dicoba operasi matrik. Operasi yang akan dicoba adalah operasi penambahan. >> a=[1 2 3 4] a =

5

1

2

3

4

>> b=[8 7 6 5] b = 8 >> c=a+b c = 9 >> Untuk percobaan ketiga, akan dicoba program yang memanfaatkan fungsi - fungsi bawaan Matlab seperti Sinus, Cosinus, dan pi. Selain itu juga akan dicoba perintah dengan menambahkan ; yang berfungsi untuk menyembunyikan hasil yang beru saja dikerjakan dengan Matlab. >> A=pi/6; >> sin(A) ans = 0.5000 >> cos(A) ans = 0.8660 >> 9 9 9 7 6 5

3. Pemrograman M-File Matlab
Pemrograman dengan M-File Matlab memberikan kontrol lebih banyak dibandingkan dengan pemrograman dengan Command Window seperti yang dibicarakan sebelumnya. Dengan M-File kita bisa melakukan percabangan, perulangan, pembuatan fungsi, dan lain - lain. Struktur Program M-File mirip dengan bahasa C yang membagi blok program berupa fungsi-fungsi. Tiap fungsi dapat memanggil fungsi-fungsi yang lain. Script dalam Command Window berguna untuk menyelesaikan permasalahan yang pen-

6 dek. Sebaliknya M-File dapat dipakai untuk membuat berbagai aplikasi sesuai keinginan pemakai. Dalam bab ini dibahas tentang dasar-dasar pembuatan program dalam M-File. Program-program yang membutuhkan fungsi yang lebih kompleks contohnya dapat dilihat pada Demo atau Help yang menjadi fasilitas Matlab. Jendela M-File dapat dibuka melalui menu File->New->M->File atau langsung saja dengan menekan Ctrl+N. Jendela M-File terlihat seperti pada gambar di bawah ini.

3.1 Membuat Fungsi dengan M-File
Salah satu kemampuan M-File yang begitu baik adalah membuat fungsi. Seperti layaknya fungsi - fungsi yang sudah terdefinisi di Matlab, kita juga bisa membuat fungsi sendiri yang bisa dipanggil layaknya fungsi bawaan Matlab. Bentuk deklarasi sebuah fungsi dalam Matlab adalah sebagai berikut : function <argumen_keluaran>=<nama_fungsi><argumen_masukan> Sebagai contoh adalah bentuk deklarasi untuk menghitung luas sebuah persegi panjang : function Luas = FLuas (panjang,lebar) Untuk memudahkan pemahaman akan dibuat contoh pembuatan fungsi yang lengkap. Fungsi yang dibuat adalah fungsi untuk menghitunhg luas persegi panjang seperti contoh definisi di atas tadi. Berikut ini adalah fungsi lengkapnya. function Luas = FLuas (panjang,lebar) Luas=panjang*lebar;

7 Simpan file-nya dengan nama yang sama dengan nama yang sama dengan nama fungsinya. Karena nama fungsinya FLuas, maka simpan dengan nama "FLuas.m". Kemudian fumgsi ini akan dicoba pada Command Window Matlab dengan bagian panjang = 10 dan lebar = 5. >> FLuas(10,5) ans = 50 >>

3.2 Pemakaian M-File dengan Inputan dari Keyboard
Untuk dapat melakukan inputan di Command Window Matlab, kita bisa menggunakan perintah : var=input(’Masukkan nilai : ’) Sedangkan untuk keluarannya, kita bisa menggunakan perintah : disp(var) var merupakan variabel tempat menyimpan nilai inputan. Untuk memudahkan pemahaman, lihat contoh di bawah ini. Di sini akan dibuat program untuk menghitung luas trapesium. Inputan yang ditampilkan adalah ’Sisi Alas’, ’Sisi Atas’, dan tinggi. clc; clear; a=input(’Masukkan panjang Sisi Alas : ’); b=input(’Masukkan panjang Sisi Atas : ’); t=input(’Masukkan tinggi : ’); Luas=0.5*(a*b)*t; disp(’Luas Trapesium adalah : ’) disp(Luas) Setelah di-running dengan inputan Sisi Alas=20, Sisi Atas=15, dan tinggi=8, maka tampilan di Command Window adalah sebagai berikut : Masukkan panjang Sisi Alas : 20 Masukkan panjang Sisi Atas : 15 Masukkan tinggi : 8 Luas Trapesium adalah : 1200 >>

8

3.3 Contoh Kasus Penyelesaian dengan M-File
1. Menghitung Luas Permukaan dan Volume Balok. Untuk menyelesaikan permasalahan ini kita akan memakai inputan yang tetap berupa panjang, lebar, dan tinggi. Untuk output dari program ini adalah berupa Luas Permukaan dan Volume balok yang akan ditampilkan pada Command Window di Matlab. clc; clear; panjang=10; lebar=5; tinggi=4; Luas=2*panjang*lebar+2*panjang*tinggi+2*lebar*tinggi Volume=panjang*lebar*tinggi Hasil running-nya di Command Window adalah seperti di bawah ini. Luas = 220

Volume = 200 >> 2. Menghitung n Suku Pertama dari Deret Aritmatika. Untuk membuat program ini, akan dipakai masukan berupa nilai suku pertama, nilai beda, dan nilai n. Inputan akan dibuat dinamis yang dapat langsung diinputkan dari keyboard ketika running program berlangsung. Hasil dari program ini yang berupa n suku pertama dari deret Aritmatika juga akan ditampilkan dalam Command Window. clear; a=input(’Masukkan suku pertama : ’); b=input(’Masukkan beda : ’); n=input(’Masukkan nilai n : ’); for i=1:n hasil(i)=a+b*(i-1); end hasil Hasil running-nya di Command Window adalah seperti di bawah ini.

9 Masukkan suku pertama : 5 Masukkan beda : 3 Masukkan nilai n : 7 hasil = 5 >> 8 11 14 17 20 23

4. Citra Digital dan Pengolahannya di Matlab
4.1 Citra Digital
Sebuah citra digital adalah kumpulan piksel-piksel yang disusun dalam larik dua dimensi. Indeks baris dan kolom (x,y) dari sebuah piksel yang dinyatakan dalam bilangan bulat dan nilai-nilai tersebut mendefinisikan suatu ukuran intensitas cahaya pada titik tersebut. Satuan atau bagian terkecil dari suatu citra disebut piksel (picture element). Umumnya citra dibentuk dari persegi empat yang teratur sehingga jarak horizontal dan vertikal antara piksel satu dengan yang lain adalah sama pada seluruh bagian citra. Piksel (0,0) terletak pada sudut kiri atas pada citra, dimana indeks x bergerak ke kanan dan indeks y bergerak ke bawah. Untuk menunjukkan koordinat (m-1,n-1) digunakan posisi kanan bawah dalam citra berukuran m x n pixel. Hal ini berlawanan untuk arah vertikal dan horizontal yang berlaku pada sistem grafik dalam matematika. Video sebenarnya juga merupakan salah satu bentuk dari citra digital. Video merupakan kumpulan dari beberapa frame dari citra digital. Satu frame merupakan satu citra digital. Oleh karena itu, apabila di video ada satuan yang menyatakan 12 fps(frame per second) artinya bahwa video tersebut memainkan 12 frame/citra digital dalam tiap detiknya.

4.2 Membaca File Citra Digital di Matlab dan Menampilkannya
Dalam Matlab, citra digital direpresentasikan dalam matriks berukuran m x n sesuai dengan ukuran m x n ukuran citra digital dalam pixel. Jadi setiap pixel dari citra digital diwaklili oleh sebuah matriks berukuran 1x1 apabila citra tersebut berupa citra Grayscale atau citra Biner, dan 3 matriks apabila citra digital berupa citra RGB. Misalkan kita punya citra digital berukuran 640x480 pixel, maka sebenarnya citra tersebut diwakili oleh matriks berukuran 640x480. Untuk membaca sebuah file citra di Matlab, maka digunakan perintah : A=imread(’nama_File’) dengan syarat file yang dibaca berada pada direktori yang aktif. File yang dibaca kemudian disimpan dalam variabel "A" dalam bentuk matriks penyusun citra. Sedangkan untuk menampilkan file citra yang telah dibaca digunakan perintah :

10 imshow(A) "A" merupakan variabel tempat menyimpan matriks penyusun citra yang telah dibaca sebelumnya. Untuk mempermudah pemahaman, akan langsung digunakan contoh. Misalkan kita akan membaca sebuah file citra dengan nama file "logo-batu.jpg", kemudian akan langsung ditampilkan. Ingat!!! Sebelum di-running simpan filenya terlebih dahulu. clc; clear; A=imread(’logo-batu.jpg’);%Membaca file citra imshow(A)%Menampilkan file citra Hasil running-nya adalah sebagai berikut :

Untuk contoh kedua, kita masih akan membaca file yang sama, akan tetapi kali ini akan diambil masing - masing matriks penyusun citra (matriks R, matriks G, dan Matriks B) karena memang file yang dibaca adalah gambar RGB (berwarna). Semua matriks ini kemudian akan ditampilkan ke dalam 1 figure (plot). Berikut ini adalah listing programnya yang ditulis dalam M-File. clc; clear; A=imread(’logo-batu.jpg’);%Membaca file citra red=A(:,:,1);%Mengambil matriks penyusun citra merah green=A(:,:,2);%Mengambil matriks penyusun citra hijau blue=A(:,:,3);%Mengambil matriks penyusun citra biru subplot(2,2,1) imshow(A) subplot(2,2,2) imshow(red)

11 subplot(2,2,3) imshow(green) subplot(2,2,4) imshow(blue) Hasil running-nya adalah sebagai berikut :

Untuk membaca file citra yang berbeda direktori dengan direktori yang aktif adalah dengan menuliskan direktori tempat file berada + nama_file. Misalkan filenya berada pada direktori "D:/Picture", maka tinggal ditulis saja : A=imread(’D:/Picture/logo-batu.jpg’)

4.3 Membaca File Video di Matlab dan Menampilkannya
Tidak semua file vieo bisa dibaca di Matlab. Hanya file video dengan format ".avi" saja yang bisa dibaca di Matlab. Untuk bisa membaca file dengan format ".avi" ada 2 fungsi yang bisa kita pakai. • Menggunakan fungsi vid=aviread(’nama_file’) • Menggunakan fungsi video=mmreader(’nama_file’) dan vd=read(video,frame) Sedangkan untuk menampilkannya juga ada 2 cara : • Untuk yang membacanya menggunakan fungsi vid=aviread(’nama_file’), maka menampilkan videonya menggunakan : movie(vid); • Untuk yang membacanya menggunakan fungsi video=mmreader(’nama_file’), maka menampilkannya adalah dengan menggunakan :

12 imshow(vd);

Dengan cara ini maka yang dapat ditampilkan hanyalah satu frame sesuai dengan frame yang dibaca dengan syntax vd=read(video,frame). Apabila ingin ditampilkan seperti layaknya video, maka harus dilakukan perulangan sesuai dengan jumlah frame dalam video yang dibaca tersebut. Untuk mempermudah pemahaman, maka akan langsung digunakan contoh. Misalkan kita akan membaca sebuah file video dengan format .avi dengan nama "1-1.avi". Untuk contoh pertama akan dibaca menggunakan fungsi : vid=aviread(’nama_file’). clc; clear; vid = aviread(’1-1.avi’); %Membaca file video movie(mov); %Menampilkan file video Hasil running programnya adalah seperti terlihat pada gambar di bawah ini :

Untuk contoh kedua akan dibaca dengan fungsi video=mmreader(’nama_file’) dan vd=read(video,frame). Pada contoh ini video akan ditampilkan tiap frame sehingga tampilannya akan seperti video. clc; clear; video = mmreader(’1-1.avi’); %Membaca file video ukuran = size(read(video1));%Menampilkan ukuran video frame=ukuran(4); %Menghitung jumlah frame for i=1:frame vd=read(video,i); imshow(vd) end

13 Hasil running programnya adalah seperti terlihat pada gambar di bawah ini.

4.4 Pengolahan Citra Digital yang Dapat Dilakukan dengan Fungsi Bawaan Matlab
Ada beberapa pengolahan citra yang bisa kita lakukan dengan fungsi - fungsi yang sudah didefinisikan di dalam Matlab. Untuk mempermudah pemahaman, maka masing masing pengolahan citra tersebut akan disertai contoh yang menggunakan citra berwarna (RGB) dengan nama "logo-bitung.jpg". Pengolahan citra tersebut antara lain : 1. Grayscaling Grayscalling adalah teknik yang digunakan untuk mengubah citra berwana (RGB) menjadi bentuk grayscale atau tingkat keabuan (dari hitam ke putih). Dengan pengubahan ini, matriks penyusun citra yang sebelumnya 3 matriks akan berubah menjadi 1 matriks saja. Pengubahan dari citra berwarna ke bentuk grayscale biasanya mengikuti aturan sebagai berikut : I(i, j) = dimana : I(i, j) = Nilai intensitas citra grayscale R(i, j) = Nilai intensitas warna merah dari citra asal G(i, j) = Nilai intensitas warna hijau dari citra asal B(i, j) = Nilai intensitas warna biru dari citra asal Untuk melakukan Grayscaling di Matlab, kita bisa menggunakan fungsi : I = rgb2gray(RGB) Berikut ini adalah contoh lengkapnya ketika diterapkan dalam sebuah citra digital : R(i, j) + G(i, j) + B(i, j) 3

14 clc; clear; RGB=imread(’logo-bitung.jpg’); I=rgb2gray(RGB); %Proses Grayscaling subplot(1,2,1) imshow(RGB) subplot(1,2,2) imshow(I) Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri adalah gambar asli, sedangkan yang di sebelah kanan adalah gambar setelah mengalami proses Grayscaling.

2. Binerisasi Citra Binerisasi citra merupakan proses merubah citra ke dalam bentuk biner (0 dan 1). Dengan merubah ke bentuk biner, citra hanya akan mempunyai 2 warna yakni hitam dan putih. Dengan proses ini, citra RGB juga akan menjadi 1 matriks penyusun saja. Untuk melakukan Binerisasi citra di Matlab, kita bisa menggunakan fungsi : I = im2bw(RGB) Berikut ini adalah contoh lengkapnya ketika diterapkan dalam sebuah citra digital. clc; clear; RGB=imread(’logo-bitung.jpg’); I=im2bw(RGB); %Binerisasi citra subplot(1,2,1) imshow(RGB) subplot(1,2,2) imshow(I)

15 Hasil running programnya adalah seperti terlihat pada gambardi bawah ini dimana gambar yang di sebelah kiri adalah gambar asli, sedangkan yang di sebelah kanan adalah gambar setelah mengalami proses Binerisasi citra.

3. Rotasi Citra Rotasi citra di sini maksudnya adalah memutar citra sesuai dengan sudut yang ditentukan dengan pusat yang berada pada titik pusat citra digital yang diputar tersebut. Untuk bisa melakukan rotasi citra di Matlab kita menggunakan fungsi : B = imrotate(A,angle) "A" merupakan variabel tempat untuk menyimpan matriks penyusun citra yang telah dibaca. sedangkan "angle" merupakan besarnya sudut rotasi dari citra dalam derajat berlawanan arah dengan arah jarum jam. Berikut ini adalah contoh lengkapnya ketika diterapkan dalam sebuah citra digital. clc; clear; A=imread(’logo-bitung.jpg’); B = imrotate(A,45); subplot(1,2,1) imshow(A) subplot(1,2,2) imshow(B) Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri adalah gambar asli, sedangkan yang di sebelah kanan adalah gambar setelah mengalami proses Rotasi citra sebesar 45 derajat.

16

4. Cropping Citra Cropping citra artinya adalah pengambilan bagian tertentu dari suatu citra digital menjadi matriks baru yang independent. Tentu saja cropping ini sangat berguna apabila kita hanya membutuhkan bagian tertentu dari suatu citra digital. Misalkan saja kita punya digital foto seluruh badan, padahal yang kita butuhkan hanya setengah badan, tentunya kita akan menggunakan cropping ini untuk mengambil bagian yang setengah badan tersebut. Untuk bisa melakukan cropping, di Matlab dapat menggunakan fungsi : B = imcrop(A,[a b c d]); "A" merupakan matriks penyusun citra, "a" dan "b" merupakan titik awal mulainya cropping, sedangkan "c" dan "d" merupakan besarnya cropping yang dilakukan dalam satuan pixel. Berikut ini adalah contoh lengkapnya ketika diterapkan dalam sebuah citra digital : clc; clear; A=imread(’logo-bitung.jpg’); B = imcrop(A,[30 30 100 100]); subplot(1,2,1) imshow(A) subplot(1,2,2) imshow(B) Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri adalah gambar asli, sedangkan yang di sebelah kanan adalah gambar yang sudah dicrop.

17

5. Resizing Citra Resizing citra artinya adalah mengubah besarnya ukuran citra digital dalam pixel. Ada kalanya ukurannya berubah menjadi lebih kecil dari file aslinya dan ada kalanya sebaliknya. Untuk dapat melakukan resizing citra kita bisa menggunakan fungsi : B = imresize(A, skala) B = imresize(A, [mrows ncols]) "A" merupakan matriks penyusun citra, "skala" merupakan skala untuk resizing (prubahan ukuran) citra, "mrows" adalah jumlah baris matriks yang baru, sedangkan "ncols" adalah jumlah kolom matriks yang baru. Berikut ini adalah contoh penerapannya pada citra digital : clc; clear; RGB=imread(’logo-bitung.jpg’); size(RGB) B1=imresize(RGB,0.5); size(B1) B2=imresize(RGB,1.2); size(B2) B3=imresize(RGB,[100 70]); size(B3) subplot(2,2,1) imshow(RGB) subplot(2,2,2) imshow(B1) subplot(2,2,3) imshow(B2) subplot(2,2,4) imshow(B3)

18 Perintah size() digunakan untuk mencari ukuran dari suatu matriks kemudian menampilkannya di Command Window. Hasil running-nya di Command Window : ans = 243 250 3

ans = 122 125 3

ans = 292 300 3

ans = 100 >> Dari sini terlihat bahwa ukuran matriksnya berubah - ubah dari ukuran aslinya (nilai yang pertama) karena memang telah dilakukan resizing pada matriks citra. Sedangkan hasil tampilan citranya adalah seperti gambar di bawah ini, dimana yang kiri atas adalah citra asli, kanan atas adalah citra dengan skala 0.5, kiri bawah adalah citra dengan skala 1.2, dan kanan bawah adalah citra dengan resize ukuran 100x70 pixel. 70 3

19 6. Filtering Citra Filtering adalah suatu proses dimana diambil sebagian sinyal dari frekwensi tertentu dan membuang sinyal pada frekwensi yang lain. Filtering pada citra juga menggunakan prinsip yang sama, yaitu mengambil fungsi citra pada frekwensi - frekwensi tertentu dan membuang fungsi citra pada frekwensi - frekwensi tertentu juga. Di Matlab, untuk bisa melakukan filtering kita bisa menggunakan fungsi : h = fspecial(type) h = fspecial(type, parameters) Untuk type-nya kita bisa menggunakan : • ’average’ : adalah untuk filter rata - rata. • ’disk’ : adalah untuk filter rata - rata lingkaran. • ’gaussian’ : adalah untuk gaussian lowpass filter. • ’laplacian’ : adalah untuk memperkirakan operator laplace 2-D. • ’log’ : adalah untuk Laplacian of Gaussian filter • ’motion’ : adalah untuk memperkirakan gerak linier kamera. • ’prewitt’ : adalah untuk filter edge Prewitt. • ’sobel’ : adalah untuk filter edge Sobel. • ’unsharp’ : adalah untuk Unsharp contrast enhancement filter. Untuk parameter - parameternya bisa dilihat pada HELP Matlab. Berikut ini adalah contoh penerapannya pada citra digital : clc; clear; A=imread(’logo-bitung.jpg’); H1 = fspecial(’average’); T1 = imfilter(A,H1,’replicate’); H2 = fspecial(’disk’); T2 = imfilter(A,H2,’replicate’); H3 = fspecial(’gaussian’); T3 = imfilter(A,H3,’replicate’); B=rgb2gray(A); subplot(2,2,1) imshow(A) subplot(2,2,2) imshow(T1) subplot(2,2,3) imshow(T2) subplot(2,2,4) imshow(T3)

20 Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri atas adalah gambar asli, di sebelah kanan atas adalah gambar dengan filter ’average’, di sebelah kiri bawah adalah gambar dengan filter ’disk’, sedangkan yang kanan bawah adalah gambar dengan filter ’gaussian’.

Contoh - contoh di atas adalah untuk yang tidak menggunakan parameter. Untuk yang menggunakan parameter akan dicoba langsung pada contoh di bawah ini : clc; clear; A=imread(’logo-bitung.jpg’); H1 = fspecial(’motion’,20,45); T1 = imfilter(A,H1,’replicate’); H2 = fspecial(’log’, [4 4], 0.4); T2 = imfilter(A,H2,’replicate’); H3 = fspecial(’laplacian’, 0.25); T3 = imfilter(A,H3,’replicate’); B=rgb2gray(A); subplot(2,2,1) imshow(A) subplot(2,2,2) imshow(T1) subplot(2,2,3) imshow(T2) subplot(2,2,4) imshow(T3) Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri atas adalah gambar asli, di sebelah kanan atas adalah gambar dengan filter ’motion’ dengan parameternya, di sebelah kiri bawah adalah gambar dengan filter ’log’ dengan parameternya, sedangkan yang kanan bawah adalah gambar dengan filter ’laplacian’ juga dengan parameternya.

21

7. Menambahkan Gangguan (Noise) pada Citra Untuk bisa menambahkan gangguan (noise) pada citra digital kita bisa menggunakan fungsi : J = imnoise(I,type) J = imnoise(I,type,parameters) "I" merupakan matriks penyusun citra, "type" merupakan jenis metode penambahan gangguan yang kita gunakan, sedangkan "parameters" merupakan parameter parameter yang dipakai. Untuk "type" yang bisa dipakai adalah : • ’gaussian’ : Gangguan Gaussian putih dengan mean dan variance yang tetap. • ’localvar’ : Gangguan Zero-mean Gaussian putih dengan variance intensitydependent. • ’poisson’ : Gangguan poison • ’salt & pepper’ : Gangguan pixel on dan off. • ’speckle’ : Gangguan Multiplicative. Sedangkan untuk parameter - parameternya silahkan dilihat pada HELP Matlab. Berikut ini adalah contoh penggunaannya pada citra digital : clc; clear; RGB=imread(’logo-bitung.jpg’); N1=imnoise(RGB,’gaussian’); N2=imnoise(RGB,’salt & pepper’); N3=imnoise(RGB,’speckle’); subplot(2,2,1) imshow(RGB) subplot(2,2,2) imshow(N1)

22 subplot(2,2,3) imshow(N2) subplot(2,2,4) imshow(N3) Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri atas adalah gambar asli, di sebelah kanan atas adalah gambar dengan noise ’gaussian’ , di sebelah kiri bawah adalah gambar dengan noise ’salt & pepper’, sedangkan yang kanan bawah adalah gambar dengan noise ’speckle’.

8. Histogram Citra Histogram citra adalah grafik yang menggambarkan penyebaran nilai intensitas pixel dari suatu citra. Histogram dapat menjadi penunjuk kadar kecerahan (brightness) dan kontras citra. Normalnya nilai histogram dari suatu citra adalah 0-255, begitu pula dengan histogram citra bawaan dari Matlab. Untuk bisa menampilkan histogram citra, maka digunakan fungsi : imhist(Matriks-Citra) Perlu diperhatikan bahwa imhist hanya dapat digunakan untuk matrik image 1 dimensi sehingga bila diimplementasikan pada matriks gambar maka hanya berupa matriks merah saja, hijau saja, biru saja atau grayscale. Berikut ini adalah contoh lengkapnya ketika diterapkan dalam sebuah citra digital. clc; clear; A=imread(’logo-bitung.jpg’); B=rgb2gray(A); subplot(1,2,1) imshow(B) subplot(1,2,2) imhist(B)

23 Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri adalah gambar citra grayscale, sedangkan yang di sebelah kanan adalah histogramnya.

Nah, bila tadi hanya bisa menampilkan histogram dari 1 matriks citra, maka dengan memanfaatkan fungsi imhist() kita juga bisa menampilkan histogram dari 3 matriks citra sekaligus. Fungsi imhist() selain mampu menampilkan histogram dari matriks citra, fungsi ini juga mampu untuk menghitung besarnya histogram citra. Kemampuan inilah yang bisa kita manfaatkan untuk menampilkan histogram dari keseluruhan matriks penyusun citra. Kode programnya adalah sebagai berikut : clc; clear; A=imread(’logo-bitung.jpg’);%Membaca file citra red=A(:,:,1);%Mengambil matriks penyusun citra merah green=A(:,:,2);%Mengambil matriks penyusun citra hijau blue=A(:,:,3);%Mengambil matriks penyusun citra biru hred=imhist(red);%Menghitung histogram matriks citra biru hgreen=imhist(green); hblue=imhist(blue); range=0:255; subplot(1,2,1) imshow(A) subplot(1,2,2) %Plot histogram matriks citra merah plot(range,hred,’Color’,’red’); hold on plot(range,hgreen,’Color’,’green’); plot(range, hblue,’Color’,’blue’);

24 Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri adalah gambar citra RGB (berwarna), sedangkan yang di sebelah kanan adalah histogramnya.

9. Deteksi Tepi Seleksi objek biasanya selanjutnya dilakukan langkah deteksi tepi dalam proses pengolahan citra, di MATLAB proses pendeteksian tepi dilakukan dengan fungsi : BW = edge(I) BW = edge(I,’Metode’) "I" merupakan matriks penyusun citra (harus 1 matriks). Untuk "Metode" ada beberapa metode yang bisa dipakai yakni sobel, prewitt, roberts, Canny, laplacian of gaussian, dan zero cross. Yang penting diperhatikan pada deteksi tepi bahwa hanya dapat dilakukan menggunakan citra grayscale atau citra 2-D. Berikut ini adalah contoh penggunaan fungsi edge() pada citra digital : clc; clear; A=imread(’logo-bitung.jpg’); I=rgb2gray(A); E1=edge(I); E2=edge(I,’prewitt’); E3=edge(I,’Canny’); subplot(2,2,1) imshow(I) subplot(2,2,2) imshow(E1) subplot(2,2,3)

25 imshow(E2) subplot(2,2,4) imshow(E3) Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri atas adalah gambar citra grayscale, sedangkan yang di sebelah kanan atas adalah gambar hasil deteksi tepi tanpa menggunakan metode, bawah kiri adalah hasil deteksi tepi menggunakan metode ’prewitt’, sedangkan bawah kanan adalah hasil deteksi tepi menggunakan metode ’Canny’.

10. Convert RGB ke NTSC Selain warna RGB yang membagi citra menjadi 3 matriks yakni matriks R(Red), matriks G(Green), dan matriks B(Blue), citra juga dapat dibagi ke dalam matriks lain yakni Y, I dan Q yang merupakan komponen warna NTSC. Untuk bisa melakukan konversi RGB ke NTSC di Matlab sangatlah mudah karena memang disediakan fungsi khusus untuk melakukan konversi ini, yaitu : YIQ = rgb2ntsc(RGB) Berikut ini adalah contoh penerapan fungsi rgb2ntsc(RGB) dalam citra digital ; clc; clear; RGB=imread(’logo-bitung.jpg’); NTSC=rgb2ntsc(RGB); Y=NTSC(:,:,1);

26 I=NTSC(:,:,2); Q=NTSC(:,:,3); subplot(2,2,1) imshow(NTSC) subplot(2,2,2) imshow(Y) subplot(2,2,3) imshow(I) subplot(2,2,4) imshow(Q) Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri atas adalah gambar citra dengan warna NTSC, sedangkan yang di sebelah kanan atas adalah gambar citra Y, bawah kiri adalah gambar citra I, sedangkan bawah kanan adalah gambar citra Q.

Nah, untuk melakukan hal sebaliknya, yakni mengkonversi NTSC ke RGB kita bis menggunakan fungsi : RGB = ntsc2rgb(YIQ) 11. Convert RGB ke YBcBr Selain RGB dan NTSC, ada lagi warna YBcBr. Seperti halnya RGB dan NTSC, warna YBcBr juga membagi citra berwarna ke dalam 3 matriks, yaitu "Y", "Bc", dan "Br". Di Matlab sangatlah mudah mengkonversi warna RGB ke dalam warna YBcBr karena memang matlab sudah menyediakannya dengan fungsi :

27 YCBCR = rgb2ycbcr(RGB) Berikut ini adalah contoh penerapannya dalam citra digital : clc; clear; RGB=imread(’logo-bitung.jpg’); YCBCR = rgb2ycbcr(RGB); Y=YCBCR(:,:,1); %Ekstraksi matriks Y Cb=YCBCR(:,:,2); %Ekstraksi matriks Bc Cr=YCBCR(:,:,3); %Ekstraksi matriks Br subplot(2,2,1) imshow(YCBCR) subplot(2,2,2) imshow(Y) subplot(2,2,3) imshow(Cb) subplot(2,2,4) imshow(Cr) Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimana gambar yang di sebelah kiri atas adalah gambar citra dengan warna YCbCr, sedangkan yang di sebelah kanan atas adalah gambar citra Y, bawah kiri adalah gambar citra Cb, sedangkan bawah kanan adalah gambar citra Cr.

Kemudian, untuk melakukan hal sebaliknya, yakni mengkonversi YCbCr ke RGB kita bisa menggunakan fungsi : RGB = ycbcr2rgb(YCBCR)

28

4.4 Contoh Aplikasi yang Memanfaatkan Pengolahan Citra
Dengan pengolahan Citra, banyak aplikasi(terapan) yang bisa kita gunakan misalkan saja pattern recognition (pengenalan pola), perbaikan citra, normalisasi citra, dan lain - lain. Adapun alikasi pengolahan citra yang akn dibahas di sini tidak hanya dibuat dengan menggunakan M-File saja, akan tetapi dibuat dengan menggunakan GUI (Graphic User Interface) yang akan memudahkan user untuk memakai aplikasi. Kode program yang akan ditampilkan di sini adalah kode program yang terletak pada tombol (button) dan dituliskan di bawah kode program tertentu. Misalkan yang dijelaskan adalah kode program pada tombol btnVid_on, maka kode program yang ditampilkan adalah kode program setelah kode program di bawah ini. % --- Executes on button press in btnVid_on. function btnVid_on_Callback(hObject, eventdata, handles) % hObject handle to btnVid_on (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) Berikut ini adalah beberapa aplikasi dari pengolahan citra : 1. Aplikasi untuk Kompresi Citra Digital Kompresi citra adalah memperkecil ukuran (besar file) citra digital dengan cara mengurangi detail citra. Dengan dilakukan kompresi, maka ukuran citra akan menjadi lebih kecil sehingga akan bisa mempercepat proses transfer file. (a) Desain Tampilan Desain tampilan yang dibuat adalah sebagai berikut :

Dari gambar di atas terlihat beberapa component yang dipakai, yaitu : • axes yang dipakai ada 2 yaitu : yang sebelah kiri dengan Tag "axes1" digunakan untuk menampilkan citra input, kemudian yang sebelah kanan dengan Tag "axes2" digunakan untuk menampilkan citra yang sudah dikompress.

29 • Pop-up Menu yang dipakai hanya 1 buah dengan Tag Popup dan stringnya diisi dengan : 25 50 75 100 Ini merupakan pilihan - pilihan yang kualitas dari citra yang akan disimpan dalam persen. • Button yang dipakai sebanyalk 3 buah yaitu : – Button dengan Tag btnOpen dan string OPEN digunakan untuk membuka file citra yang akan dikompress dan menampilkannya pada "axes1". – Button dengan Tag btnKompress dan string KOMPRESS digunakan untuk melakukan proses kompresi citra digital kemudian menampilkannya pada "axes2". – Button dengan Tag btnKeluar dan string KELUAR digunakan untuk keluar dari aplikasi. (b) Kode Program i. Tombol "OPEN" [nama_file1, nama_path1]=uigetfile ( ... {’*.jpg’,’File JPEG(*.jpg)’; ’*.png’,’File PNG(*.png)’;... ’*.bmp’,’File BMP(*.bmp)’;... ’*.*’,’Semua file(*.*)’},... ’Buka File Citra Asli’); if ~isequal(nama_file1, 0) handles.data1=imread(fullfile(nama_path1,... nama_file1)); guidata(hObject,handles); handles.current_data1=handles.data1; axes(handles.axes1); imshow(handles.current_data1); else return; end Keterangan : • uigetfile() : merupakan fungsi untuk menampilkan tampilan GUI untuk mengambil file. • isequal(a,b) : merupakan fungsi untuk menentukan ketidaksamaan 2 objek. Dalam hal ini tentu saja ketidaksamaan antara a dengan b. ii. Tombol "KOMPRESS" val=get(handles.Popup,’value’); str=get(handles.Popup,’string’);

30 kualitas = str2num(str{val}); [nama_file_simpan, path_simpan]=uiputfile(... {’*.jpg’,’File JPEG(*.jpg)’; ’*.png’,’File PNG(*.png)’;... ’*.bmp’,’File BMP(*.bmp)’;... ’*.*’,’Semua file(*.*)’},... ’Menyimpan File Hasil Kompresi’); if ~isequal(nama_file_simpan,0) imwrite(handles.data1,fullfile(path_simpan,... nama_file_simpan),’quality’,kualitas); citra_kompres=imread(fullfile(path_simpan,... nama_file_simpan)); axes(handles.axes2); imshow(citra_kompres); end Keterangan : • val=get(handles.Popup,’value’) : digunakan untuk mengambil ’value’(nilai) dari "Pop-up Menu" dengan Tag Popup dan menyimpannya dalam variabel val. • str=get(handles.Popup,’string’) : digunakan untuk mengambil string dari "Pop-up Menu" dengan Tag Popup. • strval : digunakan untuk mengambil string dengan value tertentu. • str2num() : digunakan untuk merubah nilai string menjadi nilai numerik. • imwrite() : digunakan untuk menyimpan citra. iii. Tombol "KELUAR" button = questdlg(’Apakah anda mau keluar ?’, ... ’Konfirmasi Keluar’,’Ya’,’Tidak’,’Tidak’); switch button case ’Ya’, clc; close; case ’Tidak’, quit cancel; end Keterangan : • button = questdlg(’Apakah anda mau keluar ?’,... ’Konfirmasi Keluar’,’Ya’,’Tidak’,’Tidak’); digunakan untuk menampilkan tampilan GUI untuk menampilkan pertanyaan pada use beserta jawabannya. Tentu saja di sini pertanyaannya adalah "Apakah anda mau keluar ?" dengan jawaban "Ya" dan "Tidak" dengan default jawaban pada "Tidak". Sedangkan nama GUInya adalah "Konfirmasi Keluar".

31 (c) Cara Penggunaan Cara menggunakan aplikasi ini sangatlah mudah, pertama - tama buka file citra dengan klik tombol "OPEN", lalu pilih citra yang mau dikompress, lalu klik OK. Setelah file citra yang dibuka ditampilkan pada axes1 (sebelah kiri), pilih kualitas citra yang akan dikompress pada "Pop-up Menu". Setelah itu untuk melakukan kompresi, tinggal klik tombol "KOMPRESS" lau simpan citra yang dikompress dengan nama dan format yang kamu inginkan, lalu klik OK. Untuk keluar dari aplikasi, tinggal klik tombol "KELUAR" lalu klik tombol "Ya". Sedangkan untuk membatalkan, klik tombol "Tidak". Gambar di bawah ini merupakan gambar hasil running dari "Aplikasi untuk Kompresi Citra Digital" dengan kualitas yang dipilih adalah 50.

2. Aplikasi untuk Mengambil Foto Melalui Webcam Dari namanya, tentu saja untuk bisa menjalankan aplikasi ini kita membutuhkan webcam yang terinstal pada komputer yang kita gunakan. Dengan toolbox image processing yang ada di Matlab kita bisa melakukan pengambilan foto melalui webcam yang kita punya. Cara kerja aplikasi ini adalah dengan mengambil 1 frame dari gambar yang ditangkap melalui webcam dan videonya ditampilkan di layar. Ukuran dari gambar yang diambil tentu saja sesuai dengan resolusi dari webcam yang dipakai untuk menampilkan video. Resolusi - resolusi webcam (dalam pixel) yang dipakai pada aplikasi ini ada 5 macam, yaitu 640x480, 352x288, 320x240, 176x144, 160x120.

(a) Desain Tampilan Desain tampilan yang dibuat adalah sebagai berikut :

32

Dari gambar di atas terlihat beberapa component yang dipakai, yaitu : • axes yang dipakai adalah 2 axes yaitu axes1 untuk menampilkan video dari webcam dan axes2 untuk menampilkan hasil capture video. • Pop-up Menu yang dipakai hanya 1 dengan nama (Tag) popup dan stringnya diisi dengan : YUY2_640x480 YUY2_352x288 YUY2_320x240 YUY2_176x144 YUY2_160x120 Ini merupakan pilihan - pilihan yang menentukan resolusi video yang akan ditampilkan pada aplikasi. • Edit Text yang dipakai hanya 1 dengan nama (Tag) txtUkuran dan string kosong digunakan untuk menampilkan ukuran dari gambar hasil capture video. • Button atau tombol yang dipakai sejumlah 5 buah, yakni : – Button dengan Tag btnVid_on dan string Video On digunakan untuk menghidupkan webcam dan menampilkannya dalam aplikasi. – Button dengan Tag btnVid_off dan string Video Off digunakan untuk mematikan webcam. – Button dengan Tag btCapture dan string Capture digunakan untuk mengambil gambar (capture) dari webcam yang sedang hidup. – Button dengan Tag btnSave dan string Save digunakan untuk menyimpan hasil capture. – Button dengan Tag btnExit dan string Exit digunakan untuk keluar dari aplikasi. (b) Kode Program Kode program di sini akan dijelaskan berdasarkan tombol - tombol yang dipakai, yaitu :

33 i. Tombol "Video On" global vid val=get(handles.popup,’value’); str=get(handles.popup,’string’); selected_string = str{val}; vid = videoinput(’winvideo’,1,selected_string); set(vid,’ReturnedColorSpace’,’rgb’); vidRes = get(vid, ’VideoResolution’); imWidth = vidRes(1); imHeight = vidRes(2); nBands = get(vid, ’NumberOfBands’); hImage = image( zeros(imHeight, imWidth, nBands) ); axes(handles.axes1); preview(vid, hImage); Keterangan : • global vid : digunakan untuk menjadikan variabel vid menjadi variabel global yang artinya variabel ini akan dapat diakses oleh tombol - tombol yang lain ii. Tombol "Video Off" global vid delete(vid); iii. Tombol "Capture" global vid capture capture= getsnapshot(vid); axes(handles.axes2); imshow(capture); a=size(capture); set(handles.txtUkuran,’string’,num2str(a)) Keterangan : • capture= getsnapshot(vid); : digunakan untuk untuk mengambil 1 frame dari video yang ditangkap oleh webcam pada saat itu juga kemudian menyimpannya dalam variabel capture. • num2str() : digunakan untuk merubah nilai numerik menjadi nilai string karena memang untuk menampilkan nilai pada "Edit Text", nilai yang mau ditampilkan harus berupa string. • set(handles.txtUkuran,’string’,num2str(a)) : digunakan untuk mensetting string dari "Edit Text" dengan Tag "txtUkuran" yang kemudian diisi dengan nilai dari variabel a. iv. Tombol "Save" global capture [nama_file_simpan, path_simpan]=uiputfile(... {’*.jpg’,’File JPEG(*.jpg)’;

34 ’*.png’,’File PNG(*.png)’;... ’*.bmp’,’File BMP(*.bmp)’;... ’*.*’,’Semua file(*.*)’},... ’Menyimpan File Hasil Capture’); if ~isequal(nama_file_simpan,0) imwrite(capture,fullfile(path_simpan,... nama_file_simpan)); end v. Tombol "Exit" close; (c) Cara Penggunaan Cara menggunakan aplikasi ini sangatlah mudah. • Pertama - tama pilih resolusi video yang diinginkan melalui "Pop-up Menu". • Untuk menghidupkan Webcam, klik tombol "Video On". Gambar yang ditangkap webcam akan langsung ditampilkan pada "axes1" (sebelah kiri). • Untuk meng-capture gambar, klik tombol "Capture". Gambar hasil capture akan langsung ditampilkan pada "axes2" (sebelah kanan) dan ukuran matriksnya ditampilkan di bawahnya pada "Edit Text". • Untuk menyimpan hasil capture, klik tombol "Save", beri nama dan pilih format yang diinginkan, kemudian klik "OK". • Untuk mematikan webcam, tinggal klik tombol "Video Off". • Untuk keluar dari apilkasi, klik tombol "Exit". Gambar di bawah ini merupakan gambar hasil running dari "Aplikasi untuk Mengambil Gambar Melalui Webcam".

3. Sistem Pengenalan Wajah Menggunakan Histogram Citra Tentunya nilai histogram antara suatu citra dengan citra yang lain yang berbeda tentunya juga akan berbeda pula. Akan tetapi bila citra tersebut masih merupakan kelompok citra yang mempunyai kemiripan (misalkan sekumpulan citra wajah dari

35 satu orang) pastilah perbedaan histogram citra dari citra - citra tersebut tidak terlalu jauh. Nah, konsep inilah yang akan dipakai untuk Sistem Pengenalan Wajah. (a) Desain Tampilan Desain tampilan yang dibuat adalah sebagai berikut :

Dari gambar di atas terlihat beberapa component yang dipakai, yaitu : • "axes" yang digunakan ada 2 buah, yang sebelah kiri dengan Tag "axes1" digunakan untuk menampilkan citra wajah input, kemudian yang sebelah kanan dengan Tag "axes2" digunakan untuk menampilkan citra wajah hasil pengenalan. • "button" yang digunakan ada 4 buah, yakni : – Button dengan Tag btnOpen dan string OPEN digunakan untuk membuka file citra wajah dan menampilkannya pada "axes1". – Button dengan Tag btnUpdate dan string UPDATE digunakan untuk mencari nilai histogram dari masing - masing citra wajah yang ada dalam database dan menyimpannya dalam file "DFace.mat". – Button dengan Tag btnKenali dan string KENALI digunakan untuk melakukan prose pengenalan wajah dan kemudian menampilkan hasilnya pada "axes2". – Button dengan Tag btnKeluar dan string KELUAR digunakan untuk keluar dari aplikasi. (b) Kode Program i. Tombol "OPEN" global I [nama_file1, nama_path1]=uigetfile ( ... {’*.bmp’,’File BMP(*.bmp)’;... ’*.jpg’,’File JPEG(*.jpg)’;... ’*.png’,’File PNG(*.png)’;...

36 ’*.*’,’Semua file(*.*)’},... ’Buka File Citra Asli’); if ~isequal(nama_file1, 0) I=imread(fullfile(nama_path1,nama_file1)); axes(handles.axes1); imshow(I); else return; end ii. Tombol "UPDATE" a=size(dir(’DBase’)); jum_folder=a(1)-2; AHist=0:255; for i=1:jum_folder k=1; for j=1:5 I=imread(strcat(’DBase/S’,int2str(i),... ’/’,int2str(k),’.bmp’)); Hist=imhist(I); AHist=[AHist;Hist’]; k=k+2; end end save ’DFace’ AHist; msgbox(’Update Berhasil’) Keterangan : • dir(’DBase’) : digunakan untuk melakukan listing direktory pada folder "DBase". Biasanya direktori yang di list adalah sejumlah file + 2. • strcat(’DBase/’,jum_folder) : digunakan untuk menggabungkan antara string yang ditulis secara langsung dengan variabel. Dalam contoh di samping variabelnya adalah jum_folder. • save ’DFace’ AHist : digunakan untuk menyimpan variable AHist ke dalam file "DFace.mat" • msgbox(’Update Berhasil’) : digunakan untuk menampilkan tampilan GUI berupa Message Box dengan tulisan "Update Berhasil". iii. Tombol "KENALI" global I hist=imhist(I)’; load DFace; [x y]=size(AHist); jum=0; for i=2:x

37 for j=1:y jum = jum + (hist(j) - AHist(i,j))^2; end Jarak(i-1,1) =sqrt(jum); jum = 0; end [temp M] = min(Jarak); Folder=ceil(M/5); axes(handles.axes2); imshow(strcat(’DBase/S’,int2str(Folder),’/5.bmp’)) Keterangan : • [temp M] = min(Jarak) : digunakan untuk menentukan nilai minimal dari sekelompok nilai (data). Dalam contoh di samping, sekelompok nilai (data) tersebut disimpan dalam variabel Jarak. Hasil minimalnya disimpan dalam variabel temp, sedangkan posisinya dalam data disimpan dalam variabel M. • ceil(val) : digunakan untuk membulatkan ke atas dari nilai yang terdapat pada variabel val. Misalkan 2.2 akan dibulatkan ke 3, 4.9 akan dibulatkan ke 5, dan sebagainya. iv. Tombol "KELUAR" button = questdlg(’Apakah Anda ingin keluar?’, ... ’Konfirmasi Keluar’,’Ya’,’Tidak’,’Tidak’); switch button case ’Ya’, clc; close; case ’Tidak’, quit cancel; end (c) Cara Penggunaan Cara menggunakan aplikasi "Pengenalan Wajah" ini adalah sebagai berikut : • Sebelum menggunakan aplikasi "Pengenalan Wajah" ini, setting terlebih dahulu data wajah yang akan kita pakai. Untuk setiap orangnya diambil 10 sample wajah dan beri nama dengan nama "1.bmp","2.bmp", dan seterusnya sampai "10.bmp", kemudian dimasukkan dalam folder yang diberi nama "Si" dimana i adalah orang yang ke-... Jadi jika ada 10 orang berarti kita buat folder dengan nama "S1", "S2", "S3", dan seterusnya sampai "S10". Kemudian kesemua folder yang kita buat dimasukkan ke dalam folder yang diberi nama "DBase". • Untuk menggunakan aplikasi ini mudah sekali. Pertama - tama klik tombol "UPDATE" untuk mencari nilai histogram dari masing - masing citra wajah yang ada dalam folder "S1", "S2", dan seterusnya lalu nilainya akan disimpan dalam file "DFace.mat". Tidak semua citra wajah dicari

nilai histogramnya, hanya yang bernomor ganjil saja yang dicari nilainya. Untuk "UPDATE" ini cukuplah sekali saja diklik selama database wajah yang dipakai tidak berubah. • Kemudian untuk melakukan proses pengenalan klik tombol "OPEN", kemudian pilih gambar wajah yang tersimpan dalam database wajah, lalu klik "OK". Setelah gambar yang kita pilih tampil pada "axes" yang sebelah kiri, kemudian klik tombol "KENALI". Hasil wajah yang dikenali akan ditampilkan pada "axes" sebelah kanan. • Untuk keluar dari aplikai, tinggal klik tombol "KELUAR" lalu klik "Ya". Untuk membatalkan klik "Tidak". Gambar di bawah ini adalah gambar hasil running dari aplikasi "Pengenalan Wajah Menggunakan Histogram Citra".

Bagi yang menginginkan Source Code dari aplikasi - aplikasi di atas, silahkan menghubungi penulis. Contact person dari penulis ada di halaman Biografi di bagian terakhir.

38

39

Bibliography
[1] Siang, J.J. Jaringan Syaraf Tiruan dan Pemrogramannya Menggunakan Matlab. Penerbit ANDI, Yogyakarta, 2009. [2] Siang, J.J. Jaringan Syaraf Tiruan dan Pemrogramannya Menggunakan Matlab. Penerbit ANDI, Yogyakarta, 2009. [3] Mabrur, Andik. Pengenalan Wajah Menggunakan Metode Adjacent Pixel Intensity Difference Quantization Histogram Generation. Tugas Akhir Jurusan MatematikaITS, Surabaya, 2011. [4] Iqbal, Muhammad. Dasar Pengolahan Citra menggunakan MATLAB. IPB, Bogor, 2009. [5] AT&T Laboratories Cambridge, The Database of Faces, <URL:http://www.cl.cam.ac.uk/research/dtg/ attarchive/facedatabase.html>

40

BIOGRAFI PENULIS

Nama__ : Andik Mabrur, S.Si Alamat : RT 02, RW 06, Desa Bendilwungu, Kecamatan Sumbergempol, Kabupaten Tulungagung 66291 HP____ : 085645246656 Email_ : andik.math@gmail.com Blog__ : its-matematika.blogspot.com Motto_ : "Berusaha Bermanfaat untuk Orang Lain" Penulis lahir pada tanggal 15 Oktober 198x di kota yang begitu terkenal dengan kerajinan marmernya yakni Tulungagung. Penulis menempuh pendidikan TK, SD, MTs, dan SMK di Kota Tulungagung dari tahun 1992 sampai dengan tahun 2005. Setelah itu pada tahun 2006 penulis melanjutkan kuliah di Jurusan Matematika Institut Teknologi Sepuluh Nopember Surabaya. Pada saat kuliah itulah penulis banyak bergelut dengan program Matlab sampai Tugas Akhir yang dikerjakannyapun juga menggunakan bantuan Matlab. Tugas Akhir yang dikerjakan penulis adalah berhubungan citra dan juga berhubungan dengan pengenalan pola yang berjudul Pengenalan Wajah Menggunakan Metode Adjacent Pixel Intensity Difference Quantization Histogram Generation. Penulis saat ini sudah menyelesaikan pendidikan S1-nya dan sudah diwisuda pada bulan Maret 2011. Penulis juga pernah menjadi Juara I "Lomba Cipta Logo Arek ITS CAK!" dan sampai sekarang logo yang dibuatnya tetap dipakai oleh ITS sebagai logo kemahasiswaan. Di bawah ini adalah gambar logo tersebut.

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master Your Semester with a Special Offer from Scribd & The New York Times

Cancel anytime.