Anda di halaman 1dari 17

MATLAB TUTORIAL

Dasar Pengolahan Citra menggunakan MATLAB


Romi Fadly

romi.fadly@unila.ac.id

TE TA ! MATLAB
MATLAB adalah sebuah bahasa dengan (high-performance) kinerja tinggi untuk komputasi masalah teknik. Matlab mengintegrasikan komputasi, visualisasi, dan pemrograman dalam suatu model yang sangat mudah untuk pakai dimana masalah-masalah dan penyelesaiannya diekspresikan dalam notasi matematika yang familiar. Penggunaan Matlab meliputi bidangbidang Matematika dan !omputasi Pembentukan "lgorithm "kusisi #ata Pemodelan, simulasi, dan pembuatan prototipe "nalisa data, e$plorasi, dan visualisasi %rafik !eilmuan dan bidang &ekayasa M"'(") merupakan suatu sistem interaktif yang memiliki elemen data dalam suatu array sehingga tidak lagi kita dipusingkan dengan masalah dimensi. *al ini memungkinkan kita untuk memecahkan banyak masalah teknis yang terkait dengan komputasi, kususnya yang berhubungan dengan matri$ dan formulasi vektor, yang mana masalah tersebut merupakan momok apabila kita harus menyelesaikannya dengan menggunakan bahasa level rendah seperti Pascall, + dan )asic. ,ama M"'(") merupakan singkatan dari matrix laboratory. M"'(") pada a-alnya ditulis untuk memudahkan akses perangkat lunak matrik yang telah dibentuk oleh (.,P"+! dan /.0P"+!. 0aat ini perangkat M"'(") telah menggabung dengan ("P"+! dan )("0 library, yang merupakan satu kesatuan dari sebuah seni tersendiri dalam perangkat lunak untuk komputasi matri$. #alam lingkungan perguruan tinggi teknik, Matlab merupakan perangkat standar untuk memperkenalkan dan mengembangkan penyajian materi matematika, rekayasa dan kelimuan. #i industri, M"'(") merupakan perangkat pilihan untuk penelitian dengan produktifitas yang tingi, pengembangan dan analisanya. 1itur-fitur M"'(") sudah banyak dikembangkan, dan lebih kita kenal dengan nama toolbox. 0angat penting bagi seorang pengguna Matlab, toolbo$ mana yang mandukung untuk learn dan apply technologi yang sedang dipelajarinya. 'oolbo$ toolbo$ ini merupakan kumpulan dari fungsifungsi M"'(") (Mfiles) yang telah dikembangkan ke suatu lingkungan kerja M"'(") untuk memecahkan masalah dalam kelas particular. "rea-area yang sudah bisa dipecahkan dengan toolbo$ saat ini meliputi pengolahan sinyal, system kontrol, neural net-orks, fu22y logic, -avelets, dan lain-lain.

Kelengkapan pada Sistem MATLAB


0ebagai sebuah system, M"'(") tersusun dari 3 bagian utama 1 Development Environment. Merupakan sekumpulan perangkat dan fasilitas yang membantu anda untuk menggunakan fungsi-fungsi dan file-file M"'("). )eberapa perangkat ini merupakan sebuah graphical user interfaces (%4.). 'ermasuk didalamnya adalah M"'(") desktop dan +ommand 5indo-, command history, sebuah editor dan debugger, dan bro-sers untuk melihat help, -orkspace, files, dan search path. 2 MATLAB Mathematical Function Librar . Merupakan sekumpulan algoritma komputasi mulai dari fungsi-fungsi dasar sepertri sum, sin, cos, dan comple$ arithmetic, sampai dengan

fungsifungsi yang lebih kompek seperti matri$ inverse, matri$ eigenvalues, )essel functions, dan fast 1ourier transforms. MATLAB Language. Merupakan suatu high-level matri$6array language dengan control flostatements, functions, data structures, input6output, dan fitur-fitur object-oriented programming. .ni memungkinkan bagi kita untuk melakukan kedua hal baik 7pemrograman dalam lingkup sederhana 7 untuk mendapatkan hasil yang cepat, dan 7pemrograman dalam lingkup yang lebih besar7 untuk memperoleh hasil-hasil dan aplikasi yang komplek. !raphics. M"'(") memiliki fasilitas untuk menampilkan vector dan matrices sebagai suatu grafik. #idalamnya melibatkan high-level functions (fungsi-fungsi level tinggi) untuk visualisasi data dua dikensi dan data tiga dimensi, image processing, animation, dan presentation graphics. .ni juga melibatkan fungsi level rendah yang memungkinkan bagi anda untuk membiasakan diri untuk memunculkan grafik mulai dari benutk yang sederhana sampai dengan tingkatan graphical user interfaces pada aplikasi M"'(") anda. MATLAB Application "rogram #nter$ace %A"#&. Merupakan suatu library yang memungkinkan program yang telah anda tulis dalam bahasa + dan 1ortran mampu berinterakasi dengan M"'("). .ni melibatkan fasilitas untuk pemanggilan routines dari M"'(") (dynamic linking), pemanggilan M"'(") sebagai sebuah computational engine, dan untuk membaca dan menuliskan M"'-files.

PE DA"ULUA
Paper ini akan menjelaskan tentang dasar-dasar pengolahan citra menggunakan M"'("). 0eperti telah diketahui bah-a M"'(") merupakan bahasa komputasi yang memilki banyak sekali fungsi built-in berkaitan dengan matrik dan persamaan-persamaan yang biasa digunakan pada bidang tertentu sehingga sangat memudahkan pengguna untuk melakukan pemrograman sehingga pengguna tidak terlalu dipusingkan dengan logika pemrograman dan lebih fokus terhadap logika penyelesaian masalah yang dihadapi.

Apa itu digital image processing'


.mage atau gambar adalah representasi spasial dari suatu objek yang sebenarnya dalam bidang dua dimensi yang biasanya ditulis dalam koordinat kartesian $-y, dan setiap koordinat merepresentasikan satu sinyal terkecil dari objek yang biasanya koordinat terkecil ini disebut sebagai piksel. !arena merupakan sistem koordinat yang memiliki nilai maka biasanya image dianggap sebagai sebuah matrik $-y yang berisi nilai piksel. &epresntasi dari matriks tersebut dapat ditulis sebagai berikut

#an di M"'(") representasi ini biasa ditulis menjadi

8ang perlu diperhatikan adalah bah-a indeks matriks pada M"'(") selalu dimulai dengan anggak 9 sehingga untuk f(:,:) akan sama dengan f(9,9) pada matlab. )entuk matrik ini kemudian diolah menurut teori-teori tertentu yang bertujuan untuk memecahkan masalah tertentu, bentuk matriks adalah per-ujudan dari bentuk sinyal digital sehingga proses pemecahan dan pengolahan matriks dari gambar ini biasanya disebut dengan digital image processing.

"embacaan #mage
Pada matlab fungsi untuk melakukan pembacaan image standar yaitu imread(filename) Perintah ini digunakan untuk membaca beberapa format file diantaranya *asil dari pembacaan imread(;filename<) bisa berupa matriks dua dimensi jika gambar yang dibaca adalah gambar grayscale dan matrik = dimensi jika berupa gambar = dimensi.

Ekstraksi

ilai Piksel Red# !reen dan Blue $R!B%

*ampir setiap pengolahan citra yang berbasis -arna perlu dilakukan pemisahan band-band yang ada pada citra khususnya citra &%), M"'(") menyediakan fasilitas yang cukup baik dalam memisahkan ketiga -arna &%), yaitu sebagai berikut
gambar=imread(gambarkoe.jpg); %--------membaca file gambar red=gambar(:,:,1); %memanggil matriks gambar ang !an a berisi piksel "arnamera!

green=gambar(:,:,#);% memanggil matriks gambar ang !an a berisi piksel"arna !ija$ bl$e=gambar(:,:,%); %memanggil matriks gambar ang !an a berisi piksel"arna bir$ %----------menampilkan gambar-------------------ims!o"(gambar) ims!o"(red) ims!o"(green) ims!o"(bl$e)

'erlihat bah-a untuk mengambil nilai piksel merah memiliki indeks 9, -arna hijau memiliki indeks > dan -arna biru memiliki indeks =.

Konversi !ambar (!B ke !ra scale


4ntuk merubah gambar &%) ke gambar grayscale di M"'(") disediakan fungsi khusus yaitu rgb2gray(matrik_gambar), tetapi kadangkala diinginkan untuk perubahan bentuk grayscale ini tidak menggunakan fungsi M"'(") yang sudah ada yang merupakan nilai rata-rata piksel &%) tetapi masing-masing nilai &%) diberi nilai bobot yang berbeda-beda, hal ini dengan mudah dilakukan dengan menggunakan pemisahan nilai seperti yang telah dilakukan diatas seperti contoh berikut
gambar=imread(gambarkoe.jpg); %--------membaca file gambar red=gambar(:,:,1); %memanggil matriks gambar ang !an a berisi piksel "arnamera! green=gambar(:,:,#);% memanggil matriks gambar ang !an a berisi piksel"arna !ija$ bl$e=gambar(:,:,%); %memanggil matriks gambar ang !an a berisi piksel"arna bir$ gra #=&.%'red(&.)'green(&.#'bl$e ;

Membuat )istogram #mage


1ungsi yang disediakan M"'(") untuk membuat histogram dari gambar yaitu dengan fungsi imhist(matrik_1_dimensi_image) Perlu diperhatikan bah-a imhist hanya dapat digunakan untuk matrik image 9 dimensi sehingga bila diimplementasikan pada matriks gambar maka hanya berupa matriks merah saja, hijua saja, biru saja atau grayscale. +ontoh penggunaan *istogram dari .mage yaitu
gambar=imread(gambarkoe.jpg); %--------membaca file gambar red=gambar(:,:,1); %memanggil matriks gambar ang !an a berisi piksel "arnamera! green=gambar(:,:,#);% memanggil matriks gambar ang !an a berisi piksel"arna mera! bl$e=gambar(:,:,%); %memanggil matriks gambar ang !an a berisi piksel"arna mera! mera!gra #=&.%'red(&.)'green(&.#'bl$e ; im!ist(red) im!ist(green) im!ist(bl$e) im!ist(gra )

&ontoh "asil'

Matlab juga menyediakan fungsi untuk melakukan cropping (pemotongan bagian tertentu dari gambar menjadi matrik baru yang independen). 1ungsi tersebut yaitu Imcrop(matrik_gambar matrik_titiksudut_crop)! +ontoh implementasinya adalah
gambar=imread(*t$rtle.jpg*); crop=imcrop(gambar,+,#- #%- #%& #)&.) ims!o"(gambar), fig$re, ims!o"(crop)

contoh hasil keluaranya dari program diatas yaitu

Penentuan titik yang akan diambil yaitu menggunakan matrik_titiksudut_crop yaitu yang merepresentasikan nilai ?$,y,a,b@ dimana $ dan y adalah titik a-al (sudut kiri atas) dari image yang akan dikrop sedangakan a adalah jumlah piksel memanjang kearah sumbu-$ dan b adalah jumlah piksel ke arah sumbu-y.

Region Of Interest %(*#&


!elemahan proses cropping jika itu merupakan daerah yang kita tertarik maka proses cropping hanya dapat digunakan untuk bentuk kotak (rectangular). 4ntuk bentuk lain atau area yang berbentuk tidak beraturan yang ingin dipisahkan dari image induk maka didefinisikan sebagai &A. ("egion of Interest) dimana di M"'(") terdapat banyak sekali fungsi yang bisa digunakan, salah satunya yaitu roipoly(.,c,r) dimana . adalah matrik gambar, c adalah matrik titik kolom daerah yang menjadi &A. dan r adalah matrik titik baris daerah yang menjadi &A.. +ontoh penggunaan &A. yaitu
/=imread(*t$rtle.jpg*); c = +,#) ,0) -%% -10 01, -)% ,,-.; r = +%#- #0# #2- #00 ##1 2&# 2#-.; 34 = roipol (/,c,r); fig$re, ims!o"(/) fig$re, ims!o"(34)

Contoh im(lementasi real ROI


gambar=imread(*t$rtle.jpg*); /=gambar(:,:,1);

c = +,#) ,0) -%% -10 01, -)% ,,-.; r = +%#- #0# #2- #00 ##1 2&# 2#-.; 34 = roipol (/,c,r); j = roifill(/,c,r); fig$re, ims!o"(gambar) fig$re, ims!o"(/) fig$re, ims!o"(34) fig$re, ims!o"(j)

"engolahan +itra dengan Domain Frekuensi


Pada #omain frekuensi, citra dinyatakan sebagai kombinasi dari gelombang penyusun dengan frekuensi berbeda. )eberapa fungsi M"'(") yang biasa digunakan untuk pengolahan sinyal untuk domain frekuensi yaitu
fft, fft2 dct, dct2
FFT %Fast Fourier Trans$orm&

FFT didefiniskan berdasarkan persamaan berikut:

"da dua cara untuk menampilkan hasil 11' yaitu berdasarkan magnitude yaitu dan log dari 11' yaitu log . )erikut contoh program implementasi penggunaan fft
gambar=imread(*5oco.jpg*); red=gambar(:,:,1); green=gambar(:,:,#); bl$e=gambar(:,:,%); f=fft#(gambar); ff=abs(f); flog=log(ff); ims!o"(ff(:,:,%),+& #&&.), colormap(jet),colorbar fig$re,ims!o"(ff(:,:,%),+& 1#.), colormap(jet),colorbar

D+T %Discrete +osine Trans$orm&


Persamaan #+' biasanya ditulis seperti diba-ah ini

#+' biasanya digunakan untuk kompresi karena mampu mengurangi terjadinya perulangan piksel yang sama pada daerah yang berdekatan. +ontoh penggunaan #+' yaitu
gambar=imread(*5oco.jpg*); gra =rgb#gra (gambar); f=dct#(gra ); ims!o"(gra ), colormap(jet),colorbar fig$re,ims!o"(f), colormap(jet),colorbar

contoh hasilnya yaitu

Konversi +itra ke +itra Biner


)inerisasi citra adalah salah satu proses penting yang biasanya dilakukan dalam pemrosesan image, M"'(") menyediakan beberapa fungsi untuk melakukan proses ini. 0ebagai contoh proses tersebut seperti pada langkah diba-ah ini
gambar=imread(*t$rtle.jpg*); gra =rgb#gra (gambar); t!res!=gra t!res!(gra ); imb"=im#b"(gra ,t!res!); ims!o"(gambar) fig$re, ims!o"(imb")

"da > fungsi penting dalam proses diatas yaitu threshBgraythresh(gray)C yang digunakan untuk mendapatkan nilai ambang batas dan imb-Bim>b-(gray,thresh)C yang melakukan proses binerisasi citra itu sendiri.

Morphological #mage "rocessing


Merupakan pengolahan citra yang berhubungan dengan bentuk dan struktur dari suatu objek, ada beberapa contoh teknik yang digunakan seperti dilasi, erosi dan objek counting.
Dilasi 6onto!:

gambar=imread(*t$rtle.jpg*); gra =rgb#gra (gambar); se = strel(*ball*,),)); dilat=imdilate(gra ,se); ims!o"(gambar) fig$re, ims!o"(gra ) fig$re, ims!o"(dilat)

E(*S#
Conto :
gambar=imread(*t$rtle.jpg*); gra =rgb#gra (gambar); se = strel(*ball*,),)); dilat=imerode(gra ,se); ims!o"(gambar) fig$re, ims!o"(gra ) fig$re, ims!o"(dilat)

*b,ect +ounting
8aitu proses menghitung objek berdasarkan konektivitasnya terhadapap piksel disekitarnya, bisa berdasarkan D piksel koneksi atau menggunakan E piksel koneksi.

1ungsi yang digunakan untuk menghitung objek yaitu


[labeled,numObjects] = bwlabel(imbw,4);

0edangkan fungsi yang digunakan untuk memberi label dan -arna yang berbeda pada setiap objek yaitu
imlabel = label2rgb(labeled, @spring, 'c', 'shu le');

untuk contoh implementasi dapat dilihat pada kode berikut


gambar=imread(*t$rtle.jpg*); gra =rgb#gra (gambar); t!res!=gra t!res!(gra ); imb"=im#b"(gra ,t!res!); +labeled,n$m7bjects. = b"label(imb",0); imlabel = label#rgb(labeled, 8spring, *c*, *s!$ffle*); ims!o"(imb") fig$re,ims!o"(imlabel)

Konvolusi #mage
!onvolusi adalah salah satu proses filtering image yang sering dilakukan pada proses pengolahan gambar. Pada M"'(") terdapat banyak sekali cara yang dapat dilakukan untuk melakukan proses konvolusi. Proses konvolusi dilakukan dengan menggunakan matriks yang biasa disebut mask yaitu matriks yang berjalan sepanjang proses dan digunakan untuk menghitung nilai representasi lokal dari beberapa piksel pada image.
+ontoh implementasi konvolusi ini yaitu
gambar=imread(*t$rtle.jpg*); mask = +-1 -1 -1; -1 0 -1; -1 -1 -1.; gra =rgb#gra (gambar); t!res!=gra t!res!(gra ); imb"=im#b"(gra ,t!res!); !asil=con9#(do$ble(imb"),mask,*9alid*); ims!o"(gambar) fig$re, ims!o"(!asil)

Filtering #mage
Proses filtering secara khusus oleh matlab menggunakan fungsi built-in fspecial(special filter) dimana synta$ umumnya adalah
special( iltername,parameter,!!) dimana: F fspecial adalah jenis filter yang digunakan F average B filter rata-rata F disk B circular averaging filter F gaussian B filter gauss F laplacian B apro$imasi operator >-# laplace F logB laplacian of gaussian filter F motionB motion filter F pre-itt Pre-itt hori2ontal edge-emphasi2ing filter Fsobel 0obel hori2ontal edge-emphasi2ing filter F unsharp unsharp contrast enhancement filter

filter yan! tersusun diatas kemudian diimplementasikan pada fun!si im ilter untuk ima!e "#$ %3&'( dan ilter2 untuk ima!e !rayscale atau 2&'. )dapun conto pen!!unaanya seperti conto berikut dimana filter yan! di!unakan adala filter !aussian den!an matriks 12*12, dan terli at ba +a !ambar asil men,adi blur.
gambar=imread(*t$rtle.jpg*); ga$ssian:ilter = fspecial(*ga$ssian*, +1#, 1#., )) !asil = imfilter(gambar, ga$ssian:ilter, *s mmetric*, *con9*); s$bplot(1,#,1), image(gambar); s$bplot(1,#,#), image(!asil), title(*3l$rred 5$rtle, bl$r matri; si<e 1#*);

Deteksi Tepi
0eleksi objek biasanya selanjutnya dilakukan langkah deteksi tepi dalam proses pengolahan citra, di M"'(") proses pendeteksian tepi dilakukan dengan perintah6fungsi edge. "da beberapa metode yang dapat dilakukan pada deteksi tepi menggunakana M"'(") yaitu metode sobel, pre-itt, roberts, laplacian of gaussian, metode 2ero cross, dan +anny. 8ang penting diperhatikan pada deteksi tepi bah-a hanya dapat dilakukan menggunakan citra grayscale atau citra >-#. +ontoh penggunaan metode deteksi tepi
/ = imread(*t$rtle.jpg*); gra =rgb#gra (/); 341 = edge(gra ,*pre"itt*); 34# = edge(gra ,*cann *); 34% = edge(gra ,*sobel*); 342 = edge(gra ,*roberts*); ims!o"(341); fig$re, ims!o"(34#) fig$re, ims!o"(34%) fig$re, ims!o"(342)

#mage (econstruction
Pada banyak kasus pengolahan citra baik proses binerisasi maupun deteksi tepi menghasilkan citra yang pada umumnya masih belum baik, oleh karena itu perlu dilakukan perbaikan citra 6 reconstruksi citra kembali. #i matlab proses rekonstruksi dilakukan menggunakan fungsi imfill . +ontoh penggunaan rekonstruksi image yaitu
gambar = imread(*t$rtle.jpg*); +=,map. = rgb#ind(gambar, 1#0); / = ind#gra (=,map); t!res!=gra t!res!(gra ); imb"=im#b"(gra ,t!res!); /fill = imfill(imb",*!oles*); fig$re, ims!o"(imb");fig$re, ims!o"(/fill)

'erlihat gambar diatas gambar ke-> terlihat lebih baik jika dibandingkan dengan gambar hasil

binerisasi.

Dasar "emrosesan #mage di MATLAB berbasis -ideo +amera Mendeteksi .enis -ideo +amera
0ebelum memulai mengambil data dari video camera perlu dipastikan bah-a adapter kamera kita sudah terbaca dengan baik oleh matlab, untuk melakukan hal tersebut dapat digunakan perintah imaGh-info
>> ima?!"info ans = /nstalled@daptors: A*coreco* *"in9ideo*B C@5D@3Eersion: *-.- (F#&&0b)* 5oolbo;Game: */mage @c?$isition 5oolbo;* 5oolbo;Eersion: *%.# (F#&&0b)*

'erlihat dari hasil diatas bah-a kamera yang terinstal pada komputer bermerk coreo dan menggunakan driver -invideo.

Mengambil dan menampilkan !ambar -ideo +amera


Proses selanjutnya dalam pemrosesan video yaitu mengambil data dengan menggunakan perintah #ideoinput dan menentukan parameter seperti video resolusi, lebar, panjang dan band dari video kemudian membuat sebuah handle yang menampung image frame tersebut. 0etelah handle image didapatkan maka biasanya video dapat ditampilkan menggunakan perintah pre#ie$. +ontoh sederhana dari menampikan video pada matlab seperti diba-ah ini.
9id = 9ideoinp$t(*"in9ideo*); 9idFes = get(9id, *EideoFesol$tion*); im4idt! = 9idFes(1); imHeig!t = 9idFes(#); n3ands = get(9id, *G$mber7f3ands*); !/mage = image( <eros(imHeig!t, im4idt!, n3ands) ); pre9ie"(9id, !/mage); pa$se(%&); stoppre9ie"(9id); delete(9id) clear 9id

Live )istogram
*istogram sangat penting dalam pengolahan citra termasuk video oleh karena itu pembuatan histogram secara live juga sangat dibutuhkan dalam proses interpretasi objek yang akan dianalisis. +ontoh pembuatan histogram pada matlab dilakukan seperti diba-ah ini
$tilpat! = f$llfile(matlabroot, *toolbo;*, *ima?*, *ima?demos*, *!elper*); addpat!($tilpat!); 9idobj = 9ideoinp$t(*"in9ideo*); set(9idobj, *Fet$rned6olorIpace*, *gra scale*) 9idFes = get(9idobj, *EideoFesol$tion*); f = fig$re(*Eisible*, *off*); imageFes = fliplr(9idFes); s$bplot(1,#,1); !/mage = ims!o"(<eros(imageFes)); a;is image; setappdata(!/mage,*JpdateKre9ie"4indo":cn*,8$pdateLli9e!istogramLdispla ); pre9ie"(9idobj, !/mage); pa$se(%&); stoppre9ie"(9idobj); delete(f); delete(9idobj) clear 9idobj

Anda mungkin juga menyukai