Pengolahan Citra Digital Menggunakan Matlab

40
1 Pengolahan Citra Digital Menggunakan MATLAB oleh : Andik Mabrur, S.Si Tulungagung, Juni 2011 www.its-matematika.blogspot.com Ditulis Menggunakan L A T E X

description

Merupakan buku untuk mempermudah Anda yang sedang belajar pengolahan citra digital menngunakan Matlab

Transcript of Pengolahan Citra Digital Menggunakan Matlab

Page 1: Pengolahan Citra Digital Menggunakan Matlab

1

Pengolahan Citra Digital Menggunakan

MATLAB

oleh :Andik Mabrur, S.Si

Tulungagung, Juni 2011

www.its-matematika.blogspot.com

Ditulis Menggunakan LATEX

Page 2: Pengolahan Citra Digital Menggunakan Matlab

2

1. Tentang MATLAB

1.1 Sejarah Matlab

Nama MATLAB merupakan singkatan dari matrix laboratory. MATLAB padaawalnya ditulis untuk memudahkan akses perangkat lunak matrik yang telah dibentukoleh LINPACK dan EISPACK. Saat ini perangkat MATLAB telah menggabung denganLAPACK dan BLAS library, yang merupakan satu kesatuan dari sebuah seni tersendiridalam perangkat lunak untuk komputasi matrik.

1.2 Kegunaan Matlab

Dalam lingkungan perguruan tinggi teknik, Matlab merupakan perangkat standaruntuk memperkenalkan dan mengembangkan penyajian materi matematika, rekayasa dankelimuan. Di industri, MATLAB merupakan perangkat pilihan untuk penelitian denganproduktifitas 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 dengannama toolbox. Sangat penting bagi seorang pengguna Matlab, toolbox mana yang man-dukung untuk learn dan apply technologi yang sedang dipelajarinya. Toolbox toolbox inimerupakan kumpulan dari fungsi-fungsi MATLAB (M-files) yang telah dikembangkanke suatu lingkungan kerja MATLAB untuk memecahkan masalah dalam kelas particu-lar. Area-area yang sudah bisa dipecahkan dengan toolbox saat ini meliputi pengolahansinyal, system kontrol, neural networks, fuzzy logic, wavelets, dan lain-lain.

Selain toolbox, matlab juga dilengakapi dengan Simulink yang sangat powerfulluntuk mensimulasikan dan menyelesaikan masalah - masalah yang berhubungan denganPemodelan Matematika. Dengan Simulink, kita dapat dengan mudah mengecek kestabi-lan suatu model Matematika yang kita punya.

Sebagai sebuah sistem, MATLAB tersusun dari 5 bagian utama:

Page 3: Pengolahan Citra Digital Menggunakan Matlab

3

1. Development Environment. Merupakan sekumpulan perangkat dan fasilitas yangmembantu anda untuk menggunakan fungsi-fungsi dan file-file MATLAB. Beber-apa perangkat ini merupakan sebuah graphical user interfaces (GUI). Termasuk di-dalamnya adalah MATLAB desktop dan Command Window, command history, se-buah editor dan debugger, dan browsers untuk melihat help, workspace, files, dansearch path.

2. MATLAB Mathematical Function Library. Merupakan sekumpulan algoritmakomputasi mulai dari fungsi-fungsi dasar sepertri: sum, sin, cos, dan complex arith-metic, sampai dengan fungsi-fungsi yang lebih kompek seperti matrix inverse, ma-trix eigenvalues, Bessel functions, dan fast Fourier transforms.

3. MATLAB Language. Merupakan suatu high-level matrix/array language den-gan control flow statements, functions, data structures, input/output, dan fitur-fiturobject-oriented programming. Ini memungkinkan bagi kita untuk melakukan ke-dua hal baik "pemrograman dalam lingkup sederhana " untuk mendapatkan hasilyang cepat, dan "pemrograman dalam lingkup yang lebih besar" untuk memper-oleh hasil-hasil dan aplikasi yang komplek.

4. Graphics. MATLAB memiliki fasilitas untuk menampilkan vektor dan matrik se-bagai suatu grafik. Di dalamnya melibatkan high-level functions (fungsi-fungsilevel tinggi) untuk visualisasi data dua dimensi dan data tiga dimensi, image pro-cessing, animation, dan graphics presentation. Ini juga melibatkan fungsi level ren-dah yang memungkinkan bagi anda untuk membiasakan diri untuk memunculkangrafik mulai dari bentuk yang sederhana sampai dengan tingkatan graphical userinterfaces (GUI) pada aplikasi MATLAB anda.

5. MATLAB Application Program Interface (API). Merupakan suatu library yangmemungkinkan program yang telah anda tulis dalam bahasa C dan Fortran mampuberinterakasi dengan MATLAB. Ini melibatkan fasilitas untuk pemanggilan rou-tines dari MATLAB (dynamic linking), pemanggilan MATLAB sebagai sebuahcomputational 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 sangatmudah membuka program Matlab. Caranya yaitu klik Menu Start pada Desktop, ke-mudian pilih All Program, lalu pilih program Matlab sesuai dengan versi yang sudahterinstal pada komputer atau tinggal klik 2 kali pada shortcut program Matlab pada Desk-top. Tampilan program Matlab ketika dibuka pertama kali adalah seperti gambar di bawahini.

Page 4: Pengolahan Citra Digital Menggunakan Matlab

4

2.2 Memulai Memakai MatlabUntuk 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 adalahoperasi penambahan.

>> a=[1 2 3 4]

a =

Page 5: Pengolahan Citra Digital Menggunakan Matlab

5

1 2 3 4

>> b=[8 7 6 5]

b =

8 7 6 5

>> c=a+b

c =

9 9 9 9

>>

Untuk percobaan ketiga, akan dicoba program yang memanfaatkan fungsi - fungsibawaan Matlab seperti Sinus, Cosinus, dan pi. Selain itu juga akan dicoba perintah denganmenambahkan ; yang berfungsi untuk menyembunyikan hasil yang beru saja dikerjakandengan Matlab.

>> A=pi/6;>> sin(A)

ans =

0.5000

>> cos(A)

ans =

0.8660

>>

3. Pemrograman M-File MatlabPemrograman dengan M-File Matlab memberikan kontrol lebih banyak diband-

ingkan dengan pemrograman dengan Command Window seperti yang dibicarakan se-belumnya. Dengan M-File kita bisa melakukan percabangan, perulangan, pembuatanfungsi, dan lain - lain. Struktur Program M-File mirip dengan bahasa C yang membagiblok program berupa fungsi-fungsi. Tiap fungsi dapat memanggil fungsi-fungsi yang lain.Script dalam Command Window berguna untuk menyelesaikan permasalahan yang pen-

Page 6: Pengolahan Citra Digital Menggunakan Matlab

6

dek. Sebaliknya M-File dapat dipakai untuk membuat berbagai aplikasi sesuai keinginanpemakai.

Dalam bab ini dibahas tentang dasar-dasar pembuatan program dalam M-File.Program-program yang membutuhkan fungsi yang lebih kompleks contohnya dapat dili-hat pada Demo atau Help yang menjadi fasilitas Matlab.

Jendela M-File dapat dibuka melalui menu File->New->M->File atau langsungsaja 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. Sepertilayaknya fungsi - fungsi yang sudah terdefinisi di Matlab, kita juga bisa membuat fungsisendiri 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 contohdefinisi di atas tadi. Berikut ini adalah fungsi lengkapnya.

function Luas = FLuas (panjang,lebar)Luas=panjang*lebar;

Page 7: Pengolahan Citra Digital Menggunakan Matlab

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 fumgsiini 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 KeyboardUntuk dapat melakukan inputan di Command Window Matlab, kita bisa menggu-

nakan 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, makatampilan di Command Window adalah sebagai berikut :

Masukkan panjang Sisi Alas : 20Masukkan panjang Sisi Atas : 15Masukkan tinggi : 8Luas Trapesium adalah :

1200

>>

Page 8: Pengolahan Citra Digital Menggunakan Matlab

8

3.3 Contoh Kasus Penyelesaian dengan M-File

1. Menghitung Luas Permukaan dan Volume Balok. Untuk menyelesaikan per-masalahan ini kita akan memakai inputan yang tetap berupa panjang, lebar, dantinggi. Untuk output dari program ini adalah berupa Luas Permukaan dan Volumebalok 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*tinggiVolume=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 programini, akan dipakai masukan berupa nilai suku pertama, nilai beda, dan nilai n. Inputanakan dibuat dinamis yang dapat langsung diinputkan dari keyboard ketika runningprogram berlangsung. Hasil dari program ini yang berupa n suku pertama dari deretAritmatika 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);endhasil

Hasil running-nya di Command Window adalah seperti di bawah ini.

Page 9: Pengolahan Citra Digital Menggunakan Matlab

9

Masukkan suku pertama : 5Masukkan beda : 3Masukkan nilai n : 7

hasil =

5 8 11 14 17 20 23

>>

4. Citra Digital dan Pengolahannya di Matlab

4.1 Citra DigitalSebuah citra digital adalah kumpulan piksel-piksel yang disusun dalam larik dua

dimensi. Indeks baris dan kolom (x,y) dari sebuah piksel yang dinyatakan dalam bilan-gan bulat dan nilai-nilai tersebut mendefinisikan suatu ukuran intensitas cahaya pada titiktersebut. Satuan atau bagian terkecil dari suatu citra disebut piksel (picture element).Umumnya citra dibentuk dari persegi empat yang teratur sehingga jarak horizontal danvertikal antara piksel satu dengan yang lain adalah sama pada seluruh bagian citra. Pik-sel (0,0) terletak pada sudut kiri atas pada citra, dimana indeks x bergerak ke kanan danindeks y bergerak ke bawah. Untuk menunjukkan koordinat (m-1,n-1) digunakan posisikanan bawah dalam citra berukuran m x n pixel. Hal ini berlawanan untuk arah vertikaldan horizontal yang berlaku pada sistem grafik dalam matematika.

Video sebenarnya juga merupakan salah satu bentuk dari citra digital. Video meru-pakan kumpulan dari beberapa frame dari citra digital. Satu frame merupakan satu citradigital. Oleh karena itu, apabila di video ada satuan yang menyatakan 12 fps(frame persecond) artinya bahwa video tersebut memainkan 12 frame/citra digital dalam tiap de-tiknya.

4.2 Membaca File Citra Digital di Matlab dan MenampilkannyaDalam 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 citradigital diwaklili oleh sebuah matriks berukuran 1x1 apabila citra tersebut berupa citraGrayscale atau citra Biner, dan 3 matriks apabila citra digital berupa citra RGB. Misalkankita punya citra digital berukuran 640x480 pixel, maka sebenarnya citra tersebut diwakilioleh 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 kemu-dian disimpan dalam variabel "A" dalam bentuk matriks penyusun citra.

Sedangkan untuk menampilkan file citra yang telah dibaca digunakan perintah :

Page 10: Pengolahan Citra Digital Menggunakan Matlab

10

imshow(A)

"A" merupakan variabel tempat menyimpan matriks penyusun citra yang telah dibacasebelumnya.

Untuk mempermudah pemahaman, akan langsung digunakan contoh. Misalkankita akan membaca sebuah file citra dengan nama file "logo-batu.jpg", kemudian akanlangsung ditampilkan. Ingat!!! Sebelum di-running simpan filenya terlebih dahulu.

clc;clear;A=imread(’logo-batu.jpg’);%Membaca file citraimshow(A)%Menampilkan file citra

Hasil running-nya adalah sebagai berikut :

Untuk contoh kedua, kita masih akan membaca file yang sama, akan tetapi kaliini akan diambil masing - masing matriks penyusun citra (matriks R, matriks G, danMatriks B) karena memang file yang dibaca adalah gambar RGB (berwarna). Semuamatriks ini kemudian akan ditampilkan ke dalam 1 figure (plot). Berikut ini adalah listingprogramnya yang ditulis dalam M-File.

clc;clear;A=imread(’logo-batu.jpg’);%Membaca file citrared=A(:,:,1);%Mengambil matriks penyusun citra merahgreen=A(:,:,2);%Mengambil matriks penyusun citra hijaublue=A(:,:,3);%Mengambil matriks penyusun citra birusubplot(2,2,1)imshow(A)subplot(2,2,2)imshow(red)

Page 11: Pengolahan Citra Digital Menggunakan Matlab

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 adalahdengan menuliskan direktori tempat file berada + nama_file. Misalkan filenya berada padadirektori "D:/Picture", maka tinggal ditulis saja :

A=imread(’D:/Picture/logo-batu.jpg’)

4.3 Membaca File Video di Matlab dan MenampilkannyaTidak 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 2fungsi 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 menampilkanvideonya menggunakan :

movie(vid);

• Untuk yang membacanya menggunakan fungsi video=mmreader(’nama_file’), makamenampilkannya adalah dengan menggunakan :

Page 12: Pengolahan Citra Digital Menggunakan Matlab

12

imshow(vd);

Dengan cara ini maka yang dapat ditampilkan hanyalah satu frame sesuai denganframe yang dibaca dengan syntax vd=read(video,frame). Apabila ingin ditampilkanseperti layaknya video, maka harus dilakukan perulangan sesuai dengan jumlahframe dalam video yang dibaca tersebut.

Untuk mempermudah pemahaman, maka akan langsung digunakan contoh. Mis-alkan 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 videomovie(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 sehinggatampilannya akan seperti video.

clc;clear;video = mmreader(’1-1.avi’); %Membaca file videoukuran = size(read(video1));%Menampilkan ukuran videoframe=ukuran(4); %Menghitung jumlah framefor i=1:frame

vd=read(video,i);imshow(vd)

end

Page 13: Pengolahan Citra Digital Menggunakan Matlab

13

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

4.4 Pengolahan Citra Digital yang Dapat Dilakukan dengan FungsiBawaan Matlab

Ada beberapa pengolahan citra yang bisa kita lakukan dengan fungsi - fungsi yangsudah 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 pen-gubahan ini, matriks penyusun citra yang sebelumnya 3 matriks akan berubah men-jadi 1 matriks saja. Pengubahan dari citra berwarna ke bentuk grayscale biasanyamengikuti aturan sebagai berikut :

I(i, j) =R(i, j) + G(i, j) + B(i, j)

3

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 :

Page 14: Pengolahan Citra Digital Menggunakan Matlab

14

clc;clear;RGB=imread(’logo-bitung.jpg’);I=rgb2gray(RGB); %Proses Grayscalingsubplot(1,2,1)imshow(RGB)subplot(1,2,2)imshow(I)

Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimanagambar yang di sebelah kiri adalah gambar asli, sedangkan yang di sebelah kananadalah gambar setelah mengalami proses Grayscaling.

2. Binerisasi CitraBinerisasi citra merupakan proses merubah citra ke dalam bentuk biner (0 dan 1).Dengan merubah ke bentuk biner, citra hanya akan mempunyai 2 warna yakni hitamdan 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 citrasubplot(1,2,1)imshow(RGB)subplot(1,2,2)imshow(I)

Page 15: Pengolahan Citra Digital Menggunakan Matlab

15

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

3. Rotasi Citra

Rotasi citra di sini maksudnya adalah memutar citra sesuai dengan sudut yang diten-tukan 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 yangtelah dibaca. sedangkan "angle" merupakan besarnya sudut rotasi dari citra dalamderajat berlawanan arah dengan arah jarum jam. Berikut ini adalah contoh lengkap-nya 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 dimanagambar yang di sebelah kiri adalah gambar asli, sedangkan yang di sebelah kananadalah gambar setelah mengalami proses Rotasi citra sebesar 45 derajat.

Page 16: Pengolahan Citra Digital Menggunakan Matlab

16

4. Cropping Citra

Cropping citra artinya adalah pengambilan bagian tertentu dari suatu citra digitalmenjadi matriks baru yang independent. Tentu saja cropping ini sangat bergunaapabila kita hanya membutuhkan bagian tertentu dari suatu citra digital. Misalkansaja kita punya digital foto seluruh badan, padahal yang kita butuhkan hanya seten-gah badan, tentunya kita akan menggunakan cropping ini untuk mengambil bagianyang setengah badan tersebut. Untuk bisa melakukan cropping, di Matlab dapatmenggunakan fungsi :

B = imcrop(A,[a b c d]);

"A" merupakan matriks penyusun citra, "a" dan "b" merupakan titik awal mulainyacropping, sedangkan "c" dan "d" merupakan besarnya cropping yang dilakukandalam satuan pixel. Berikut ini adalah contoh lengkapnya ketika diterapkan dalamsebuah 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 dimanagambar yang di sebelah kiri adalah gambar asli, sedangkan yang di sebelah kananadalah gambar yang sudah dicrop.

Page 17: Pengolahan Citra Digital Menggunakan Matlab

17

5. Resizing CitraResizing citra artinya adalah mengubah besarnya ukuran citra digital dalam pixel.Ada kalanya ukurannya berubah menjadi lebih kecil dari file aslinya dan ada kalanyasebaliknya. 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, sedan-gkan "ncols" adalah jumlah kolom matriks yang baru. Berikut ini adalah contohpenerapannya 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)

Page 18: Pengolahan Citra Digital Menggunakan Matlab

18

Perintah size() digunakan untuk mencari ukuran dari suatu matriks kemudian menampilkan-nya di Command Window. Hasil running-nya di Command Window :

ans =

243 250 3

ans =

122 125 3

ans =

292 300 3

ans =

100 70 3

>>

Dari sini terlihat bahwa ukuran matriksnya berubah - ubah dari ukuran aslinya (nilaiyang pertama) karena memang telah dilakukan resizing pada matriks citra. Sedan-gkan hasil tampilan citranya adalah seperti gambar di bawah ini, dimana yang kiriatas adalah citra asli, kanan atas adalah citra dengan skala 0.5, kiri bawah adalahcitra dengan skala 1.2, dan kanan bawah adalah citra dengan resize ukuran 100x70pixel.

Page 19: Pengolahan Citra Digital Menggunakan Matlab

19

6. Filtering CitraFiltering adalah suatu proses dimana diambil sebagian sinyal dari frekwensi tertentudan membuang sinyal pada frekwensi yang lain. Filtering pada citra juga menggu-nakan prinsip yang sama, yaitu mengambil fungsi citra pada frekwensi - frekwensitertentu 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)

Page 20: Pengolahan Citra Digital Menggunakan Matlab

20

Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimanagambar yang di sebelah kiri atas adalah gambar asli, di sebelah kanan atas adalahgambar 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. Untukyang 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 dimanagambar yang di sebelah kiri atas adalah gambar asli, di sebelah kanan atas adalahgambar dengan filter ’motion’ dengan parameternya, di sebelah kiri bawah adalahgambar dengan filter ’log’ dengan parameternya, sedangkan yang kanan bawahadalah gambar dengan filter ’laplacian’ juga dengan parameternya.

Page 21: Pengolahan Citra Digital Menggunakan Matlab

21

7. Menambahkan Gangguan (Noise) pada CitraUntuk bisa menambahkan gangguan (noise) pada citra digital kita bisa menggu-nakan fungsi :

J = imnoise(I,type)J = imnoise(I,type,parameters)

"I" merupakan matriks penyusun citra, "type" merupakan jenis metode penamba-han 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 intensity-dependent.

• ’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)

Page 22: Pengolahan Citra Digital Menggunakan Matlab

22

subplot(2,2,3)imshow(N2)subplot(2,2,4)imshow(N3)

Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimanagambar yang di sebelah kiri atas adalah gambar asli, di sebelah kanan atas adalahgambar dengan noise ’gaussian’ , di sebelah kiri bawah adalah gambar dengannoise ’salt & pepper’, sedangkan yang kanan bawah adalah gambar dengan noise’speckle’.

8. Histogram CitraHistogram citra adalah grafik yang menggambarkan penyebaran nilai intensitaspixel dari suatu citra. Histogram dapat menjadi penunjuk kadar kecerahan (bright-ness) dan kontras citra. Normalnya nilai histogram dari suatu citra adalah 0-255,begitu pula dengan histogram citra bawaan dari Matlab. Untuk bisa menampilkanhistogram citra, maka digunakan fungsi :

imhist(Matriks-Citra)

Perlu diperhatikan bahwa imhist hanya dapat digunakan untuk matrik image 1 di-mensi sehingga bila diimplementasikan pada matriks gambar maka hanya berupamatriks merah saja, hijau saja, biru saja atau grayscale. Berikut ini adalah contohlengkapnya 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)

Page 23: Pengolahan Citra Digital Menggunakan Matlab

23

Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimanagambar yang di sebelah kiri adalah gambar citra grayscale, sedangkan yang di se-belah kanan adalah histogramnya.

Nah, bila tadi hanya bisa menampilkan histogram dari 1 matriks citra, maka den-gan memanfaatkan fungsi imhist() kita juga bisa menampilkan histogram dari 3matriks citra sekaligus. Fungsi imhist() selain mampu menampilkan histogram darimatriks citra, fungsi ini juga mampu untuk menghitung besarnya histogram citra.Kemampuan inilah yang bisa kita manfaatkan untuk menampilkan histogram darikeseluruhan matriks penyusun citra. Kode programnya adalah sebagai berikut :

clc;clear;A=imread(’logo-bitung.jpg’);%Membaca file citrared=A(:,:,1);%Mengambil matriks penyusun citra merahgreen=A(:,:,2);%Mengambil matriks penyusun citra hijaublue=A(:,:,3);%Mengambil matriks penyusun citra biruhred=imhist(red);%Menghitung histogram matriks citra biruhgreen=imhist(green);hblue=imhist(blue);range=0:255;subplot(1,2,1)imshow(A)subplot(1,2,2)%Plot histogram matriks citra merahplot(range,hred,’Color’,’red’);hold onplot(range,hgreen,’Color’,’green’);plot(range, hblue,’Color’,’blue’);

Page 24: Pengolahan Citra Digital Menggunakan Matlab

24

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

9. Deteksi Tepi Seleksi objek biasanya selanjutnya dilakukan langkah deteksi tepidalam proses pengolahan citra, di MATLAB proses pendeteksian tepi dilakukandengan fungsi :

BW = edge(I)BW = edge(I,’Metode’)

"I" merupakan matriks penyusun citra (harus 1 matriks). Untuk "Metode" ada be-berapa metode yang bisa dipakai yakni sobel, prewitt, roberts, Canny, laplacian ofgaussian, dan zero cross. Yang penting diperhatikan pada deteksi tepi bahwa hanyadapat 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)

Page 25: Pengolahan Citra Digital Menggunakan Matlab

25

imshow(E2)subplot(2,2,4)imshow(E3)

Hasil running programnya adalah seperti terlihat pada gambar di bawah ini dimanagambar yang di sebelah kiri atas adalah gambar citra grayscale, sedangkan yang disebelah kanan atas adalah gambar hasil deteksi tepi tanpa menggunakan metode,bawah kiri adalah hasil deteksi tepi menggunakan metode ’prewitt’, sedangkanbawah kanan adalah hasil deteksi tepi menggunakan metode ’Canny’.

10. Convert RGB ke NTSCSelain 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 matrikslain yakni Y, I dan Q yang merupakan komponen warna NTSC. Untuk bisa melakukankonversi RGB ke NTSC di Matlab sangatlah mudah karena memang disediakanfungsi 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);

Page 26: Pengolahan Citra Digital Menggunakan Matlab

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 dimanagambar yang di sebelah kiri atas adalah gambar citra dengan warna NTSC, sedan-gkan yang di sebelah kanan atas adalah gambar citra Y, bawah kiri adalah gambarcitra I, sedangkan bawah kanan adalah gambar citra Q.

Nah, untuk melakukan hal sebaliknya, yakni mengkonversi NTSC ke RGB kita bismenggunakan 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 warnaYBcBr karena memang matlab sudah menyediakannya dengan fungsi :

Page 27: Pengolahan Citra Digital Menggunakan Matlab

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 YCb=YCBCR(:,:,2); %Ekstraksi matriks BcCr=YCBCR(:,:,3); %Ekstraksi matriks Brsubplot(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 dimanagambar yang di sebelah kiri atas adalah gambar citra dengan warna YCbCr, sedan-gkan yang di sebelah kanan atas adalah gambar citra Y, bawah kiri adalah gambarcitra Cb, sedangkan bawah kanan adalah gambar citra Cr.

Kemudian, untuk melakukan hal sebaliknya, yakni mengkonversi YCbCr ke RGBkita bisa menggunakan fungsi :

RGB = ycbcr2rgb(YCBCR)

Page 28: Pengolahan Citra Digital Menggunakan Matlab

28

4.4 Contoh Aplikasi yang Memanfaatkan Pengolahan CitraDengan pengolahan Citra, banyak aplikasi(terapan) yang bisa kita gunakan mis-

alkan saja pattern recognition (pengenalan pola), perbaikan citra, normalisasi citra, danlain - lain. Adapun alikasi pengolahan citra yang akn dibahas di sini tidak hanya dibuatdengan menggunakan M-File saja, akan tetapi dibuat dengan menggunakan GUI (GraphicUser Interface) yang akan memudahkan user untuk memakai aplikasi.

Kode program yang akan ditampilkan di sini adalah kode program yang terletakpada tombol (button) dan dituliskan di bawah kode program tertentu. Misalkan yangdijelaskan adalah kode program pada tombol btnVid_on, maka kode program yang dita-mpilkan 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 caramengurangi detail citra. Dengan dilakukan kompresi, maka ukuran citra akan men-jadi lebih kecil sehingga akan bisa mempercepat proses transfer file.

(a) Desain TampilanDesain 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" di-gunakan untuk menampilkan citra input, kemudian yang sebelah kanandengan Tag "axes2" digunakan untuk menampilkan citra yang sudahdikompress.

Page 29: Pengolahan Citra Digital Menggunakan Matlab

29

• Pop-up Menu yang dipakai hanya 1 buah dengan Tag Popup dan string-nya diisi dengan :

255075100

Ini merupakan pilihan - pilihan yang kualitas dari citra yang akan disim-pan dalam persen.

• Button yang dipakai sebanyalk 3 buah yaitu :– Button dengan Tag btnOpen dan string OPEN digunakan untuk mem-

buka file citra yang akan dikompress dan menampilkannya pada "axes1".– Button dengan Tag btnKompress dan string KOMPRESS digunakan

untuk melakukan proses kompresi citra digital kemudian menampilkan-nya pada "axes2".

– Button dengan Tag btnKeluar dan string KELUAR digunakan untukkeluar dari aplikasi.

(b) Kode Programi. 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);

elsereturn;

end

Keterangan :• uigetfile() : merupakan fungsi untuk menampilkan tampilan GUI un-

tuk 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’);

Page 30: Pengolahan Citra Digital Menggunakan Matlab

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 dalamvariabel val.

• str=get(handles.Popup,’string’) : digunakan untuk mengambil stringdari "Pop-up Menu" dengan Tag Popup.

• strval : digunakan untuk mengambil string dengan value tertentu.• str2num() : digunakan untuk merubah nilai string menjadi nilai nu-

merik.• 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 menampilkanpertanyaan pada use beserta jawabannya. Tentu saja di sini pertanyaan-nya adalah "Apakah anda mau keluar ?" dengan jawaban "Ya" dan"Tidak" dengan default jawaban pada "Tidak". Sedangkan nama GUI-nya adalah "Konfirmasi Keluar".

Page 31: Pengolahan Citra Digital Menggunakan Matlab

31

(c) Cara Penggunaan

Cara menggunakan aplikasi ini sangatlah mudah, pertama - tama buka filecitra dengan klik tombol "OPEN", lalu pilih citra yang mau dikompress, laluklik OK. Setelah file citra yang dibuka ditampilkan pada axes1 (sebelah kiri),pilih kualitas citra yang akan dikompress pada "Pop-up Menu". Setelah ituuntuk melakukan kompresi, tinggal klik tombol "KOMPRESS" lau simpancitra yang dikompress dengan nama dan format yang kamu inginkan, lalu klikOK.

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 untukKompresi 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 membutuhkanwebcam yang terinstal pada komputer yang kita gunakan.

Dengan toolbox image processing yang ada di Matlab kita bisa melakukan pengam-bilan foto melalui webcam yang kita punya. Cara kerja aplikasi ini adalah denganmengambil 1 frame dari gambar yang ditangkap melalui webcam dan videonyaditampilkan di layar. Ukuran dari gambar yang diambil tentu saja sesuai denganresolusi dari webcam yang dipakai untuk menampilkan video.

Resolusi - resolusi webcam (dalam pixel) yang dipakai pada aplikasi ini ada 5macam, yaitu 640x480, 352x288, 320x240, 176x144, 160x120.

(a) Desain Tampilan

Desain tampilan yang dibuat adalah sebagai berikut :

Page 32: Pengolahan Citra Digital Menggunakan Matlab

32

Dari gambar di atas terlihat beberapa component yang dipakai, yaitu :

• axes yang dipakai adalah 2 axes yaitu axes1 untuk menampilkan videodari webcam dan axes2 untuk menampilkan hasil capture video.

• Pop-up Menu yang dipakai hanya 1 dengan nama (Tag) popup dan string-nya diisi dengan :

YUY2_640x480YUY2_352x288YUY2_320x240YUY2_176x144YUY2_160x120

Ini merupakan pilihan - pilihan yang menentukan resolusi video yangakan ditampilkan pada aplikasi.

• Edit Text yang dipakai hanya 1 dengan nama (Tag) txtUkuran dan stringkosong digunakan untuk menampilkan ukuran dari gambar hasil capturevideo.

• 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 un-

tuk 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 meny-

impan hasil capture.– Button dengan Tag btnExit dan string Exit digunakan untuk keluar

dari aplikasi.

(b) Kode ProgramKode program di sini akan dijelaskan berdasarkan tombol - tombol yang di-pakai, yaitu :

Page 33: Pengolahan Citra Digital Menggunakan Matlab

33

i. Tombol "Video On"global vidval=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 vari-

abel global yang artinya variabel ini akan dapat diakses oleh tombol- tombol yang lain

ii. Tombol "Video Off"global viddelete(vid);

iii. Tombol "Capture"global vid capturecapture= 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 ke-mudian menyimpannya dalam variabel capture.

• num2str() : digunakan untuk merubah nilai numerik menjadi nilaistring karena memang untuk menampilkan nilai pada "Edit Text",nilai yang mau ditampilkan harus berupa string.

• set(handles.txtUkuran,’string’,num2str(a)) : digunakan untuk men-setting string dari "Edit Text" dengan Tag "txtUkuran" yang ke-mudian diisi dengan nilai dari variabel a.

iv. Tombol "Save"global capture[nama_file_simpan, path_simpan]=uiputfile(...

{’*.jpg’,’File JPEG(*.jpg)’;

Page 34: Pengolahan Citra Digital Menggunakan Matlab

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 PenggunaanCara menggunakan aplikasi ini sangatlah mudah.

• Pertama - tama pilih resolusi video yang diinginkan melalui "Pop-upMenu".

• Untuk menghidupkan Webcam, klik tombol "Video On". Gambar yangditangkap webcam akan langsung ditampilkan pada "axes1" (sebelahkiri).

• Untuk meng-capture gambar, klik tombol "Capture". Gambar hasil cap-ture akan langsung ditampilkan pada "axes2" (sebelah kanan) dan uku-ran matriksnya ditampilkan di bawahnya pada "Edit Text".

• Untuk menyimpan hasil capture, klik tombol "Save", beri nama dan pilihformat 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 untukMengambil Gambar Melalui Webcam".

3. Sistem Pengenalan Wajah Menggunakan Histogram Citra

Tentunya nilai histogram antara suatu citra dengan citra yang lain yang berbedatentunya juga akan berbeda pula. Akan tetapi bila citra tersebut masih merupakankelompok citra yang mempunyai kemiripan (misalkan sekumpulan citra wajah dari

Page 35: Pengolahan Citra Digital Menggunakan Matlab

35

satu orang) pastilah perbedaan histogram citra dari citra - citra tersebut tidak terlalujauh. 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 sebelahkanan dengan Tag "axes2" digunakan untuk menampilkan citra wajahhasil pengenalan.

• "button" yang digunakan ada 4 buah, yakni :– Button dengan Tag btnOpen dan string OPEN digunakan untuk mem-

buka 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 adadalam database dan menyimpannya dalam file "DFace.mat".

– Button dengan Tag btnKenali dan string KENALI digunakan un-tuk melakukan prose pengenalan wajah dan kemudian menampilkanhasilnya pada "axes2".

– Button dengan Tag btnKeluar dan string KELUAR digunakan untukkeluar 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)’;...

Page 36: Pengolahan Citra Digital Menggunakan Matlab

36

’*.*’,’Semua file(*.*)’},...’Buka File Citra Asli’);

if ~isequal(nama_file1, 0)I=imread(fullfile(nama_path1,nama_file1));axes(handles.axes1);imshow(I);

elsereturn;

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;

endendsave ’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 an-tara string yang ditulis secara langsung dengan variabel. Dalam con-toh di samping variabelnya adalah jum_folder.

• save ’DFace’ AHist : digunakan untuk menyimpan variable AHist kedalam file "DFace.mat"

• msgbox(’Update Berhasil’) : digunakan untuk menampilkan tampi-lan GUI berupa Message Box dengan tulisan "Update Berhasil".

iii. Tombol "KENALI"global Ihist=imhist(I)’;load DFace;[x y]=size(AHist);jum=0;for i=2:x

Page 37: Pengolahan Citra Digital Menggunakan Matlab

37

for j=1:yjum = jum + (hist(j) - AHist(i,j))^2;

endJarak(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, sekelompoknilai (data) tersebut disimpan dalam variabel Jarak. Hasil minimal-nya disimpan dalam variabel temp, sedangkan posisinya dalam datadisimpan dalam variabel M.

• ceil(val) : digunakan untuk membulatkan ke atas dari nilai yang ter-dapat pada variabel val. Misalkan 2.2 akan dibulatkan ke 3, 4.9 akandibulatkan 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 PenggunaanCara menggunakan aplikasi "Pengenalan Wajah" ini adalah sebagai berikut :

• Sebelum menggunakan aplikasi "Pengenalan Wajah" ini, setting terlebihdahulu data wajah yang akan kita pakai. Untuk setiap orangnya diam-bil 10 sample wajah dan beri nama dengan nama "1.bmp","2.bmp", danseterusnya sampai "10.bmp", kemudian dimasukkan dalam folder yangdiberi nama "Si" dimana i adalah orang yang ke-... Jadi jika ada 10 orangberarti kita buat folder dengan nama "S1", "S2", "S3", dan seterusnyasampai "S10". Kemudian kesemua folder yang kita buat dimasukkan kedalam folder yang diberi nama "DBase".

• Untuk menggunakan aplikasi ini mudah sekali. Pertama - tama klik tombol"UPDATE" untuk mencari nilai histogram dari masing - masing citrawajah yang ada dalam folder "S1", "S2", dan seterusnya lalu nilainyaakan disimpan dalam file "DFace.mat". Tidak semua citra wajah dicari

Page 38: Pengolahan Citra Digital Menggunakan Matlab

nilai histogramnya, hanya yang bernomor ganjil saja yang dicari nilainya.Untuk "UPDATE" ini cukuplah sekali saja diklik selama database wajahyang dipakai tidak berubah.

• Kemudian untuk melakukan proses pengenalan klik tombol "OPEN",kemudian pilih gambar wajah yang tersimpan dalam database wajah, laluklik "OK". Setelah gambar yang kita pilih tampil pada "axes" yang se-belah kiri, kemudian klik tombol "KENALI". Hasil wajah yang dikenaliakan 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 "PengenalanWajah Menggunakan Histogram Citra".

Bagi yang menginginkan Source Code dari aplikasi - aplikasi di atas, silahkanmenghubungi penulis. Contact person dari penulis ada di halaman Biografi dibagian terakhir.

38

Page 39: Pengolahan Citra Digital Menggunakan Matlab

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 IntensityDifference Quantization Histogram Generation. Tugas Akhir Jurusan Matematika-ITS, 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>

Page 40: Pengolahan Citra Digital Menggunakan Matlab

40

BIOGRAFI PENULIS

Nama__ : Andik Mabrur, S.Si

Alamat : RT 02, RW 06, Desa Bendilwungu, Kecamatan Sumbergempol, KabupatenTulungagung 66291

HP____ : 085645246656

Email_ : [email protected]

Blog__ : its-matematika.blogspot.com

Motto_ : "Berusaha Bermanfaat untuk Orang Lain"

Penulis lahir pada tanggal 15 Oktober 198x di kota yang begitu terkenal dengan keraji-nan marmernya yakni Tulungagung. Penulis menempuh pendidikan TK, SD, MTs, danSMK di Kota Tulungagung dari tahun 1992 sampai dengan tahun 2005. Setelah itu padatahun 2006 penulis melanjutkan kuliah di Jurusan Matematika Institut Teknologi SepuluhNopember Surabaya. Pada saat kuliah itulah penulis banyak bergelut dengan programMatlab sampai Tugas Akhir yang dikerjakannyapun juga menggunakan bantuan Matlab.Tugas Akhir yang dikerjakan penulis adalah berhubungan citra dan juga berhubungandengan pengenalan pola yang berjudul Pengenalan Wajah Menggunakan Metode Ad-jacent Pixel Intensity Difference Quantization Histogram Generation. Penulis saat inisudah menyelesaikan pendidikan S1-nya dan sudah diwisuda pada bulan Maret 2011.

Penulis juga pernah menjadi Juara I "Lomba Cipta Logo Arek ITS CAK!" dan sampaisekarang logo yang dibuatnya tetap dipakai oleh ITS sebagai logo kemahasiswaan. Dibawah ini adalah gambar logo tersebut.