Anda di halaman 1dari 90

MODUL PRAKTIKUM

PENGOLAHAN CITRA DIGITAL

Dosen :
Emy Setyaningsih,S.Si., M.Kom.

JURUSAN SISTEM KOMPUTER


FAKULTAS SAINS TERAPAN
INSTITUT SAINS & TEKNOLOGI AKPRIND YOGYAKARTA
2018

i
MODUL PRAKTIKUM
PENGOLAHAN CITRA DIGITAL

Disusun Oleh
Emy Setyaningsih, S.Si. M.Kom.

PROGRAM STUDI SISTEM KOMPUTER


FAKULTAS SAINS TERAPAN
INSTITUT SAINS & TEKNOLOGI AKPRIND YOGYAKARTA
2018

ii
KATA PENGANTAR

Modul ini ditujukan kepada mahasiswa semester 4 yang mengambil Mata


Kuliah Pengolahan Citra Digital dengan tujuan untuk membantu mahasiswa
memahami materi yang diberikan oleh dosen pengampu.
Modul ini berperan sebagai fasilitasi mahasiswa untuk mencapai
kompetensi dasar yang telah dirumuskan pada silabi. Disamping itu, modul ini
memiliki kedudukan yang penting sebagai arahan untuk mengawal mahasiswa agar
sampai pada kompetensi utama mata kuliah sekaligus sebagai pemantik tumbuhnya
gagasan serta ide mandiri yang dituangkan kedalam bentuk laporan yang
berkualitas.
Modul ini membicarakan 7 pokok bahasan penting yang erat
hubungannya dengan aktifitas tugas sebagai mahasiswa. Pertama, tentang
Pengenalan Matlab dan Pemrograman GUI. Kedua mengenai dasar-dasar
pengolahan citra digital yang meliputi membaca, menampilkan, menyimpan citra,
Transformasi Warna dan histogram citra. Ketiga tentang Perbaikan kualitas citra
(image enhancement) pada domain spatial menggunakan point processing.
Keeempat tentang Perbaikan kualitas citra (image enhancement) pada domain
spatial menggunakan mask processing. Kelima tentang Perbaikan kualitas citra
(image enhancement) pada frekuensi. Keenam tentang Analisis Citra dan terakhir
tentang morfologi. Ketujuh pokok bahasan dalam modul ini diharapkan mampu
membantu mahasiswa sekaligus menjembatani mata kuliah tertentu di semester
berikutnya.
Semoga modul ini memberi manfaat bagi pembaca.

Yogyakarta, 5 Mei 2018


Emy Setyaningsih, S.Si, M.Kom

iii
DAFTAR ISI

HALAMAN JUDUL …………….………………………………......................................... ii


KATA PENGANTAR ………………………………………………………............................... iii
DAFTAR ISI ………………………………………………………............................... iv
PENDAHULUAN ………………………………………………………............................... 1
Deskripsi Materi ..……………………………............................……………… 1
Prasyarat ………………………………………………...............................……… 1
Petunjuk Pemakaian Modul ………………………………………........................ 1
Standar Kompetensi …………………………………………………........................ 1
MODUL I Pengenalan Aplikasi Matlab ..............……………………………………. 2
MODUL II Pengenalan Pemrograman GUI Dengan Matlab ..………………. 17
MODUL III Membaca, Menampilkan Dan Menyimpan File Citra Ke Media Pe-
Nyimpanan ........................................................................................ 33
MODUL IV Transformasi Warna .............................................……………………… 39
MODUL V Histogram Citra …………………………………………………………….…...... 44
MODUL VI Image Enhancement Pada Domain Spatial Menggunakan Point
Processing (Contrast Stretching Dan Image Negative) .......... 47
MODUL VII Histogram Equalization …………………………………………….…………. 52
MODUL VIII Mask Processing ..………………………………………………..……… 58
MODUL IX Operasi Geometrik Dan Arimatik .……………………………………. 63
MODUL X Image Enhancement Pada Domain Frekuensi ……………………..…... 71
MODUL XI Analisis Citra ....……………………………………………………………..…. 74
MODUL XII Morfologi ....………………………………..…………………… 79

iv
[Pendahuluan] Modul Pengolahan Citra Digital

PENDAHULUAN

A. Deskripsi
Materi dalam modul ini menerangkan bagaimana mengoperasikan aplikasi Matlab
sekaligus membantu menyusun program menggunakan fasilitas M-file dan GUI. Pada bagian
lain, modul ini juga menerangkan tentang bagaimana membuat aplikasi dasar untuk
mengolah operasi citra, perbaikan kualitas citra pada domain spatial dan frekuensi.
Terakhir, modul ini membahas tentang konsep dasar analisis citra dan morfologi yang dapat
digunakan untuk mengembangkan aplikasi pengolahan citra yang lain.
Modul yang disusun ini memiliki keterkaitan dengan modul pada mata kuliah lain
sebagai alat bantu yang memberi kemudahan bagi mahasiswa baik untuk menyelesaikan
tugas sehari-hari maupun mempersiapkan mahasiswa dalam penyusunan tugas akhir.
Setelah mempelajari modul ini, mahasiswa mampu mengimplementasi
pengolahan citra kedalam bentuk perangkat lunak serta mampu melakukan pengolahan dan
analisa citra untuk berbagai bidang aplikasi seperti pemrosesan data, analisis sumber daya
alam, pencitraan diagnostic, pengenalan pola, dsb

B. Prasyarat
 Mahasiswa mampu mengoperasikan seperangkat komputer.
 Mahasiswa telah mampu menyusun program komputer ( terkait dengan mata kuliah
Pemrograman Komputer).
 Mahasiswa disarankan telah mengambil mata kuliah yang berkaitan dengan
pemrograman komputer dasar maupun lanjut

C. Petunjuk Pemakaian Modul


Modul ini dapat digunakan mahasiswa dengan pertimbangan sebagai berikut :
 Mahasiswa telah memiliki modul dan telah membaca modul sebelum mata kuliah
dimulai.
 Mahasiswa mempelajari serta mengidentifikasi isi modul yang diuraikan lebih rinci
oleh dosen pengampu.
 Mahasiswa dan dosen mendiskusikan materi untuk mencari penyelesaian terhadap
kasus tertentu.
 Mahasiswa menyimpulkan isi materi yang didiskusikan
 Mahasiswa menjawab soal latihan yang diberikan
 Pemberian pengayaan materi bagi mahasiswa yang telah memahami dan
menyelesaikan soal latihan.
 Memberikan tinjauan ulang terhadap materi sekaligus mengidentifikasi kesulitan-
kesulitan mahasiswa dalam memahami materi.

D. Standard Kompetensi
1. Mampu memahami berbagai proses-proses dasar pengolahan citra digital beserta
dengan perbaikannya.
2. Mampu mengimplementasi pengolahan citra kedalam bentuk perangkat lunak.
3. Mampu melakukan pengolahan dan analisa citra untuk berbagai bidang aplikasi
seperti keamanan data citra, pemampatan data citra, dsb

By Emy Setyaningsih-2018 Page 1


[Modul 1] Modul Pengolahan Citra Digital

MODUL 1
PENGENALAN APLIKASI MATLAB

I.1. Kompetensi Dasar :


Setelah mempelajari bab ini, mahasiswa :
 Mengenali lingkungan kerja Matlab
 Memahami konsep dasar variabel dan operator yang digunakan pada matlab
 Memahami konsep array dan matrik serta mampu melakukan operasi matrik
 Mampu membuat program aplikasi sederhana menggunakan pemrograman Matlab

I.2. Indikator :
I.2.1. Mengenali lingkungan kerja Matlab
 Mampu mengaktifkan lingkungan kerja Matlab
 Mampu mengoperasikan masing-masing editor yang terdapat lingkungan kerja
Matlab
 Mampu menggunakan variabel dan operator pada aplikasi matlab
I.2.2. Memahami dan mengetahui penggunaan array dan matrik
 Mampu melakukan pembentukan array dan matrik
 Mampu memanipulasi data array dan matrik untuk mereduksi kerumitan metode
komputasi
I.2.3. Mampu membuat program aplikasi sederhana menggunakan M-file
 Mampu memahami penggunaan control statemen
 Mampu menulis program sederhana matlab

I.3. Uraian Materi 1 :


PENDAHULUAN

MATLAB (Matrix Laboratory) adalah bahasa tingkat tinggi dan interaktif yang
memungkinkan untuk melakukan komputasi secara intensif. MATLAB telah berkembang
menjadi sebuah environment pemrograman yang canggih yang berisi fungsi-fungsi builtin
untuk melakukan pengelolahan sinyal, aljabar linear dan kalkulasi matematis lainnya.
MATLAB juga berisi toolbox yang berisi fungsifungsi tambahan untuk aplikasi khusus.
Penggunaan MATLAB meliputi bidang-bidang :
 Matematika dan Komputasi
 Pembentukan Algorithm Akuisisi Data
 Pemodelan, simulasi dan Pembuatan Prototype
 Analisis Data, Explorasi, dan Visualisasi Grafik
Keilmuan dan Bidang Rekayasa

A. Memulai MATLAB
Setelah melakukan instalasi MATLAB pada PC, perhatikan icon MATLAB pada tampilan
desktop kemudian doubleclick pada icon tersebut. Selanjutnya akan muncul tampilan
seperti pada gambar 1.1.

Gambar 1.1. Tampilan awal MATLAB

By Emy Setyaningsih-2018 Page 2


[Modul 1] Modul Pengolahan Citra Digital

Pada tampilan awal MATLAB, terlihat beberapa jendela yang merupakan bagian
penting di dalam MATLAB, antara lain :
1) Jendela perintah (Command Window)
Pada command window, semua perintah matlab dituliskan dan diekskusi. Kita
dapat menuliskan perintah perhitungan sederhana, memanggil fungsi, mencari
informasi tentang sebuah fungsi dengan aturan penulisannya (help), demo
program, dan sebagainya. Setiap penulisan perintah selalu diawali dengan
prompt ‘>>’.
2) Jendela ruang kerja (Workspace)
Jendela ini berisi informasi penggunaan variabel di dalam memori MATLAB.
Maka pada workspace akan menampilkan variable yang sedang digunakan.

Gambar 1.2. Tampilan workspace

3) Jendela history (Command History)


Jendela ini berisi informasi tentang perintah yang pernah dituliskan sebelumnya.
Kita dapat mengambil kembali perintah dengan menekan tombol panah ke atas
atau mengklik perintah pada jendela histori, kemudian melakukan copypaste ke
command window.

Gambar 1.3. Tampilan command history

B. Cara Bekerja Dengan Matlab


Untuk membuat program, anda hanya perlu mengetikkan perintah pada prompt Matlab
dalam Command Window, misalnya :

tekan tombol enter, lalu ketikkan :

tekan tombol enter, lalu ketikkan :

untuk skrip terakhir sengaja tidak diberikan tanda (;) titik koma, sehingga anda bisa
langsung melihat hasil akhir dilayar Command Window.
Hasil akhir yaitu

C. Variabel dan Operator.


Seperti bahasa pemrograman lainnya, matlab pun memiliki variabel, tetapi dalam
penulisannya, variabel di dalam matlab tidak perlu dideklarasikan, karena matlab
mampu mengenali tipe data dari variable dari isi variabel tersebut. Aturan penulisan
variabel pada matlab sama dengan aturan pada bahasa pemrograman lainnya, yaitu
bersifa case sensitive, diawali dengan huruf dan selanjutanya boleh menggunakan

By Emy Setyaningsih-2018 Page 3


[Modul 1] Modul Pengolahan Citra Digital

gabungan huruf angka atau tanda garis bawah. Matlab mampu mengenali sampai 31
karakter pertama, selanjutnya diabaikan.
Semua tipe data di matlab memiliki bentuk yang sama, yaitu array. Array minimal
berukuran 0x0 dan dapat bertambah menjadi array n x m dimensi dengan sebarang
ukuran. Matlab mempunyai beberapa tipe data dasar (atau class), yaitu: logical, char,
numeric, cell, structure, java classes, function handles.
Pada matlab, operator diklasifikasikan menjadi tiga bagian, yaitu:
1) Operator Aritmatika
Operator aritmatika digunakan untuk mengerjakan komputasi numerik.

2) Operator Relasional
Operator relasional digunakan untuk membandingkan operand-operand secara
kuantitatif.

3) Operator Logika
OPERATOR KETERANGAN
& Akan menghasilkan nilai 1 jika kedua elemen yang
bersesuaian memiliki nilai true dan 0 untuk lainnya
| Akan bernilai 1 jika salah satu elemennya true
~ Komplen dari elemen yang diinputkan
Xor Akan bernilai 1 jika salah satu dari kedua elemen
memiliki nilai berbeda dan bernilai nol jika sama

D. Array & Matrik


Terdapat tiga jenis format data di MATLAB, yaitu skalar, vektor,dan matriks.
 Skalar, ialah suatu bilangan tunggal
 Vektor, ialah sekelompok bilangan yang tersusun 1-dimensi. Dalam MATLAB
biasanya disajikan sebagai vektor-baris atau vektor-kolom
 Matriks, ialah sekelompok bilangan yang tersusun dalam segi-empat 2-dimensi.
Di dalam MATLAB, matriks didefinisikan dengan jumlah baris dan kolomnya. Di
MATLAB terdapat pula matriks berdimensi 3, 4, atau lebih.
Array adalah kumpulan data-data scalar yang dinyatakan dalam bentuk baris, kolom
dan gabungan antar keduanya. Kumpulan data dengan deret yang tidak teratur

By Emy Setyaningsih-2018 Page 4


[Modul 1] Modul Pengolahan Citra Digital

mengharuskan pemakai untuk menuliskan data satu per satu. Kumpulan data dengan
deret yang teratur dapat diekspresikan dalam bentuk array, sehingga memungkinkan
pemakai untuk tidak menuliskannya satu per satu.

Matriks adalah array yang dibangun dari kumpulan persamaan linear. Operasi matriks
tidak seperti pada array biasa, melainkan sistem operasi aljabar matriks. Matriks
didefinisikan dengan kurung siku ( [ ] ) dan biasanya dituliskan baris-per-baris. Tanda
koma (,) digunakan untuk memisahkan kolom, dan titik-koma (;) untuk memisahkan
baris.
Berikutnya kita coba contoh berikut untuk mendefinisikan matriks 3×3.

Array dan matriks ditampilkan dalam bentuk yang sama tetapi representasi internalnya
berbeda. Berikut ini adalah perintah untuk membentuk array.
 x=m: n, membuat baris dengan elemen awal m, kenaikan 1 dan elemen akhir n atau
sebelum n.
Misal:
Perintah x=1: 10 akan membuat barisan dengan elemen dimulai dari 1,
bertambah 1 dan berakhir pada 10.

 x=m: k: n, membuat baris dengan elemen awal m, kenaikan k dan elemen akhir n
atau sebelum n.
Misal:
Perintah x=1:2:20 akan membuat barisan dengan elemen dimulai dari 1,
bertambah 2 dan berakhir pada 19.

 x=linspace (m, n, k) , membuat baris dengan elemen awal m dan elemen akhir,
dengan jumlah elemen sebanyak k.
Misal:
Perintah x=linspace (1, 30,10) akan menampilkan baris dengan elemen awal
bernilai 1 dan elemen akhir bernilai 30 dengan jumlah elemen sebanyak 10.

 x=logspace (m, n, k) , membuat baris dengan elemen awal m dan elemen akhir n
dengan jumlah elemen sebanyak k dalam skala logaritma.
Misal:
Perintah x=logspace (1, 30,10) akan menampilkan baris dengan elemen awal
bemilai 10 dan elemen akhir bernilai 10 dengan jumlah elemen 10.

By Emy Setyaningsih-2018 Page 5


[Modul 1] Modul Pengolahan Citra Digital

 x=ones (m) , membuat array segiempat ukuran m x m dengan semua elemennya


bernilai 1.
Misal:
Perintah x=ones (5) akan menampilkan array segiempat ukuran 5 x 5 dengan
semua elemennya bernilai 1

 x=ones (m, n) , membuat array segiempat ukuran m x n dengan semua elemennya


bernilai 1
Misal:
Perintah x=ones (2, 5) akan menampilkan array segiempat ukuran 2 x 5
dengan semua elemennya bernilai 1.
 x=zeros (m) , membuat array segiempat ukuran in m x m dengan semua elemennya
bernilai 0.
Misal:
Perintah x=zeros (5) akan menampilkan array segiempat ukuran 5 x 5
dengan semua elemennya bernilai 0.

 x=zeros (m, n) , membuat array segiempat ukuran m x n dengan semua elemennya


bernilai 0.
Misal:
Perintah x=zeros (2, 5) akan menampilkan array segiempat ukuran 2 x 5
dengan semua elemennya bernilai 0.

 x=rand (m, n) , membuat array segiempat ukuran m x n dengan elemen-elemennya


berupa bilangan random yang terdistribusi uniform dengan interval 0,0 sampai 1,0.
Misal:
Perintah x=rand (2, 5) akan menampilkan array segiempat ukuran 2 x 5
dengan elemen-elemennya berupa bilangan random yang terdistribusi
uniform dengan interval 0,0 sampai 1,0.

 x=randn (m, n) , membuat array segiempat ukuran m x n dengan elemen-elemennya


berupa bilangan random yang terdistribusi normal dengan mean = 0 dan variasi = 1.
Misal:
Perintah x=randn (2, 5) akan menampilkan array segiempat ukuran 2 x 5
dengan elemen-elemennya berupa bilangan random yang terdistribusi
normal dengan mean = 0 dan variasi = 1.

By Emy Setyaningsih-2018 Page 6


[Modul 1] Modul Pengolahan Citra Digital

Array dapat dinyatakan dalam bentuk matriks dengan memasukkan semua perintah
pada ruas kanan ke dalam kurung komutasi. Misal: array x=m: n dapat dinyatakan dalam
bentuk matriks dengan perintah x= [m: n] .

Manipulasi terhadap array dan matriks dapat mereduksi kerumitan metode


komputasi. Misal dalam perhitungan numerik diketahui array data dengan variable
induk A yang terdiri atas gabungan antara baris dan kolom. Array tersebut dapat
dimodifikasi dengan perintah pengalamatan.
 A (i, j),mengalamati sub array A dengan indeks baris i dan kolom j.
 A (i, :), mengalamati sub array A pada semua kolom j.
 A(:, j), mengalamati sub array A dengan semua baris pada kolom j .
 A(:), mengalamati sub array A dengan semua baris pada semua kolom.
Pengalamatan yang dilakukan terhadap elemen array dapat digunakan untuk
pangalamatan elemen matriks dengan ketentuan array tersebut sebelumnya telah
dinyatakan dalam bentuk matriks.

By Emy Setyaningsih-2018 Page 7


[Modul 1] Modul Pengolahan Citra Digital

I.4. Uraian Materi 2 :


PEMROGRAMAN M-FILE

Jika masalah yang dihadapi sederhana, mengetikkan beberapa perintah langsung di


jendela Command memang cukup cepat dan efektif , tetapi Jika jumlah perintahnya sangat
banyak, atau ingin mengubah nilai beberapa variabel dan kemudian mengulang kembali
perhitungannya, cara di atas membosankan
Matlab menyediakan sarana untuk mengetikkan deretan perintah dalam suatu teks file
kemudian memerintahkan MATLAB untuk membuka file tersebut dan menjalankannya
seolah-olah diketikkan langsung di jendela Command yang dinamakan file script atau M-file
Setiap perintah/pernyataan yang dapat dimasukkan pada window prompt dapat
disimpan pada sebuah file teks dan dieksekusi sebagai script. File teks tersebut dapat dibuat
dengan menggunakan sembarang editor ASCII seperti program Notepad atau pada editor
teks MATLAB. Ekstensi file harus berupa .m dan script tersebut dieksekusi pada MATLAB
dengan hanya mengetikkan nama file (dengan atau tanpa ekstensi). Program-program
tersebut umumnya dikenal dengan istilah m-file.
Untuk mengakses window m-file ini dapat dilakukan dengan cara :
1. Memilih File kemudian pilih New
2. Pilih m-file, maka MATLAB akan menampilkan editor window :

Gambar 1.4. Tampilan Editor Window

Di dalam Script M-File, kita dapat menyimpan semua perintah dan menjalankan dengan
menekan tombol / atau mengetikan nama M-File yang kita buat pada command
window.

Contoh : Gambarkan fungsi ; 0 ≤ x ≤ 20


Langkahnya :
1. Buka editor m-file
2. Ketikkan statemen pada editor m-file seperti gambar dibawah ini :

3. Simpan dengan nama Gambar1.m

By Emy Setyaningsih-2018 Page 8


[Modul 1] Modul Pengolahan Citra Digital

4. Kemudian jalankan program tersebut dengan menekan tombol


5. Pengetikan statemen pada Gambar1 pada command prompt akan menjalankan file
tersebut, dan ketiga baris perintah akan dieksekusi sama halnya bila mereka
diketikkan baris perbaris pada command prompt. Bila tidak ada kesalahan dalam
penulisan statemen program, maka akan tampil gambar pada editor picture
sebuah plot seperti yang tampak pada gambar dibawah ini

A. Komentar Dan Tanda Baca


Komentar memungkinkan kita untuk mendokumentasikan perintah-perintah yang
terdapat dalam script sehingga dapat mengingat yang dikerjakan perintah-perintah
tersebut jika pada suatu saat membuka kembali script tersebut
Pada Matlab semua teks sesudah tanda % dianggap sebagai statemen komentar , contoh:
semester=8 % jumlah semester S 1

Variabel semester diisi dengan nilai 8 dan statemen sesudah tanda % di anggap sebuah
komentar Statemen ini berguna untuk mendokumentasikan apa yang sudah dikerjakan.

Tanda titik koma ( ; ) dalam Matlab berguna untuk mencegah menampilkan hasil,
contoh :
semester=8;

B. Fungsi Output
1) Disp
Fungsi disp memungkinkan untuk menampilkan string tanpa menampilkan nama
variabelnya.
Contoh:
 A=’Belajar Pengolahan Citra Digital’;
disp(A);
Belajar Pengolahan Citra Digital
 disp('Ini contoh citra warna')
Ini contoh citra warna
dapat dilihat bahwa A = statemen telah dihilangkan. Fungsi ini berguna untuk
menampilkan teks bantuan dalam suatu file script

Syarat digunakannya disp , isi didalamnya harus merupakan strings, jadi jika ingin
menampilkan sebuah angka, terlebih dahulu dirubah kedalam bentuk strings dengan
menggunakan function num2str( ).
Contoh :
nim=161071003;
disp(['Nim saya adalah ',num2str(nim)])
Nim saya adalah 161071003
Argumen perintah disp adalah tunggal, sehingga apabila akan memuncukan beberapa
tampilan maka harus dituliskan perintah disp berulang-ulang

2) fprintf

By Emy Setyaningsih-2018 Page 9


[Modul 1] Modul Pengolahan Citra Digital

Command ini berfungsi untuk menampilkan output di layar atau menyimpan output
di suatu external file ( sama halnya dengan command fprint di C/C++). Fungsi ini
mempunyai argumen sbb:

fprintf( ' nama file ' ,' format string ' , list)

dimana list adalah nama variabel yang dipisahkan dengan koma. Untuk format string
:
%P.Qe untuk eksponensial
%P.Qf untuk fixed point
/n untuk membuat baris baru
dan lebih detailnya dapat dilihat di help untuk fprintf.

C. Fungsi Input
Fungsi Input digunakan untuk membaca data dari keyboard.
Bentuk Umumnya :
Nama_variabel = input (‘teks’)
Apabila di run akan muncul di layar command window teks dan menunggu inputan dari
user yg diakhiri dengan penekanan tombol enter, apabila langsung dienter maka teks
akan berisi matriks kosong
Contoh Program menggunakan fungsi Input dan Output:
a) Buka editor m-file
b) Ketikkan statement dibawah ini
% Gambar2.m script file untuk masalah konsentrasi asam
citra=input(‘D :\Gambar\lenna.bmp’’);
[b,k,s]=size(citra);
% sesuaikan file tempat menyimpan citra
disp(['ukuran citra: ',num2str(b*k)]);
imshow(citra);
title('Contoh Citra');
c) Simpan dengan nama Gambar2.m
d) Kemudian jalankan program tersebut

D. Control Flow
Untuk mengatur jalannya eksekusi dari statement di dalam script/m-file maka
diperlukan adanya kontrol program. Matlab bisa berlaku seperti bahasa pemrograman C
ataupun pascal yang mempunyai struktur kontrol program, biasanya pemrograman
dengan matlab memerlukan lebih dari satu baris dan memungkinkan untuk
didokumentasikan dalam m-file, kontrol program ini digunakan untuk memperbaiki
tampilan atau membuat tampilan sesuai yang kita inginkan
Matlab menyediakan empat struktur kontrol program, yaitu loop for, loop while,
kontruksi switch-case dan kontruksi if-else-end. Kontruksi-kontruksi tersebut
seringkali melibatkan banyak perintah Matlab, yang oleh karenanya konstruksi ini lebih
banyak terdapat dalam M-file.

1) Loop For
Loop for meungkinkan sekelompok perintah diulang sebanyak suatu jumlah yang
tetap. Bentuk umum dari loop for adalah :

Default dari nilai increment (penambahan nilai setiap perulangan) jika tidak
ditentukan oleh user adalah 1.

By Emy Setyaningsih-2018 Page 10


[Modul 1] Modul Pengolahan Citra Digital

Contoh I.5. Program for untuk membangkitkan sebuah fungsi


Penyelesaian :
a) Buka editor m-file
b) Ketikkan statement dibawah ini
%File Name:Gambar3.m
n=input('Jumlah data : ');
delx=1/20;
for k=1:n
x(k)=(k-1)* delx;
y(k)=sin(x(k))* exp(-0.4*x(k));
end
%plot(x,y)
plot(x,y,'linewidth',4);
title('Grafik yang pertama');
xlabel('x');ylabel('y');
c) Simpan dengan nama Gambar3.m
d) Kemudian jalankan program tersebut
e) Bila tidak ada kesalahan dalam penulisan statemen program, maka akan
tampil pada editor command window perintah untuk mengisi dari keyboard
jumlah datanya

Penjelasan :
untuk tiap iterasi, x dan y diisi dengan kolom array berikutnya, yaitu dalam
iterasi ke-k dalam loop, x = array(:,k) dan y = array(:,k).

2) Loop While
loop for mengerjakan sekelompok perintah yang diulang sebanyak suatu sejumlah,
tetapi loop while mengerjakan sekelompok perintah yang diulang secara tidak
terbatas
Bentuk umum loop while adalah :

By Emy Setyaningsih-2018 Page 11


[Modul 1] Modul Pengolahan Citra Digital

Perintah yang terdapat diantara statemen while dan end dieksekusi berulang kali
selama semua elemen dalam ekspresi adalah benar. Ada beberapa daftar ekspresi
boolean yang ada dalam MATLAB seperti tabel berikut ini :

Contoh Menampilkan nilai x sampai nilai x mencapai nilai tertentu .


Penyelesaian :
a) Buka editor m-file
b) Ketikkan statement dibawah ini
%File Name:Gambar4.m
x=input('Nilai x : ');
n=input('Batas nilai x : ');
%selama nilai x kurang dari n
while x < n
%tampilkan nilai x
fprintf('nilai saat ini : %6.0f \n',x);
%increment nilai x
x = x+1;
end

c) Simpan dengan nama Gambar4.m


d) Kemudian jalankan program tersebut
Bila tidak ada kesalahan dalam penulisan statemen program, maka akan
tampil pada editor command window perintah untuk mengisi nilai x dan n
dari keyboard dan menampilkan hasil dari perintah fprintf

3) If, Else, Elseif


Seringkali sederetan perintah harus dikerjakan dengan didasarkan pada hasil tes
rasional. Dalam bahasa pemograman, logical ini dikerjakan dengan variasi kontruksi
if, else, elseif. Bentuk dasar penggunaan statement jenis ini adalah sebagai berikut:

By Emy Setyaningsih-2018 Page 12


[Modul 1] Modul Pengolahan Citra Digital

Ekspresi akan bernilai 1 jika benar dan bernilai 0 jika salah.


Contoh :
Penyelesaian :
a) Buka editor m-file
b) Ketikkan statement dibawah ini
%File Name:Gambar5.m
A = input('Nilai A = ');
B = input('Nilai B = ');
if A > B
disp('Keterangan : A lebih besar dari B')
elseif A == B
disp('Keterangan : A sama dengan B')
else
disp('Keterangan : A lebih kecil dari B')
end

c) Simpan dengan nama Gambar5.m


d) Kemudian jalankan program tersebut lewat command window dengan
mengetikkan Gambar5. Bila tidak ada kesalahan dalam penulisan statemen
program, maka akan tampil pada editor command window sebagai berikut :

4) Switch Case
Bila sederetan perintah harus dikerjakan dengan didasarkan pada penggunaan
berulang-ulang suatu tes dengan argumen yang sama, kontruksi switch – else akan
lebih tepat digunakan. Konstruksi ini mempunyai bentuk:
switch ekspresi
case test ekspresi 1
deret perintah 1 (statement,…,statement)
case {test ekspresi 2, test ekspresi 3, test ekspresi 4}
deret perintah 2 (statement,…,statement)
….
otherwise
deret perintah 3 (statement,…,statement)
end
Expresi harus berupa skalar atau karakter string. Jika ekspresinya adalah skalar,
ekspresi= =test_ekspresi di test oleh statemen case. Jika ekspresi berupa karakter string
maka strcm(ekspresi, test_ekspresi) ditest.

By Emy Setyaningsih-2018 Page 13


[Modul 1] Modul Pengolahan Citra Digital

Pada contoh diatas ekspresi dibandingkan dengan dengan test ekspresi 1 pada statemen
case pertama, jika keduanya sama maka deret perintah akan dikerjakan, dan deret
statemen berikutnya yang berada sebelum statemen end diabaikan. Jika pembandingan
pertama tidak memberikan nilai benar maka akan dijalankan deret perintah pada
statemen case yang kedua. Jika semua pembanding dengan case gagal akan dikerjakan
deret perintah 3 yang mengikuti statemen otherwise. Contoh sederhana dari kontruksi
switch-case adalah sebagai berikut :
Contoh Menentukan sebuah bilangan apakah termasuk dalam bilangan
ganjil atau genap
Penyelesaian :
a) Buka editor m-file
b) Ketikkan statement dibawah ini
%File Name:Gambar6.m
bil=input('Masukkan bilangan : ');
x=mod(bil,2);
switch x
case 1
disp(['Bilangan',num2str(bil),' adalah bilangan ganjil'])
case 0
disp(['Bilangan ' ,num2str(bil),' adalah bilangan genap'])
otherwise
disp('Bilangan ini tidak mungkin ada')
end
c) Simpan dengan nama Gambar6.m
Kemudian jalankan program tersebut lewat command window dengan
mengetikkan Gambar6. Bila tidak ada kesalahan dalam penulisan statemen
program, maka akan tampil pada editor command window sebagai berikut :

E. Dasar Pemrograman Matlab Menggunakan Function M-File


M-file selain dipakai sebagai penamaan file juga bisa dipakai untuk menamakan fungsi,
sehingga fungsi fungsi yang kita buat di jendela editor bisa di simpan dengan ektensi .m
sama dengan file yang kita panggi dijendela editor. Saat kita menggunakan fungsi Matlab
seperti inv, abs, cos, sin dan sqrt, matlab menerima variabel berdasarkan variabel yang
kita berikan.

Fungsi M-file mirip dengan script file dimana keduanya merupakan file teks dengan
ektensi .m . sebagaimana script M-file, fungsi m-file tidak dimasukkan dalam jendela
command window tetapi file tersendiri yang dibuat dengan editor teks.
Aturan dan sifat sifat
Suatu fungsi M-file harus mengikuti beberapa aturan. Fungsi M-file juga mempunyai
sejumlah aturan penting. Aturan aturan tersebut meliputi ;
 Nama fungsi dan nama file harus identik. Contoh : fungsi flipud disimpan dalam
file yang bernama flipud.m
 Pertama kali matlab mengeksekusi suatu fungsi M file matlab membuka file
fungsi tersebut dan mengkompilasi perintah perintah didalamnya menjadi suatu
representasi internal dalam memori yang mempercepat eksekusi untuk semua

By Emy Setyaningsih-2018 Page 14


[Modul 1] Modul Pengolahan Citra Digital

pemanggilan berikutnya. Jika fungsi juga melibatkan pemanggil ke fungsi M-file


yang lain, fungsi M-File yang dipanggil itu juga akan dikompilasi ke dalam
memori.
 Setiap fungsi mempunyai ruang kerjanya sendiri yang berbeda dengan ruang
kerja matlab. Satu satunya hubungan antara ruang kerja matlab dengan variabel
variabel dalam fungsi adalah variabel variabel input dan output fungsi. Jika suatu
fungsi mengubah nilai dalam bentuk suatu variabel input, perubahan itu hanya
tampak dalam fungsi dan tidak mempengaruhi ruang kerja MATLAB.
 Jumlah dari argumen input dan output yang digunakan jika suatu fungsi dipanggil
hanya ada dalam fungsi tersebut.
 Fungsi dapat berbagi variabel dengan fungsi lain, ruang kerja MATLAB dan
pemanggilan rekursi untuk dirinya sendiri jika variabelnya dideklarasikan
sebagai variabel global.
 Fungsi M-file berhenti dieksekusi dan kembali ke prompt jika telah mencapai
akhir dari M-file atau jika menemui perintah return. Perintah return merupakan
cara sederhana untuk menghentikan fungsi sebelum mencapai akhir file.
 Fungsi M-file dapat memuat lebih dari sebuah fungsi.

Anda dapat menulis fungsi sendiri dan kemudian ditambahkan pada environment
MATLAB. Fungsi-fungsi ini merupakan jenis lain dari m-file, dan dibuat sebagai
sebuah file ASCII menggunakan editor teks. Kata pertama pada m-file tersebut
haruslah keyword function untuk memberitahukan MATLAB bahwa file tersebut
diperlakukan sebagai sebuah fungsi dengan argumen. Pada baris yang sama juga
berisi calling template yang menyatakan argumen input dan output dari fungsi. Nama
file untuk m-file tersebut haruslah berekstensi .m dan nama fungsi tersebut akan
menjadi nama dari perintah baru pada MATLAB.

Berikutnya secara umum m-file didefinisikan menggunakan command function.


Sintaks standar untuk command function adalah :

function[output1,output2,…]= NamaFunction(input1,input2,..)

disini output1, output2,…adalah barisan nama output yang akan dimunculkan dilayar
command window MATLAB jika NamaFunction dipanggil dengan input argumen
adalah input1,input2,… Input tersebut dipanggil dan dikirim by value yaitu perubahan
nilai input di dalam function tidak akan ditampilkan diluar (perubahannya hanya
lokal. Karenanya jika ingin melakukan assignment fungsi by name, nama output yang
ingin dikirim keluar fungsi diletakkan di sebelah kiri (yang dinamakan output1,
output2,…) Input dan output di atas adalah optional argumen, artinya dimungkinkan
membuat suatu function tanpa input argumen. Jika diberikan tanpa output argumen
maka yang ditampilkan adalah eksekusi dari statement/ekspresi terakhir.
Contoh Ekstrak L buah elemen terakhir dari sebuah vektor.
Penyelesaian :
a) Buka editor m-file
b) Ketikkan statement dibawah ini

By Emy Setyaningsih-2018 Page 15


[Modul 1] Modul Pengolahan Citra Digital

c). Bila file ini disimpan dengan nama foo.m, operasi ini dapat dipanggil dari
MATLAB command line dengan cara mengetikkan sbb :

I.5. Soal Latihan

1. Buatlah sebuah program menggunakan m-file atau fungsi m-file untuk menampilkan
4 citra yang ditampilkan dalam satu layar output

2. Buatlah sebuah program untuk menampilkan citra asli dan menampilkan sebagian
data citra sesuai dengan input yang diinginkan oleh user

-oo0oo-

By Emy Setyaningsih-2018 Page 16


[Modul 2] Modul Pengolahan Citra Digital

MODUL 2
PENGENALAN PEMROGRAMAN GUI DENGAN MATLAB
(Pendahuluan, Komponen GUI dan Cara Memprogram Komponen GUI)

2.1. Kompetensi Dasar :


Setelah mempelajari bab ini, mahasiswa :
 Mengenali operasi dasar GUI pada Matlab
 Memahami dan mengetahui penggunaan komponen GUIDE
 Mampu membuat program aplikasi sederhana menggunakan komponen GUIDE

2.2. Indikator :
2.2.1. Mengenali operasi dasar GUI pada Matlab
 Mampu mengaktifkan lembar kerja GUI
 Mampu melakukan operasi : create new GUI, open existing GUI.
2.2.2. Memahami dan mengetahui penggunaan komponen GUIDE
 Mampu mengidentifikasikan macam-macam komponen GUIDE beserta fungsinya.
 Mampu mengatur disain masing-masing komponen GUIDE
2.2.3. Mampu membuat program aplikasi sederhana menggunakan komponen GUIDE
 Mampu mengatur layout komponen GUI
 Mampu memprogram komponen GUIDE

2.3. Uraian Materi 1 :


2.3.1. Pendahulauan
GUIDE atau GUI builDEr merupakan sebuah graphical user interface (GUI) yang
dibangun dengan obyek grafis seperti tombol (button), kotak teks, slider, sumbu (axes),
maupun menu. Sebagai contoh, ketika menggerakkan slider, maka kita dapat melihat
perubahan sebuah nilai. Kemudian, ketika kita menekan tombol oK, maka aplikasi krta akan
dijalankan.
Aplikasi yang menggunakan GUI umumnya lebih mudah dipelajari dan Digunakan
karena orang yang menjalankannya tidak perlu mengetahui perintah yang ada dan
bagaimana perintah bekerja.
GUIDE matlab banyak Keunggulan tersendiri antara lain:
 GUIDE matlab banyak digunakan dan cocok untuk aplikasi-aplikasi berorientasi sains,
sehingga banyak peneliti atau mahasiswa, baik S1, S2, maupun S3, menggunakan
GUIDE matlab untuk menyelesaikan riset atau tugas akhimya
 Matlab memelilki banyak fungsi built in yang siap digunakan dan pemakai tidak perlu
repot membuatnya sendiri.
 Ukuran file, baik FIG-flle maupun M-file, yang dihasilkan relatif kecil.
 Kemampuan grafisnya cukup andal dan tidak kalah dibandingkan bahasa
pemrograman lainnya.

A. Memulai GUIDE

Gambar 2.1 Memulai GUIDE

By Emy Setyaningsih-2018 Page 17


[Modul 2] Modul Pengolahan Citra Digital

Untuk memulai penggunaan GUI matlab, kita dapat melakukan dengan dua cara,
yaitu:
 Melalui command matlab kita ketikkan >>guide atau
 Klik tombol Start Matlab dan pilihlah MATLAB, lalu pilih GUIDE (GUI Builder).
 Selanjutnya, kita dibawa ke sebuah kotak dialog pilihan GUIDE Quick Start.

Gambar 2.2 GUIDE Quick Start

Ada dua buah pilihan, yaitu Create New GUI dan Open Existing GUI.
1) Create New GUI
Kita dapat memilih Create New GUI jika memang belum pemah membuat aplikasi
GUI matlab atau memang ingin membuat sebuah figure baru. Menu Create New
GUI akan memberikan kita beberapa pilihan GUIDE template. Keuntungannya
menggunakan GUIDE template adalah dapat membuat aplikasi Gui menjadi lebih
cepat dan mudah karena sudah tersedia beberapa bentuk GUI. Pada GUIDE
template bisa memilih:
a. BlankGUI (Default)
Align Objects Menu Editor M-File Editor Property Inspector

Komponen
Palette

Figure Rezise
Tab
Gambar 2.3 Menu utama GUIDE

Blank GUI merupakan sebuah GUI dengan figure kosong. Kita dapat mengatur
sendiri komponen yang kita butuhkan sesuai dengan aplikasi yang kita buat.
Blank GUI menrpakan kondisi default dari GUIDE dan dipilih jika kita memang

By Emy Setyaningsih-2018 Page 18


[Modul 2] Modul Pengolahan Citra Digital

akan membuat sebuah aplikasi dengan komponen yang layout-nya tidak


terdapat pada GUI template yang lain.
Kita dapat memanfaatkan beberapa fasilitas yang ada pada Blank GUI antara
lain component palette untuk mendesain uicontrol yang kita butuhkan seperti
pushbutton, slider, frame, radio button, dan sebagainya. Kita dapat pula
menggunakan figure resize tab untuk melebarkan atau memperluas layout
figure. Kemudian, kita dapat memanfaatkan beberapa tool yang disediakan
seperti alignment tool untuk merapikan layout Menu editor untuk membuat
fasilitas menu pulldown, M-file editor untuk membuka editor M-fiIe, serta
property inspector untuk mengatur property setiap uicontrol.

b. GUI with Uicontrols


Dengan GUI with Uicontrols, kita dapat membuat aplikasi Matlab dengan
beberapa kontrol, misalnya frame, radiobutton, pushbutton, edit text, dan
lainnya. Jika berencana membuat aplikasi dengan layout yang mirip gambar di
atas, maka kita dapat memilih template ini. Selanjutnya beberapa properti
yang ada dapat diatur kembali sesuai aplikasi kita.

Gambar 2.4 GUI dengan UIcontrol

c. GUI With Axes And Menu

Gambar 2.5 GUI dengan Axes dan Menu

Dengan GUI with axes and manu, kita lebih mudah membuat plot berbagai
bentuk data yang divisualisasikan dalam sebuah axes.

By Emy Setyaningsih-2018 Page 19


[Modul 2] Modul Pengolahan Citra Digital

d. Modal Question Dialog

Gambar 2.6 Modal Question Dialog

Template Modal Question Dialog merupakan sebuah template dengan kotak


dialog sebagai konfirmasi untuk menutup sebuah aplikasi. Kita dapat
menggunakan template untuk mengakhiri sebuah aplikasi dan untuk
menghindari penutupan aplikasi secara tidak sengaja yang dapat membawa
dampak kerugian hilangnya sebuah informasi.

2) Open Existing GUI


Jika kita sudah memiliki file figure matlab atau akan memodifikasi file figure,
maka kita dapat menggunakan pilihan Open Existing GUI. Kita hanya tinggal
melakukan browse untuk mencari lokasi file figure (*.fig). Jika menggunakan
pilihan, maka kita akan mendapatkan tampilan kotak dialog sebagai berikut:

Gambar 2.7 Contoh tampilan Open Existing GUI

Jika melakukan browse, maka akan memperoleh tampilan:

Gambar 2.8 Browse pada Open Existing GUI

By Emy Setyaningsih-2018 Page 20


[Modul 2] Modul Pengolahan Citra Digital

Misalnya akan membuka file figure kover.fig maka hasilnya adalah:

Gambar 2.9 figure kover.fig

B. Membuat GUI dengan Matlab


MATLAB mengimplementasikan GUI sebagai sebuah figure yang berisi berbagai style
obyek kontrol user interface (uicontrol). Selanjutrya, kita harus memprogram masing-
masing obyek agar dapat bekerja ketika diaktifkan oleh pemakai GUI.
Ada dua hal mendasar yang harus dikerjakan untuk membuat aplikasi GUI, yaitu:
o Mengatur layout komponen GUI dengan uicontrol.
o Memprogram komponen GUI agar dapat bekerja seperti yang diharapkan.
GUIDE merupakan himpunan tool layout. GUIDE menghasilkan pula suatu m-file yang
berisi kode program untuk menangani inisialisasi dan menjalankan GUI. Kemudian, m-
file menyediakan suatu kerangka untuk implementasi callback, yaitu fungsi yang bekerja
ketika para pemakai mengaktifkan suatu komponen di dalam GUI.

C. Mengatur layout Komponen GUI.


Setelah kita membuka GUIDE matlab dan menentukan apakah menggunakan blank GUI
atau template GUI, langkah selanjutrya adalah mendesain figure (form dalam visual
basic) dengan menggurlakan komponen palet seperti pushbutton, slider, static text, edit
text, frame, radio button, dan sebagainya. Selanjutrya, kita dapat mengatur layout
masing-masing komponen, baik string (caption), tag (name), font, maupun color, dengan
menggunakan property. Jika kita telah selesai mendesain, maka langkah berikutrya
adalah menylmpan figure ke dalam matlab, yang secara default akan maryimpan dengan
file berekstensi *.fig. Dari sini, matlab secara otomatis pula akan mernbuatkan sebuah m-
file dengan nama sama.

D. Memprogram Komponen GUI


M-fiIe, yang telah dibuat pada langkah di atas, akan otomafis terbuka dan kita harus
memprogranmya agar komponen dapat bekerja secara simultan. Jika kita tidak dalam
posisi kali pertama menyimpan *.fig, maka harus membuka sendiri m-fiIe. Untuk
membuat program pada m-fiIe, kita cukup memperhatikan fungsi-fungsi matlab
bertanda callback di mana perintah disisipkan. Jadi secara sederhana sebenarnya GUI
matlab dapat dibentuk oleh dua buah file yaitu fig-file dan m-file.
Hubungan antara GUI, callback dan uicontol dapat dilihat pada gambar dibawahi ini.

Gambar 2.10 Hubungan GUI, Callback dan UIcontrol

By Emy Setyaningsih-2018 Page 21


[Modul 2] Modul Pengolahan Citra Digital

E. Fitur-fitur GUIDE
Dalam membuat aplikasi GUI, GIJIDE akan membuat kerangka kerja m-file secara
otomatis langsung dari layout kita. K ita dapat menggunakannya untuk membuat kode
aplikasi M-fiIe. Metode ini memberikan beberapa keuntungan, antara lain:
o M-file berisi kode yang mengimplementasikan sejumlah fitur.
o M-file mengadopsi suatu pendekatan efektif yang menangani object handle
dan menjalankan rutin callback.
o M-file menyediakan suatu manajemen data global.
Prototipe sebuah subfungsi secara otomatis akan disisipkan pada rutin callback.

2.3.2. Soal Latihan


1) Cobalah untuk membuka lembar kerja pada GUIBUILDER
2) Cobalah semua menu yang ada pada QUIDE Quick Start

By Emy Setyaningsih-2018 Page 22


[Modul 2] Modul Pengolahan Citra Digital

2.4. Uraian Materi 2


2.4.1. Komponen GUI dan Cara Memprogram GUI
Untuk membuat sebuah user interface matlab dengan fasilitas GUIDE, kita harus
mulai dengan membuat desain sebuah figure. Untuk membuat sebuah desain figure, kita
dapat memanfaatkan uicontol (kontrol user interface) yang telah terjadi pada editor figure.
Banyak sekali kontrol user interface yang ada pada matlab, yaitu: Pushbutton, Togglebutton,
Radio button, Checkboxes, Edittext, Static text, Slider, Frames, Listboxes, Popupmenu, Axes.

Gambar 2.11 Komponen UIControl

Agar komponen GUI yang berupa user interface control dapat bekerja sesuai dengan
keinginan, kita harus memprogram masing-masing komponen. Kita dapat memprogram
komponen GUI dengan mengatur secara fisik komponen dari properti inspector serta
menambahkan beberapa kode matlab pada m-file.

A. Pushbutton dan Statik text


 Sebuah pushbutton merupakan jenis kontrol berupa tombol tekan yang akan
menghasilkan sebuah tindakan jika diklilk misalnya tombol OK , CANCEL, dan
lainnya. Contoh kita akan menampilkan tulisan “Kita akan belajar pemrograman
Matlab”, apabila pushbutton “Proses” ditekan.
 Kontrol static text akan menghasilkan teks bersifat statis (tetap), sehingga pemakai
tidak dapat melakukan perubahan padanya. pada static text, kita dapat mengatur teks
dengan beberapa fasilitas, antara lain jenis dan ukuran font, warna justifikasi (Ieft,
center, right), dan lain-lain. Kita dapat memodifikasi semuanya melalui property
inspector.

By Emy Setyaningsih-2018 Page 23


[Modul 2] Modul Pengolahan Citra Digital

Langkahnya :
1) Klik tombol Start Matlab dan memilih MATLAB, lalu mengklik GUIDE (GUI Builder),
maka, kita akan mendapatkan sebuah kotak dialog GUIDE Quick Start yang memiliki
beberapa pilihan.
2) Pilihlah Blank GUI (default) agar menampilkan jendela layout figure GUI
3) Buatlah sebuah pushbutton
Untuk menampilkan tulisan yang berada pada pushbutton, kita dapat mengatur
melalui properly inspector dengan mengklik obyek pushbutton pada figure, lalu
mengklik toolbar property inspector atau menggunakan klik kanan dan pilih
property inspector. Selanjutnya atur property pada tab :
a. String diisi dengan label yang kita maksudkan misalnya “Proses”
b. FontNama diisi font yang diinginkan seperti MS Sans Serif, arial black, calibri,
atau lainnya
c. FontSize diisi ukuran font yg diinginkan contoh 14.
d. FontWeight diisi jenis ketebalan huruf yang didinginkan bisa dipilih
contohnya bold.
e. ForegroundColor diisi warna untuk tulisan “proses”
f. HorizontalAlignment diisi sesuai keinginan apakah akan center, rata kiri atau
kanan

Gambar 2.12 Pushbutton


4) Selanjutnya buatlah sebuah static text dan tampilkan dibawah button “Proses”.
5) Atur property inspector dengan mengosongkan tab string dan mengatur tab lainnya
seperti pada point 3 sesuai dengan keinginan

Gambar 2.13. Static Text

6) Simpan figure diatas dengan nama “latihan1”, kemudian akan tampil editor m-file,
selanjutnya tambahkan perintah pada function
pushbutton1_Callback(hObject,eventdata,handles) :
set(handles.text1,’String’,’ Kita akan belajar pemrograman Matlab’);

By Emy Setyaningsih-2018 Page 24


[Modul 2] Modul Pengolahan Citra Digital

Gambar 2.14. Memprogram Komponen Pushbutton

7) Apabila di running menggunakan tombol running maka akan muncul seperti gambar
dibawah ini

Tombol
Running

Gambar 2.15. Hasil program menggunakan komponen pushbutton dan static text

B. Toggle Button
Toggle button menghasilkan efek yang hampir sama dengan pushbutton. Perbedaannya
adalah saat pushbutton ditekan, maka tombol akan kembali pada posisi semula jika
tombol mouse dilepas. Sebaliknya pada toggle button tombol tidak akan kembali ke
posisi semula, kecuali kita menekannya kembali.

Gambar 2.16 Toggle Button

C. Radio Button dan Edit Text


Radio button mirip dengan tombol checkbox. Pada radio button. Kita hanya dapat
memilih atau menandai satu pilihan dari beberapa pilihan yang ada. Contoh aplikasi
radio button adalah ketika kita membuat aplikasi untuk memilih operasi matematik yang
diinginkan dari 2 nilai yang diinputkan menggunakan komponen edittext.

By Emy Setyaningsih-2018 Page 25


[Modul 2] Modul Pengolahan Citra Digital

Langkahnya :
1) Klik tombol Start Matlab dan memilih MATLAB, lalu mengklik GUIDE (GUI Builder),
kemudian Pilihlah Blank GUI (default) agar menampilkan jendela layout figure GUI
2) Buatlah disain seperti Gambar 2.17, yang terdiri dari static text 5 buah, edittext 2
buah, pushbutton 1 buah dan radiobutton 3 buah

Static Text1

Edit text1
Static Text2
Static Text3 Edit text2

Static Text4 Static text5

Radiobutton 1

Radiobutton 2
Radiobutton 3

Pushbutton1

Gambar 2.17 Radio Button

3) Aturlah static text, edit text, dan pushbutton dan radiobutton menggunakan property
inspector seperti pada bagian A
4) Simpan figure diatas dengan nama “CRADIOBUTTON”, kemudian akan tampil editor
m-file, selanjutnya tambahkan perintah sebagai berikut :
a. Untuk Komponen edit text1 tambahkan perintah pada
function edit1_Callback(hObject, eventdata, handles)
A=str2num(get(handles.edit1,'String'));
handles.A=A;
guidata(hObject,handles);
b. Untuk Komponen edit text2 tambahkan perintah pada
function edit2_Callback(hObject, eventdata, handles)
B=str2num(get(handles.edit2,'String'));
handles.B=B;
guidata(hObject,handles);
c. Untuk Komponen radiobutton1 tambahkan perintah pada
function radiobutton1_Callback(hObject, eventdata, handles)
set(handles.radiobutton2,'Value',0);
set(handles.radiobutton3,'Value',0);
rd = 1;
handles.rd=rd;
guidata(hObject,handles);
d. Untuk Komponen radiobutton2 tambahkan perintah pada
function radiobutton2_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'Value',0);
set(handles.radiobutton3,'Value',0);
rd = 2;
handles.rd=rd;
guidata(hObject,handles);
e. Untuk Komponen radiobutton3 tambahkan perintah pada
function radiobutton3_Callback(hObject, eventdata, handles)
set(handles.radiobutton2,'Value',0);
set(handles.radiobutton1,'Value',0);
rd = 3;
handles.rd=rd;
guidata(hObject,handles);

By Emy Setyaningsih-2018 Page 26


[Modul 2] Modul Pengolahan Citra Digital

f. Untuk Komponen pushbutton1 tambahkan perintah pada


function pushbutton1_Callback(hObject, eventdata, handles)
A= handles.A;
B= handles.B;
rd=handles.rd;
if rd == 1
hasil = A + B;
elseif rd == 2
hasil = A - B;
else
hasil = A * B;
end;
set(handles.text5,'String',hasil);

5) Apabila di running menggunakan tombol running maka akan muncul seperti gambar
dibawah ini

Gambar 2.18 Hasil Running pemrograman menggunakan komponen


static text, edit text, radiobutton dan pushbutton

D. Checkboxes
Kontrol checkbox menghasilkan suatu tindakan ketika diklik yaitu berupa tanda atau
status. Checkbox berguna jika kita ingin menyediakan sejumlah pilihan mandiri yang
tidak tergantung pada pilihan lainnya. Untuk menandai apakah sebuah checkbox telah
ditandai atau tidak, kita dapat melihat pada value property,yaitu masing-masing bemilai
1 dan 0. Contoh checkbox adalah ketika kita diminta memilih buah yang disukai. Karena
buah yang disukai umumnya bisa lebih dari satu, kita bisa mengklik lebih dari satu obyek
checkbox, tampilan yang akan muncul adalah apabila buah yang dicheck maka akan
muncul tulisan dipilih jika tidak akan muncul tulisan tidak dipilih.
Langkahnya :
1) Klik tombol Start Matlab dan memilih MATLAB, lalu mengklik GUIDE (GUI Builder),
kemudian Pilihlah Blank GUI (default) agar menampilkan jendela layout figure GUI
2) Buatlah disain seperti Gambar 2.19, yang terdiri dari static text 3 buah dan check box
3 buah

Check box1 Static text1

Check box2 Static text2

Check box2 Static text3

Gambar 2.19 Check boxes

3) Aturlah static text menggunakan property inspector seperti pada bagian A


4) Simpan figure diatas dengan nama “cekbox”, kemudian akan tampil editor m-file,
selanjutnya tambahkan perintah sebagai berikut :

By Emy Setyaningsih-2018 Page 27


[Modul 2] Modul Pengolahan Citra Digital

a. Untuk Komponen check box1 tambahkan perintah pada


function checkbox1_Callback(hObject, eventdata, handles)
cb1 = get(handles.checkbox1,'Value');
if cb1 == 1
set(handles.text1,'String', 'Dipilih');
else
set(handles.text1,'String', 'Tidak Dipilih');
end;
b. Untuk Komponen check box2 tambahkan perintah pada
function checkbox2_Callback(hObject, eventdata, handles)
cb2 = get(handles.checkbox2,'Value');
if cb2 == 1
set(handles.text2,'String', 'Dipilih');
else
set(handles.text2,'String', 'Tidak Dipilih');
end;
c. Untuk Komponen check box3 tambahkan perintah pada
function checkbox3_Callback(hObject, eventdata, handles)
cb3 = get(handles.checkbox3,'Value');
if cb3 == 1
set(handles.text3,'String', 'Dipilih');
else
set(handles.text3,'String', 'Tidak Dipilih');
end;

5) Apabila di running menggunakan tombol running maka akan muncul seperti gambar
dibawah ini

Gambar 2.20. Hasil running komponen check box

E. Slider
Slider merupakan komponen GUI yang dapat bergeser secara horizontal maupun
vertikal. Berbeda dengan bahasa pemrograman lain seperti VB yang memiliki scroll
(penggulung) horizontal dan vertikal secara terpisah, matlab hanya memrliki sebuah
slider. Namun, dengan sebuah slider kita dapat mengatumya menjadi slider horizontal
atau slider vertikal dengan mendrag mouse sesuai dengan keinginan kita. Slider
digunakan jika kita menginginkan inputan yang tidak dilakukan dari keyboard. Dengan
menggunakan slider, kita lebih fleksibel dalam melakukan pemasukan data karena kita
dapat mengatur sendri nilai-nilai maksimum, minimum, atau sliderstep, dan sebagainya
Ada 4 property yang megontrol nilai range dan step pada slider, yaitu :
 Value : berisikan nilai slider saat ini
 Max : mendefinisikan nilai maksimum slider
 Min : mendefinisikan nilai min slider
 Slider step : menentukan ukuran step slider.
Langkahnya :
1) Klik tombol Start Matlab dan memilih MATLAB, lalu mengklik GUIDE (GUI Builder),
kemudian Pilihlah Blank GUI (default) agar menampilkan jendela layout figure GUI
2) Buatlah disain seperti Gambar 2.21, yang terdiri dari static text 1 buah, edit text 1
buah dan slider 1 buah

By Emy Setyaningsih-2018 Page 28


[Modul 2] Modul Pengolahan Citra Digital

Gambar 2.21 Slider

3) Aturlah static text dan edit text menggunakan property inspector seperti pada bagian
A
4) Simpan figure diatas dengan nama “contohslider”, kemudian akan tampil editor m-
file, selanjutnya tambahkan perintah sebagai berikut :
Untuk Komponen slider1 tambahkan perintah pada
function slider1_Callback(hObject, eventdata, handles)
nilai_slider = round(get(handles.slider1,'Value'));
handles.nilai_slider=nilai_slider;
guidata(hObject,handles);
set(handles.edit1,'String',handles.nilai_slider);
Jika slider dijalankan maka nilai slider selalu diupdate ke kotak edit text. Kita juga dapat
menginputkan nilai slider dari kotak edit text.

F. Listboxes
Kontrol listbox menampilkan semua daftar item yang terdapat pada String property dan
membuat kita dapat memilih satu atau lebih item yang ada. Value property berisi indeks
yang dihubungkan dengan daftar item yang dapat dipilih. Jika kita memilih item lebih
dari satu, maka nilai yang dikirimkan merupakan sebuah vektor. indeks-indeks item
sebuah listbox merupakan bilangan bulat, di mana item pertama diberi indeks 0, item
kedua diberi indeks l, dan seterusnya.
Langkahnya :
1) Klik tombol Start Matlab dan memilih MATLAB, lalu mengklik GUIDE (GUI Builder),
kemudian Pilihlah Blank GUI (default) agar menampilkan jendela layout figure GUI
2) Buatlah disain seperti Gambar 2.22, yang terdiri dari static text 1 buah, edit text 1
buah dan listboxes 1 buah
3) Aturlah static text dan edit text menggunakan property inspector seperti pada bagian
A dan list boxes seperti pada Gambar 2.22

Gambar 2.22 Disain Listbox

4) Simpan figure diatas dengan nama “contohlistbox”, kemudian akan tampil editor m-
file, selanjutnya tambahkan perintah sebagai berikut :

By Emy Setyaningsih-2018 Page 29


[Modul 2] Modul Pengolahan Citra Digital

Untuk Komponen listbox1 tambahkan perintah pada


function listbox1_Callback(hObject, eventdata, handles)
indeks = get(handles.listbox1,'Value');
isi = get(handles.listbox1,'String');
tampil = isi(indeks);
set(handles.edit1,'String',tampil);
5) Apabila di running menggunakan tombol running maka akan muncul seperti gambar
dibawah ini

Gambar 2.23. Contoh tampilan listbox

G. PopupMenu
Popup menu mernbuka tampilan daftar pilihan yang didefinisikan pada String Property
ketika kita mengklik tanda panah pada aplikasi. Ketika tidak dibuka, popup menu hanya
akan menampilkan satu item yang menladi pilihan saat ini, yang ditentukan oleh sebuah
indeks berisi Value Properfy. Item pertama pada String Property sebuah popup menu
akan diberi nilai 1, item berikutnya diberi nilai 2, dan begitu seterusnya. Popup menu
sangat bermanfaat ketika kita ingin memberi pemakai sebuah pilihan atau alternatif
tanpa jarak, tidak seperti radio button. Contoh pemakaian popup menu hampir sama
dengan listbox

Gambar 2.24 PopupMenu


h. Axes
Dengan axes, kita dapat membuat aplikasi yang dapat digunakan urtuk menampilkan
sebuah grafik atau gambar (image). Axes sebenamya tidak termasuk golongan user
interface control, tetapi axes dapat diprogram agar pemakai dapat berinteraksi dengan
axes dan obyek grafik yang dapat ditampilkan melalui sebuah axes. Berikut adalah
contoh aplikasi yang menggunakan axes.
Langkahnya :
1) Klik tombol Start Matlab dan memilih MATLAB, lalu mengklik GUIDE (GUI Builder),
kemudian Pilihlah Blank GUI (default) agar menampilkan jendela layout figure GUI
2) Buatlah disain seperti Gambar 2.25, yang terdiri dari static text 3 buah, edit text 2
buah, pushbutton 1 dan axes 1 buah
3) Aturlah static text, edit text dan pushbutton menggunakan property inspector seperti
pada bagian A

By Emy Setyaningsih-2018 Page 30


[Modul 2] Modul Pengolahan Citra Digital

Gambar 2.25 Desain Figure Aplikasi

4) Simpan figure diatas dengan nama “contoh_axes”, kemudian akan tampil editor m-
file, selanjutnya tambahkan perintah sebagai berikut :
Untuk Komponen pushbutton1 tambahkan perintah pada
function pushbutton1_Callback(hObject, eventdata, handles)
min = str2double(get(handles.edit1,'String'));
max = str2double(get(handles.edit2,'String'));
x = min : 0.1 : max;
y = x.^2;
axes(handles.axes1);
plot(x,y);

Statemen min: str2double(get(handles.editl,'string')); digunakan untuk menangkap


nilai string pada kotak edit1 yang dikonversi ke numerik dan dimasukkan ke variabel
min, dan demikian pula untuk nilai max. Kemudian, kita membuat sebuah rentang
nilai x sebagai variabel bebas dari min sampai max dengan penambahan 0.1.
Selanjutnya, hitunglah nilai y sebagai variabel terikat dengan formula y: x.^2. Hal ini
sebenamya tidak lain adalah fungsi kuadratnya. Kita dapat pula mengubah formula
jika ingin membuat fungsi yang berbeda, misalnya y = x.^3 atau yang lainnya. Untuk
menampilkan grafik persamaan kuadrat ke sebuah axes, kita harus mengatur agar
axes yang aktif adalah axesl dengan menggunakan statemen axes(handles.axesl), lalu
statement plot(x,y). Simpan kembali m-file dan kembalilah ke figure untuk
menjalankan aplikasinya. Misalnya, kita memberikan batasan min= - 4 dan max=4,
maka kita akan memperoleh:

Gambar 2.26 Tampilan Aplikasi Fungsi Kuadrat

By Emy Setyaningsih-2018 Page 31


[Modul 2] Modul Pengolahan Citra Digital

2.4.2. Soal Latihan

1. Buat disain untuk menampilkan fungsi trigonometri dengan beberapa pilihan sudut,
amplitudo, dan phase menggunakan komponen GUIDE seperti gambar berikut ini

Dengan pengaturan pada properti Inspector sbb :

-oo0oo-

By Emy Setyaningsih-2018 Page 32


[Modul 3] Modul Pengolahan Citra Digital

MODUL 3
MEMBACA, MENAMPILKAN DAN MENYIMPAN FILE CITRA
KE MEDIA PENYIMPANAN

31. Kompetensi Dasar :


Setelah mempelajari bab ini, mahasiswa :
 Mampu membuat program untuk membaca dan menampilkan file citra
 Mampu membuat program untuk menyimpan file citra ke media penyimpanan

3.2. Indikator :
3.2.1. Mampu membuat program untuk membaca dan menapilkan file citra
 Mampu mendisain tampilan untuk membaca dan menampilkan file citra
menggunakan komponen GUI
 Mampu memprogram untuk membaca dan menampilkan file citra.
3.2.2. Mampu membuat program untuk menyimpan file citra
 Mampu mendisain tampilan untuk menyimpan file citra menggunakan komponen
GUI
 Mampu memprogram untuk menyimpan file citra.

3.3. Uraian Materi 1 :


3.3.1. Membaca Dan Menampilkan File Citra
Dalam bidang pengolahan citra, istilah citra mengacu pada suatu fungsi intensitas
dalam bidang dua dimensi yang biasanya ditulis dalam koordinat kartesian x-y, dan setiap
koordinat merepresentasikan satu sinyal terkecil dari objek yang biasanya koordinat
terkecil ini disebut sebagai piksel. Karena merupakan sistem koordinat yang memiliki nilai
maka biasanya image dianggap sebagai sebuah matrik x-y yang berisi nilai piksel.
Representasi dari matriks tersebut dapat ditulis sebagai berikut:

Dan di MATLAB representasi ini biasa ditulis menjadi

Yang perlu diperhatikan adalah bahwa indeks matriks pada MATLAB selalu dimulai dengan
anggak 1 sehingga untuk f(0,0) akan sama dengan f(1,1) pada matlab.
Bentuk matrik ini kemudian diolah menurut teori-teori tertentu yang bertujuan untuk
memecahkan masalah tertentu, bentuk matriks adalah perwujudan dari bentuk sinyal digital
sehingga proses pemecahan dan pengolahan matriks dari gambar ini biasanya disebut
dengan digital image processing.

Pemrosesan citra menggunakan komputer membutuhkan citra digital sebagai masukannya.


Oleh karena itu, kita mengenal beberapa macam format citra digital, yang masing-masing
memiliki format penyimpanan dan pembacaan data yang berbeda-beda.
Format Deskripsi Recognized Extension
TIFF Tagged Image File Format .tiff
JPEG Join Photographics Expert’s Group .jpeg
GIF Graphics Interchange Format .gif
BMP Windows Bitmap .bmp
PNG Portable Network Graphics .png
XWD X-Window Dump .xwd
Dengan menggunakan toolbox image processing di Matlab, proses pembacaan citra dapat
dilakukan dengan mudah. Untuk membaca citra dapat menggunakan perintah imread.
Imread digunakan untuk membaca citra menjadi sebuah data matriks. Format citra yang
dapat dibaca oleh matlab bermacam-macam, seperti bmp, jpg, tif, png, dsb. Sedangkan untuk

By Emy Setyaningsih-2018 Page 33


[Modul 3] Modul Pengolahan Citra Digital

menampilkan citra dapat menggunakan perintah imshow, sebagaimana diperlihatkan oleh


beberapa contoh berikut:
 Windows Bitmap (*.bmp)
a=imread('taz_ref.bmp');
figure,imshow(a);
 Joint Photographic Experts Group (*.jpg)
b=imread('oranges.jpg');
figure,imshow(b);
 Tagged Image File Format (*.tif)
c=imread('saturn.tif');
figure,imshow(c);
Hasil dari pembacaan imread(‘filename’) bisa berupa matriks dua dimensi jika gambar yang
dibaca adalah gambar grayscale dan matrik 3 dimensi jika berupa gambar 3 dimensi.

A. Membaca File Citra


Untuk membaca file citra menggunakan aplikasi GUI pada matlab menggunakan fungsi
uigetfile yang digunakan untuk membaca file citra degan format yang telah ditentukan,
misalnya *.bmp, *.jpg dsb sebagai fiter.

Sebaliknya untuk fungsi ~isequal(nama_file,0) memberikan tes kondisi yang


menyatakan keberadaan sebuah file. Jika filenya ada, maka isequal() akan memberikan
nilai 1 dan 0 untuk sebaliknya.
Fungsi Imread(fullfile(nama_path1,nama_file1)) digunakan untuk membaca citra
yang diberi nama nama_file1 yang tersimpan dalam folder yang sesuai dengan
nama_path1 menjadi sebuah data matriks.

B. Membaca File Gambar Dan Menampilkan Informasi Citra


Langkah-langkah yang dilakukan :
a. Bukalah figure kosong melalui QUIDE MATLAB seperti pada Gambar 3.1

Gambar 3.1. Disain Untuk Membuka Form GUI


b. Buatlah 2 buah pushbutton, 1 axes dan 7 static text seperti terlihat pada Gambar
3.2

Gambar 3.2 . Tools pada GUI Yang Digunakan Untuk Mendisain Cara Membaca
dan Menampilkan File Citra

By Emy Setyaningsih-2018 Page 34


[Modul 3] Modul Pengolahan Citra Digital

c. Atur property dari masing-masing tombol pada langkah b, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 Buka File Citra Tombol_buka
Pushbutton 2 Tutup Aplikasi Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
3) Tombol Static text
Nama Komponen String Property Tag Properti
Static text 1 Contoh Aplikasi GUI Text1
Static text 2 Nama File : Text2
Static text 3 Kosongkan Text3
Static text 4 Ukuran File Text4
Static text 5 Kosongkan Text5
Static text 6 x Text6
Static text 7 Kosongkan Text7
Sehingga tampilan akan berbentuk seperti Gambar 3.3

Gambar 3.3. Disain Untuk Membaca dan Menampilkan File Citra

d) Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama


aplikasi1. Maka kita akan mempunyai 2 file dengan nama aplikasi1.fig dan
aplikasi1.m
e) sekarang otomatis akan dibukakan file aplikasi1.m
f) tambahkan program pada masing-masing function

 Tambahkan deretan perintah untuk membuka file citra pada function


Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp','File bmp (*.bmp)';...
'*.*','Semua File (*.*)'},...
'Buka File Citra Asli');
if isequal([nama_file1,nama_path1],[0,0])
return;
else
image=imread(fullfile(nama_path1,nama_file1));
handles.image=image;
guidata(hObject,handles);

By Emy Setyaningsih-2018 Page 35


[Modul 3] Modul Pengolahan Citra Digital

axes(handles.axes1);
imshow(image);
set(handles.text3,'String',nama_file1);
[brs,kol,tt]=size(handles.image);
set(handles.text5,'String',brs);
set(handles.text7,'String',kol);
handles.image=image;
guidata(hObject,handles);
end;
 Tambahkan deretan perintah untuk menutup aplikasi pada function
Tombol_tutup _Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);
g) Simpan file aplikasi1.m kemudian running program. Perhatikan hasilnya

3.3.2. Soal Latihan


1) Cobalah untuk membuat disain sesuai dengan keinginan anda
2) Cobalah memprogram untuk membaca dan menampilkan file citra dengan format
jpg dan tiff

By Emy Setyaningsih-2018 Page 36


[Modul 3] Modul Pengolahan Citra Digital

3.4. Uraian Materi 2


3.4.1. Menyimpan File Citra
Untuk menyimpan file citra menggunakan aplikasi GUI pada matlab menggunakan
fungsi uiputfile yang digunakan untuk menyimpan file citra degan format yang telah
ditentukan, misalnya *.bmp, *.jpg, *.tiff.
Fungsi imwrite(file_yang_akan_disimpan,file,format_file_yg_akan_disimpan)
Contoh :
imwrite(enkrip1,file,'bmp')
artinya : file citra yang akan disimpan bernama enkrip1, dan disimpan dengan
format bmp.
Langkah-langkah yang dilakukan untuk membuat program untuk menyimpan file citra:
a. Buatlah 2 buah pushbutton, 1 axes seperti terlihat pada Gambar 3.4

Gambar 3.4. Disain Untuk Menyimpan File Citra

b. Atur property dari masing-masing tombol pada langkah a, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 BUKA FILE Tombol_buka
Pushbutton 2 SIMPAN FILE Tombol_simpan
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama
CSIMPANFILE. Maka kita akan mempunyai 2 file dengan nama CSIMPANFILE.fig dan
CSIMPANFILE.m
d. Sekarang otomatis akan dibukakan file CSIMPANFILE.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function
Tombol_buka_Callback
function Tombol_buka_Callback(hObject, eventdata, handles)
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));

By Emy Setyaningsih-2018 Page 37


[Modul 3] Modul Pengolahan Citra Digital

handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menyimpan file pada function


Tombol_simpan_Callback
function Tombol_simpan_Callback(hObject, eventdata, handles)
[nama_file_simpan,path_simpan]=uiputfile(...
{'*.bmp','file citra (*.bmp)';
'*.bmp','citra bmp (*.bmp)';...
'*.*','Semua file(*.*)'},...
'Menyimpan File Citra Hasil Enkripsi');
if isequal([nama_file_simpan,path_simpan],[0,0])
return
else
data1=handles.data1;
file=fullfile(path_simpan,nama_file_simpan);
imwrite(data1,file,'bmp');
handles.file=file;
guidata(hObject,handles);
end;
f. Runing aplikasi yang telah dibuat.

3.4.2. Soal Latihan


Cobalah buat disain untuk menyimpan file dengan format jpg, dan tiff.

-oo0oo-

By Emy Setyaningsih-2018 Page 38


[Modul 4] Modul Pengolahan Citra Digital

MODUL 4
TRANSFORMASI CITRA WARNA

4.1. Kompetensi Dasar :


Setelah mempelajari bab ini, mahasiswa :
 Memahami konsep transformasi citra warna menggunakan MATLAB.
 Mampu mengubah citra warna ke format grayscale.

4.2. Indikator :
4.2.1. Memahami konsep transformasi citra warna
 Mampu mendisain tampilan untuk mentransformasikan citra warna menggunakan
komponen GUI
 Mampu memprogram untuk mentransformasikan citra warna.
4.2.2. Mampu mengubah citra warna ke format grayscale
 Mampu mendisain tampilan untuk mengubah citra warna ke grayscale menggunakan
komponen GUI
 Mampu memprogram untuk mentransformasikan citra warna ke grayscale.

4.3. Uraian Materi 1 :


4.3.1. Transformasi Citra Warna
Suatu citra berwarna dapat dinyatakan dalam banyak cara. Salah satu metode yang
paling populer adalah dengan menggunakan metode kanal RGB. Dalam format ini, suatu citra
berwarna dinyatakan dalam bentuk gabungan dari tiga buah citra monochrome merah,
hijau, dan biru yang berukuran sama. Warna dari setiap piksel citra digital bergantung pada
kombinasi ketiga nilai intensitas piksel monochrome yang bersesuaian.
MATLAB menyediakan fasilitas yang cukup baik dalam memisahkan ketiga warna RGB, yaitu
dengan menggunakan perintah :
d = imread(nama_file);
dR=d(:,:,1);
dG=d(:,:,2);
dB=d(:,:,3);
indek 1 pada perintah d(:,:,1) artinya data citra d diambil nilai pixel warna merah, indek 2
untuk mengambil nilai pixel warna hijau dan indeks 3 untuk mengambil nilai pixel warna
merah.
Sedangkan untuk mentransformasi balik menggunakan perintah :
d(:,:,1)= dR;
d(:,:,2)= dG;
d(:,:,3)=gB;

4.3.2. Langkah untuk membuat aplikasi Transformasi Citra


a. Buatlah 3 buah pushbutton, 5 axes, 4 static text seperti terlihat pada Gambar 4.1

Gambar 4.1. Disain Untuk Menampilkan Komponen dari kanal RGB

By Emy Setyaningsih-2018 Page 39


[Modul 4] Modul Pengolahan Citra Digital

b. Atur property dari masing-masing tombol pada langkah a, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA buka
Pushbutton 2 TRANSFORMASI tranformasi
Pushbutton 3 TRANSFORMASI BALIK trans_balik
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 3 Kosongkan Kosongkan
Axes 4 Kosongkan Kosongkan
Axes 5 Kosongkan Kosongkan
3) Tombol Static text
Nama Komponen String Property Tag Properti
Static text 1 TRANFORMASI WARNA Text1
Static text 2 Komponen Red Text2
Static text 3 Komponen Green Text3
Static text 4 Komponen Blue Text4
c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama
transformasi. Maka kita akan mempunyai 2 file dengan nama transformasi.fig dan
transformasi.m
d. Sekarang otomatis akan dibukakan file transformasi.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function buka_Callback
function buka_Callback(hObject, eventdata, handles)
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menyimpan file pada function


transformasi_Callback
function transformasi_Callback(hObject, eventdata, handles)
data1=handles.data1;
dR=data1(:,:,1);
dG=data1(:,:,2);
dB=data1(:,:,3);
handles.dR=dR;
guidata(hObject,handles);
axes(handles.axes2);
imshow(handles.dR);
handles.dG=dG;
guidata(hObject,handles);

By Emy Setyaningsih-2018 Page 40


[Modul 4] Modul Pengolahan Citra Digital

axes(handles.axes3);
imshow(handles.dG);
handles.dB=dB;
guidata(hObject,handles);
axes(handles.axes4);
imshow(handles.dB);

 Tambahkan deretan perintah untuk menyimpan file pada function


trans_balik_Callback
function trans_balik_Callback(hObject, eventdata, handles)
dR=handles.dR;
dG=handles.dG;
dB=handles.dB;
citra(:,:,1)=dR;
citra(:,:,2)=dG;
citra(:,:,3)=dB;
handles.citra=citra;
guidata(hObject,handles);
axes(handles.axes5);
imshow(handles.citra);

f. Runing aplikasi yang telah dibuat.

By Emy Setyaningsih-2018 Page 41


[Modul 4] Modul Pengolahan Citra Digital

4.4. Uraian Materi 2 :


4.4.1. Mengubah Citra Warna Ke Format Gray-Scale dan BW
Proses awal yang banyak dilakukan dalam image processing adalah mengubah citra
berwarna menjadi citra gray-scale. Hal ini digunakan untuk menyederhanakan model citra.
Seperti telah dijelaskan pada sub bab 3.3. citra berwarna terdiri dari 3 layer matrik, yaitu R-
layer, G-layer dan B-layer sehingga untuk melakukan proses-proses selanjutnya tetap
diperhatikan tiga layer diatas. Bila setiap proses perhitungan dilakukan menggunakan tiga
layer, berarti dilakukan tiga perhitungan yang sama. Dengan demikian, konsep itu diubah
dengan mengubah 3 layer di atas menjadi 1 layer matrik gray-scale dan hasilnya adalah citra
gray-scale. Dalam citra ini tidak ada lagi warna, yang ada adalah derajat keabuan.
MATLAB menyediakan fasilitas yang cukup baik dalam mengubah warna RGB ke format
gray-scale, yaitu dengan menggunakan perintah :
d = rgb2gray(nama_file);
MATLAB juga menyediakan fasilitas yang cukup baik dalam mengubah warna RGB ke format
BW, yaitu dengan menggunakan perintah :
BW = im2bw(RGB, level);

4.4.2. Mengubah Citra Warna Ke Format Gray-Scale


Langkahnya :
a. Buatlah 2 buah pushbutton, 2 axes, 3 static text seperti terlihat pada Gambar 4.2

Gambar 4.2. Disain Untuk Menampilkan Hasil konversi Citra Warna ke Gray-scale

b. Atur property dari masing-masing tombol pada langkah a, yaitu:


4) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA buka
Pushbutton 2 TRANSFORMASI tranformasi
5) Tombol Axes
Nama Komponen XTick Property YTick
Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
6) Tombol Static text
Nama Komponen String Property Tag Properti
Static text 1 TRANFORMASI CITRA WARNA Text1
KE GRAY-SCALE
Static text 2 Citra Asli Text2
Static text 3 Citra Gray-Scale Text3

By Emy Setyaningsih-2018 Page 42


[Modul 4] Modul Pengolahan Citra Digital

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama


trans_gray. Maka kita akan mempunyai 2 file dengan nama trans_gray.fig dan
trans_gray.m
d. Sekarang otomatis akan dibukakan file trans_gray.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function buka_Callback
function Tombol_buka_Callback(hObject, eventdata, handles)
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menyimpan file pada function


transformasi_Callback
function transformasi_Callback(hObject, eventdata, handles)
data1=handles.data1;
citra=rgb2gray(data1);
handles.citra=citra;
guidata(hObject,handles);
axes(handles.axes2);
imshow(handles.citra);

4.5. Latihan :
1. Buatlah disain untuk menampilkan sebuah citra dengan format jpg, tiff atau citra
lain
Selanjutnya ubah citra tersebut ke citra BW dan tampilkan dalam satu layar
dengan citra asli.
2. Buatlah fungsi untuk menyimpan citra BW tersebut dengan format jpg atau bmp.
-oo0oo-

By Emy Setyaningsih-2018 Page 43


[Modul 5] Modul Pengolahan Citra Digital

MODUL 5
HISTOGRAM CITRA

5.1. Kompetensi Dasar :


Setelah mempelajari bab ini, mahasiswa :
 Mampu menampilkan histogram dari suatu citra dan memahami konsep dan fungsi
histogram sebagai alat bantu untuk mengolah citra digital.

5.2. Indikator :
Mampu menampilkan histogram dari suatu citra dan memahami konsep dan fungsi
histogram sebagai alat bantu untuk mengolah citra digital.
 Mampu mendisain tampilan untuk menampilkan histogram menggunakan
komponen GUI
 Mampu memprogram untuk menampilkan histogram untuk masing-masing
komponen warna.

5.3. Uraian Materi :


5.3.1. Histogram Citra
Histogram citra adalah grafik yang menggambarkan penyebaran nilai-nilai intensitas
pixel dari suatu citra atau bagian tertentu di dalam citra. Dari histogram dapat diketahui :
 Frekuensi kemunculan nisbi(relative) dari intensitas pada citra.
 Kecerahan dan kontras dari sebuah gambar.
Histogram merupakan alat bantu yg penting dalam pekerjaan pengolahan citra baik secara
kualitatif maupun kuantitatif.
Misal citra memiliki L derajad keabuan, yaitu dari nilai 0 sampai dengan L-1, histogram citra
dihitung dari rumus :
n
hi  i , i  0,1,2,, L  1
n
Yang dalam hal ini :
ni = jumlah pixel yg memiliki derajad keabuan I
n = jumlah seluruh pixel di dalam citra

Khusus untuk citra berwarna histogram dibuat untuk setiap kanal RGB. Informasi penting
dari histogram :
 Nilai hi menyatakan peluang pixel, P(i) dengan derajad keabuan i. jumlah seluruh h i
sama dengan 1
 Puncak histogram menunjukkan intensitas pixel yang menonjol.
 Lebar dari puncak menunjukkan rentang kontras dari gambar.
o Citra yang mempunyai kontras terlalu terang atau gelap memiliki histogram
yg sempit, dan hanya menggunakan setengah dari daerah derajad keabuan
o Citra yg baik memiliki histogram yg mengisi darah derajad keabuan secara
penuh dengan distribusi yg merata pada setiap intensitas pixel

MATLAB menyediakan fasilitas untuk menampilkan histogram suatu citra, yaitu dengan
menggunakan perintah :
imhist(nama_file);

Sedangkan untuk menampilkan histogram masing-masing komponen warna menggunakan


perintah :
dR = d(:,:,1); imhist(dR);
dG = d(:,:,2); imhist(dG);
dB = d(:,:,3); imhist(dB);

By Emy Setyaningsih-2018 Page 44


[Modul 5] Modul Pengolahan Citra Digital

5.3.2. Histogram Citra


Langkahnya :
a. Buatlah 2 buah pushbutton, 4 axes, 5 static text seperti terlihat pada Gambar 5.1

Gambar 5.1. Disain Untuk Menampilkan Histogram Citra Warna

b. Atur property dari masing-masing tombol pada langkah a, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA buka
Pushbutton 2 PROSES proses
2) Tombol Axes
Nama Komponen XTick Property YTick
Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 6 Kosongkan Kosongkan
Axes 7 Kosongkan Kosongkan
3) Tombol Static text
Nama Komponen String Property Tag Properti
Static text 1 HISTOGRAM CITRA WARNA Text1
Static text 2 Histogram Komponen Red Text2
Static text 3 Histogram Komponen Green Text3
Static text 4 Histogram Komponen Blue Text4
c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama
histogram. Maka kita akan mempunyai 2 file dengan nama histogram.fig dan
histogram.m
d. Sekarang otomatis akan dibukakan file histogram.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function buka_Callback
function buka_Callback(hObject, eventdata, handles)
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');

By Emy Setyaningsih-2018 Page 45


[Modul 5] Modul Pengolahan Citra Digital

if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menyimpan file pada function


proses_Callback
function proses_Callback(hObject, eventdata, handles)
data1=handles.data1;
dR=data1(:,:,1);
dG=data1(:,:,2);
dB=data1(:,:,3);
handles.dR=dR;
guidata(hObject,handles);
axes(handles.axes2);
imhist(handles.dR);
handles.dG=dG;
guidata(hObject,handles);
axes(handles.axes6);
imhist(handles.dG);
handles.dB=dB;
guidata(hObject,handles);
axes(handles.axes7);
imhist(handles.dB);

f. Runing aplikasi yang telah dibuat.

5.3.3. Latihan :
1. Buatlah disain untuk menampilkan sebuah citra dengan format jpg, tiff atau citra
lain
2. Buatlah fungsi untuk menampilkan histogram dari citra (Perhatian : apabila citra
yang diinputkan adalah citra warna maka buatlah function untuk
menggabungkan ketiga warna ke dalam satu histogram)
-oo0oo-

By Emy Setyaningsih-2018 Page 46


[Modul 6] Modul Pengolahan Citra Digital

MODUL 6
IMAGE ENHANCEMENT PADA DOMAIN SPATIAL
MENGGUNAKAN POINT PROCESSING
(Contrast stretching dan Image Negative)

6.1. Kompetensi Dasar :


Setelah mempelajari modul ini, mahasiswa :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan metode Contrast stretching.
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
mendapatkan negatif pada citra.

6.2. Indikator :
6.2.1. Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan metode Contrast stretching
 Mampu mendisain tampilan untuk meningkatkan mutu citra menggunakan metode
Contrast stretching menggunakan komponen GUI
 Mampu memprogram untuk meningkatkan mutu citra menggunakan metode
Contrast stretching.
6.2.2. Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
mendapatkan negatif pada citra
 Mampu mendisain tampilan untuk mendapatkan negatif pada citra menggunakan
komponen GUI
 Mampu memprogram untuk mendapatkan negatif pada citra.

6.3. Uraian Materi 1:


6.3.1. Metode Contrast Stretching
Image enhancement merupakan salah satu proses awal dalam pengolahan citra
sebelum aplikasi pengenalan objek di dalam citra. Tujuan dari teknik peningkatan mutu citra
adalah untuk melakukan pemrosesan terhadap citra agar hasilnya mempunyai kwalitas
relatif lebih baik dari citra awal untuk aplikasi tertentu.
Perbaikan ini diperlukan karena citra yg dijadikan objek pembahasan mempunyai kualitas
yg buruk, misal :
 Citra mengalami derau pd saat transmisi
 Citra terlalu gelap atau terang
 Citra kurang tajam, kabur dsb
Operasi citra digital pada dasarnya adalah memanipulasi elemen-elemen matriks. Elemen
matriks yang dimanipulasi dapat berupa
 Elemen tunggal (sebuah pixel)
 Sekumpulan elemen yang berdekatan
 Keseluruhan elemen matriks
Cara paling mudah untuk melakukan peningkatan mutu pada domain spasial adalah dengan
melakukan pemrosesan yang hanya melibatkan satu piksel saja.
Operasi titik disebut juga operasi pointwise, terdiri dari :
 Pengaksesan pixel pada lokasi yg diberikan
 Memodifikasinya dengan operasi linier atau non linier
 Menempatkan nilai pixel baru pada lokasi yg bersesuaian di dalam citra yg baru
Secara matematis dapat dituliskan sebagai berikut :
f B ( x, y )  Otitik{ f A ( x, y )}
Contrast Stretching didasarkan pada operasi pengambangan (thresholding). Operasi ini
setiap pixel nilai intensitasnya dipetakan ke salah satu dari 2 nilai misal a1 dan a2,
berdasarkan nilai ambang (threshold) T
a f ( x, y )  T
f ( x, y ) '   1
a2 f ( x, y )  T

By Emy Setyaningsih-2018 Page 47


[Modul 6] Modul Pengolahan Citra Digital

Salah satu pemanfaatannya adalah untuk mengkonversikan ke citra biner yang banyak
dimanfaatkan untuk keperluan pattern recognition yang sederhana, seperti :
 Pengenalan angka
 Pengenalan huruf
Prosesnya dengan mengubah kuantisasi citra dengan menggunakan beberapa cara,
diantaranya :
1. Nilai ambang (threshold) T menggunakan nilai tengah
Untuk citra dengan derajad keabuan 256, maka nilai tengahnya adalah 128 sehingga
untuk mengubahnya menjadi citra biner menggunakan threshold 128.
0 f ( x, y )  128
f ( x, y )'  
1 f ( x, y )  128
2. Nilai ambang (threshold) T menggunakan nilai rata-rata
Untuk menghasilkan citra biner yg sempurna dapat dilakukan dengan memilih nilai
derajad keabuan yg simetri antara yg dibawah 128 dan yang diatas 128 dengan
menggunakan nilai rata-rata.
Caranya dengan menghitung nilai rata-rata derajad keabuan dan kemudian
ditentukan thresholdingnya.
1 n m
xr   xij
m.n i 1 j 1
Jika x < xr maka x = 0, jika tidak x = 255

Metode Contrast Stretching


Langkahnya :
a. Buatlah 2 buah pushbutton, 2 axes, 3 static text seperti terlihat pada Gambar 6.1

Gambar 6.1. Disain Untuk Memproses Image Enhancement


Menggunakan Nilai Tengah

b. Atur property dari masing-masing tombol pada langkah a, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA buka
Pushbutton 2 PROSES proses
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan

By Emy Setyaningsih-2018 Page 48


[Modul 6] Modul Pengolahan Citra Digital

3) Tombol Static text


Nama Komponen String Property Tag Properti
Static text 1 IMAGE ENHANCEMENT
MENGGUNAKAN NILAI
TENGAH Text1
Static text 2 Citra Asli Text2
Static text 3 Citra Hasil Text3
c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama
nilai_tengah. Maka kita akan mempunyai 2 file dengan nama nilai_tengah.fig dan
nilai_tengah.m
d. Sekarang otomatis akan dibukakan file nilai_tengah.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function buka_Callback
function buka_Callback(hObject, eventdata, handles)
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menyimpan file pada function


proses_Callback
function transformasi_Callback(hObject, eventdata, handles)
data = handles.data1;
[b,k,l]=size(data);
if l~=1
data=rgb2gray(data);
end;
for i=1:b
for j=1:k
if data(i,j)< 128
data1(i,j)=0;
else
data1(i,j)=255;
end;
end;
end;
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes2);
imshow(data1);

f. Runing aplikasi yang telah dibuat.

6.3.2. Latihan :
1. Buatlah disain untuk menampilkan sebuah citra hasil image enhancemenet
menggunakan nilai treshold rata-rata
2. Buatlah fungsi untuk menampilkan sebuah citra hasil image enhancemenet
menggunakan nilai treshold rata-rata.

By Emy Setyaningsih-2018 Page 49


[Modul 6] Modul Pengolahan Citra Digital

6.4. Uraian Materi 2 :


6.4.1. Image Negative
Operasi Negatif yaitu mendapatkan citra negatif meniru film negatif pada fotografi
Caranya dengan mengurangi nilai intensitas pixel dari nilai keabuan maksimum, Misal : pada
citra 256 derajad keabuan (8 bit), citra negatif diperoleh dari
f ( x, y )'  255  f ( x, y )
sedangkan pada citra dgn 128 derajad keabuan
f ( x, y )'  127  f ( x, y )

Membuat Program Image Negative


Langkahnya :
a. Buatlah 2 buah pushbutton, 2 axes, 3 static text seperti terlihat pada gambar 6.2

Gambar 6.2. Disain Untuk Menampilkan Hasil Image Negative

b. Atur property dari masing-masing tombol pada langkah a, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA buka
Pushbutton 2 PROSES proses
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
3) Tombol Static text
Nama Komponen String Property Tag Properti
Static text 1 IMAGE NEGATIVE Text1
Static text 2 Citra Asli Text2
Static text 3 Citra Hasil Text3
c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama
negative. Maka kita akan mempunyai 2 file dengan nama negative.fig dan
negative.m
d. Sekarang otomatis akan dibukakan file negative.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function buka_Callback

By Emy Setyaningsih-2018 Page 50


[Modul 6] Modul Pengolahan Citra Digital

function Tombol_buka_Callback(hObject, eventdata, handles)


[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menyimpan file pada function


proses_Callback
function proses_Callback(hObject, eventdata, handles)
data = handles.data1;
[b,k,l]=size(data);
if l~=1
data=rgb2gray(data);
end;
for i=1:b
for j=1:k
data1(i,j)=255 - double(data(i,j));
if data1(i,j)< 0
data1(i,j)=0;
elseif data1(i,j) > 255
data1(i,j)=255;
end;
end;
end;
data1=uint8(data1);
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes2);
imshow(data1);

6.4.2. Latihan :
1. Buatlah disain untuk menampilkan menu pilihan untuk menampilkan hasil image
enhancement atau image negative.
2. Buatlah fungsinya untuk menampilkan sebuah citra hasil image enhancement
menggunakan metode yang anda pilih dan fungsi untuk melakukan negative
image.

-oo0oo-

By Emy Setyaningsih-2018 Page 51


[Modul 7] Modul Pengolahan Citra Digital

MODUL 7
HISTOGRAM EQUALIZATION

7.1. Kompetensi Dasar :


Setelah mempelajari bab ini, mahasiswa :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan metode Image brightness.
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan metode kontras.

7.2. Indikator :
7.2.1. Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan metode Image brightness
 Mampu mendisain tampilan untuk meningkatkan mutu citra menggunakan metode
Image brightness menggunakan komponen GUI
 Mampu memprogram untuk meningkatkan mutu citra menggunakan metode Image
brightness.
7.2.2. Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan metode Histogram Equalization
 Mampu mendisain tampilan untuk meningkatkan mutu citra menggunakan metode
Histogram Equalization menggunakan komponen GUI
 Mampu memprogram untuk meningkatkan mutu citra menggunakan metode
Histogram Equalization.

7.3. Uraian Materi :


Histogram equalization adalah suatu proses perataan histogram, dimana distribusi
nilai derajad keabuan pada suatu citra dibuat rata. Histogram processing merupakan proses
mengubah bentuk histogram agar pemetaan gray level pada citra juga berubah. Diantara
proses histogram equalization adalah dengan mengubah :
 Brightness
o Gambar gelap yang ditunjukkan dengan histogram cenderung ke sebelah kiri
o Gambar terang yang ditunjukkan dengan histogram cenderung ke sebelah
kanan
 Kontras
o Gambar low contrast yang ditunjukkan dengan histogram mengumpul di suatu
tempat
o Gambar high contrast yang ditunjukkan dengan histogram merata di semua
tempat

7.3.1. Image Brightness


Kecerahan citra dapat diperbaiki dengan menambahkan atau mengurangkan sebuah
konstanta dari setiap pixel di dalam citra. Secara matematis operasi ini ditulis sebagai :
f(x,y)’ =f(x,y) + b
dimana :
Jika b positif, kecerahan citra bertambah
Jika b negatif kecerahan citra berkurang

Metode Image Brightness


Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 7.1

By Emy Setyaningsih-2018 Page 52


[Modul 7] Modul Pengolahan Citra Digital

Gambar 7.1. Disain Untuk Memproses Image Brightness

b. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 TUTUP Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
3) Tombol Panel
Nama Komponen String Property Tag Properti
Panel 1 Pilihan Brightness Menu_Pilihan
4) Radio Button
Nama Komponen String Property Tag Properti
Radio Button 1 Menambah Kecerahan radiobutton1
Radio Button 2 Mengurangi Kecerahan radiobutton2
5) Edit text
Nama Komponen String Property Tag Properti
Edit Text 1 Kosongkan edit1
6) Static text
Nama Komponen String Property Tag Properti
Static Text 1 APLIKASI BRIGHTNESS text1
Static Text 2 Citra Asli text2
Static Text 3 Citra Hasil text3

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama


brightness. Maka kita akan mempunyai 2 file dengan nama brightness.fig dan
brightness.m
d. Sekarang otomatis akan dibukakan file brightness.m
e. tambahkan program pada masing-masing function

By Emy Setyaningsih-2018 Page 53


[Modul 7] Modul Pengolahan Citra Digital

 Tambahkan deretan perintah untuk membuka file pada function


Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp','File bmp (*.bmp)';...
'*.*','Semua File (*.*)'},...
'Buka File Citra Asli');
if isequal([nama_file1,nama_path1],[0,0])
return;
else
image=imread(fullfile(nama_path1,nama_file1));
handles.image=image;
guidata(hObject,handles);
axes(handles.axes1);
imshow(image);
end;

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menyimpan nilai yang diisikan pada tombol
edit text pada function edit1_Callback

x = str2num(get(handles.edit1,'string'));
handles.x = x;
guidata(hObject,handles);

 Tambahkan deretan perintah untuk menyimpan pilihan pada function


radiobutton1_Callback
set(handles.radiobutton2,'Value',0);
pilih = 1;
handles.pilih = pilih;
guidata(hObject,handles);

 Tambahkan deretan perintah untuk menyimpan pilihan pada function


radiobutton2_Callback
set(handles.radiobutton1,'Value',0);
pilih = 2;
handles.pilih = pilih;
guidata(hObject,handles);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
image = handles.image;
image1=double(image); %mengubah ke double presisi
x= handles.x;
pilih = handles.pilih;
[b,k,s]=size(image);
if pilih == 1
for i = 1:b
for j=1:k
if s==3
for s=1:3
hasil(i,j,s)=image1(i,j,s)+x;
if hasil(i,j,s) > 255
hasil(i,j,s) = 255;
elseif hasil(i,j,s) < 0

By Emy Setyaningsih-2018 Page 54


[Modul 7] Modul Pengolahan Citra Digital

hasil(i,j,s) = 0;
end;
end;
else
hasil(i,j)=image1(i,j) + x;
if hasil(i,j) > 255
hasil(i,j) = 255;
elseif hasil(i,j)< 0
hasil(i,j) = 0;
end;
end;
end;
end;
else
for i = 1:b
for j=1:k
if s==3
for s=1:3
hasil(i,j,s)=image1(i,j,s)-x;
if hasil(i,j,s) > 255
hasil(i,j,s) = 255;
elseif hasil(i,j,s) < 0
hasil(i,j,s) = 0;
end;
end;
else
hasil(i,j)=image1(i,j) - x;
if hasil(i,j) > 255
hasil(i,j) = 255;
elseif hasil(i,j)< 0
hasil(i,j) = 0;
end;
end;
end;
end;
end;
axes(handles.axes2);
hasil=uint8(hasil); %mengubah ke presisi int 8 bit
imshow(hasil);

f. Runing aplikasi yang telah dibuat.

7.3.2. Kontras
Kontras menyatakan sebaran terang dan gelap di dalam sebuah gambar. Berdasarkan
histogram, maka citra dibagi dalam tiga kategori :
 Citra kontras rendah, cirinya sebagian besar komposisiya sebagian terang atau gelap
dengan nilai intensitasnya mengelompokkan atau hanya menempati sebagian kecil
rentang daerah keabuan
 Citra kontras tinggi, mempunyai jangkauan keabuan yg lebar tetapi terdapat area yg
lebar yg didominasi oleh warna terang atau gelap
 Citra kontras bagus, memperlihatkan jangkauan nilai keabuan yg lebar tanpa ada
suatu nilai kebauan yg mendominasi
Untuk meningkatkan kontras dari suatu citra salah satnya dengan menggunakan metode
histogram equalization. Metode ini melakukan equalization tidak harus pada seluruh bagian,
namun dapat dilakukan pada bagian tertentu saja dari histrogram. Pada prinsipnya
equalization histogram melakukan pemerataan distribusi gray yang ada pada citra.
b=histeq(a);

Metode Histogram Equalization


Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 7.2

By Emy Setyaningsih-2018 Page 55


[Modul 7] Modul Pengolahan Citra Digital

Gambar 7.2. Disain Untuk Memproses Histogram Equalization

b. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
3) Static text
Nama Komponen String Property Tag Properti
Static Text 1 HISTOGRAM EQULAZATIONtext1
Static Text 2 Citra Asli text2
Static Text 3 Citra Hasil text3

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama


histogram_equalization. Maka kita akan mempunyai 2 file dengan
histogram_equalization.fig dan histogram_equalization.m
d. Sekarang otomatis akan dibukakan file histogram_equalization.m
e. tambahkan program pada masing-masing function

 Tambahkan deretan perintah untuk membuka file pada function


Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

By Emy Setyaningsih-2018 Page 56


[Modul 7] Modul Pengolahan Citra Digital

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
[b,k,l]=size(data);
if l~=1
data1=rgb2gray(data);
else
data1=data;
end;
J=histeq(data1);
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(data1);

f. Runing aplikasi yang telah dibuat.

7.4. Latihan :
1. Tambahkan pada Gambar 7.2 untuk menambahkan disain untuk menampilkan gambar
hasil proses teknik image enhancement melalui operasi titik menggunakan intensity
adjustment. Perintah umum untuk melakukan pemetaan linear tersebut adalah:
J = imadjust(I)
2. Pengukuran keberhasilan prosedur image enhancement secara kuantitatif dapat
dilakukan melalui perhitungan nilai parameter MSE (Mean Squared Error) yang
dirumuskan sebagai berikut:

Tambahkan pula pada gambar 7.2. komponen palete static text atau edit text untuk
menampilkan nilai MSE hasil dari proses histogram equalization dan intensity
adjustment.

-oo0oo-

By Emy Setyaningsih-2018 Page 57


[Modul 8] Modul Pengolahan Citra Digital

MODUL 8
MASK PROCESSING

8.1. Kompetensi Dasar :


Setelah mempelajari modul ini, mahasiswa :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan Tapis Linier.
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan Tapis Non Linier.

8.2. Indikator :
7.2.1. Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan Tapis Linier
 Mampu mendisain tampilan untuk meningkatkan mutu citra menggunakan metode
mask processing dengan Tapis Low Pass dan High Pass
 Mampu memprogram untuk meningkatkan mutu citra menggunakan metode mask
processing dengan Tapis Low Pass dan High Pass.
8.2.2. Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
meningkatkan mutu citra menggunakan Tapis Non Linier
 Mampu mendisain tampilan untuk meningkatkan mutu citra menggunakan metode
mask processing dengan Tapis Median
 Mampu memprogram untuk meningkatkan mutu citra menggunakan metode mask
processing dengan Tapis Median.

8.3. Uraian Materi :


Model perbaikan citra pada modul ini dilakukan dengan memanfaatkan mask matrik
yang didefinisikan terlebih dahulu sebelum operasi konvolusi dilakukan. Operasi spasial
dalam pengolahan citra digital dilakukan melalui penggunaan suatu kernel konvolusi 2-
dimensi. Konvolusi merupakan operator sentral pengolah citra dan telah digunakan secara
luas pada berbagai piranti lunak pengolahan citra. Proses konvolusi dilakukan dengan
meletakkan setiapkan pixel dari citra input dan menghasilkan pixel baru. Secara matematika
proses konvolusi sbb :
m n
o(i, j )  U i  k  1, j  l  1K k , l 
k 1 l 1

Tapis (filter) yang dapat digunakan dibagi menjadi 2 yaitu :


a. Tapis Linier
b. Tapis Non Linier

8.3.1. Tapis Linier


Tapis Linier yaitu tapis dimana pixel keluaran adalah kombinasi linier dari pixel
masukan.
Sedangkan pada Matlab perintah tapis linier menggunakan perintah
J=uint8(conv2(double(I),kernel,'same'))
Dengan : I adalah digitalisasi citra
K adalah tapis (filter) yang digunakan

Tapis linier terdiri dari :


 Tapis Low Pass
Tapis ini bertujuan untuk mempertahankan komponen frekuensi rendah
(perubahan nilai pixel yg bertahap) dan menghilangkan komponen frekuensi
tinggi (perubahan nilai pixel secara mendadak). Tapis ini sangat cocok untuk
proses penghalusan citra
Contoh : Tapis mean.
Pada prinsipnya, tapis ini merupakan salah satu jenis low-pass filter,
yang bekerja dengan cara mengganti nilai suatu piksel pada citra asal

By Emy Setyaningsih-2018 Page 58


[Modul 8] Modul Pengolahan Citra Digital

dengan nilai rata-rata dari piksel tersebut dan lingkungan


tetangganya.
1 1 1
1
Contoh Tapis Mean 3 x 3 adalah 1 1 1
9 
1 1 1
Sedangkan pada matlab perintah tapis menggunakan perintah
kernel=[1 1 1;1 1 1;1 1 1]/9;

 Tapis High Pass


Tapis ini merupakan kebalikan dari tapis low-pass yaitu mempertahankan
(mempertajam) komponen frekuensi tinggi dan menghilangkan (mengurangi)
komponen frekuensi rendah sehingga tapis ini sangat cocok utk penajaman
tepi citra. Nilai koefisien tapis pada koordinat pusat bernilai positif dan
koefisien kelilingnya bernilai negatif. Bila proses penapisan dilakukan di area
yg intensitasnya konstan atau mengalami perubahan yg lamban maka nilai
pixel keluaran adalah nol atau sangat kecil.
Contoh Tapis High Pass untuk n=3 adalah sebagai berikut :
 0 1 0   1 2 1   1  1  1

H  1 5 1  
H  2 5 2  H   1 9  1
     
 0  1 0   1  2 1   1  1  1

Tapis Low Pass


Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 8.1

Gambar 8.1. Disain Untuk Memproses Tapis Mean

b. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
3) Static text
Nama Komponen String Property Tag Properti
Static Text 1 TAPIS LOW PASS text1

By Emy Setyaningsih-2018 Page 59


[Modul 8] Modul Pengolahan Citra Digital

Static Text 2 Citra Asli text 2


Static Text 3 Citra Hasil Tapis Mean text 3

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan


nama tapis_mean. Maka kita akan mempunyai 2 file dengan tapis_mean.fig
dan tapis_mean.m
d. Sekarang otomatis akan dibukakan file tapis_mean.m
e. tambahkan program pada masing-masing function

 Tambahkan deretan perintah untuk membuka file pada function


Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
[b,k,l]=size(data);
kernel=[1 1 1;1 1 1;1 1 1]/9;
if l~=1
r=data(:,:,1);
g=data(:,:,2);
b=data(:,:,3);
rr=uint8(conv2(double(r),kernel,'same'));
gg=uint8(conv2(double(g),kernel,'same'));
bb=uint8(conv2(double(b),kernel,'same'));
data1(:,:,1)=rr;
data1(:,:,2)=gg;
data1(:,:,3)=bb;
else
data1=uint8(conv2(double(data),kernel,'same'));
end;
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(data1);
f. Runing aplikasi yang telah dibuat.

By Emy Setyaningsih-2018 Page 60


[Modul 8] Modul Pengolahan Citra Digital

8.3.2. Tapis Non Linier


Tapis yang termasuk dalam tapis Non Linier adalah tapis median atau median
filtering. Tapis median bekerja dengan mengganti nilai suatu piksel pada citra asal
dengan nilai median dari piksel tersebut dan lingkungan tetangganya. Dibandingkan
dengan tapis mean, tapis ini lebih tidak sensitif terhadap perbedaan intensitas yang
ekstrim.
Pada matlab perintah yang digunakan adalah :
J=medfilt2(I);

Tapis Median
Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 8.2

Gambar 8.2. Disain Untuk Memproses Tapis Median

b. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1. Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2. Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
3. Static text
Nama Komponen String Property Tag Properti
Static Text 1 TAPIS MEDIAN text1
Static Text 2 Citra Asli text 2
Static Text 3 Citra Hasil Tapis Median text 3

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama


tapis_median. Maka kita akan mempunyai 2 file dengan tapis_median.fig dan
tapis_median.m
d. Sekarang otomatis akan dibukakan file tapis_median.m
e. tambahkan program pada masing-masing function

 Tambahkan deretan perintah untuk membuka file pada function


Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...

By Emy Setyaningsih-2018 Page 61


[Modul 8] Modul Pengolahan Citra Digital

'*.jpg','File jpeg (*.jpg)';...


'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end
 Tambahkan deretan perintah untuk menutup file pada function
Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
[b,k,l]=size(data);
if l~=1
r=data(:,:,1);
g=data(:,:,2);
b=data(:,:,3);
rr=medfilt2(r);
gg=medfilt2(g);
bb=medfilt2(b);
data1(:,:,1)=rr;
data1(:,:,2)=gg;
data1(:,:,3)=bb;
else
data1=medfilt2(data);
end;
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(data1);

f. Runing aplikasi yang telah dibuat.

8.4. Latihan :
1. Buatlah disain dan program untuk menanpilkan hasil pemrosesan metode image
enhancment menggunakan tapis (filter) yang lain.
2. Kemudian bandingkan hasil tapis yang digunakan dengan menampilkan nilai masing-
masing MSE (Mean Squared Error) yang dirumuskan sebagai berikut:

-oo0oo-

By Emy Setyaningsih-2018 Page 62


[Modul 9] Modul Pengolahan Citra Digital

MODUL 9
OPERASI GEOMETRI DAN ARITMETIKA

9.1. Kompetensi Dasar :


Setelah mempelajari modul ini, mahasiswa :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
mengubah citra menggunakan operasi geometri dan aritmatika.

9.2. Indikator :
9.2.1. Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
mengubah citra menggunakan operasi Geometri
 Mampu mendisain tampilan dan membangun program menggunakan Matlab untuk
mengubah citra menggunakan operasi translasi
 Mampu mendisain tampilan dan membangun program menggunakan Matlab untuk
mengubah citra menggunakan operasi rotasi.
9.2.2. Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
mengubah citra menggunakan operasi Aritmatika
 Mampu mendisain tampilan dan membuat program untuk mengubah citra
menggunakan operasi pengurangan
 Mampu mendisain tampilan dan membuat program untuk mengubah citra
menggunakan operasi penambahan.

9.3. Uraian Materi :


9.3.1. Operasi Geometrik
Operasi geometri adalah perubahan hubungan spatial antara setiap pixel pada
sebuah citra. Operasi geometri memetakan kembali pixel citra input dari posisi awal(x1,y1)
ke posisi baru (x2,y2). Operasi geometri terdiri dari operasi :
1) Translasi
Adalah operasi memindahkan setiap elemen pixel citra input ke posisi baru pada citra
output dimana dimensi dari kedua citra sama
Prosesnya :
• Melakukan perubahan dengan cara menambahkan koordinat awal dengan
nilai variabel translasi
x2  x1  p
y2  y1  p
• Bila terdapat posisi hasil yg berada di luar batas citra output, pixel tsb tdk
dipetakan.
• Utk citra output yg tdk memiliki nilai pixel diset dengan nilai 0 atau warna
hitam
Apabila dituliskan menggunkan matlab, maka perintah yang diberikan adalah :
se = translate(strel(1), [px py]);
newcitra = imdilate(citra_Asli,se);
2) Penskalaan
Sebuah operasi geometri yg memberikan efek memperbesar atau memperkecil
ukuran citra input sesuai dengan variabel penskalaan citranya. Ukuran baru hasil
penskalaan didapat melalui perkalian antara ukuran citra input dengan variabel
penskalaan
Rumus :
Po  S p  Pi
Lo  Sl  Li
• Dimana :
– (Pi,Li) adalah ukuran citra input
– (Po,Lo) adalah ukuran citra output
– (Sp,Sl) adalah variabel penskalaan yg diinginkan
– Jika penskalaan > 1 hasilnya akan memperbesar ukuran citra

By Emy Setyaningsih-2018 Page 63


[Modul 9] Modul Pengolahan Citra Digital

– Jika penskalaan < 1 hasilnya akan memperkecil ukuran citra


3) Rotasi
Rotasi merupakan suatu transformasi geometri memindahkan nilai-nilai pixel dari
posisi awal menuju ke posisi akhir yg ditentukan melalui nilai variabel rotasi sebesar
θ terhadap sudut awal.
Rumus : x2  cos( )  ( x1  x0 )  sin(  )  ( y1  y0 )  x0
y 2  sin(  )  ( x1  x0 )  cos( )  ( y1  y0 )  y0
Dimana (xo,yo) koordinat titik pusat dari citra input dan θ sumbu puter
Apabila dituliskan menggunkan matlab, maka perintah yang diberikan adalah :
B = imrotate(A,angle) atau
B = imrotate(A,angle,method)
Dimana :
A adalah citra asli
Angle adalah pilihan metode interpolasi yang bisa digunakan.
Pilihan dari angle terdiri dari :

Method adalah

4) Affine transformation
Metode ini menggabungkan proses dasar seperti : translasi, rotasi, penskalaan ke
dalam satu proses untuk mendapatkan citra output yg diinginkan.
Rumus transformasi Affine x x
2
 A 1  B
y2 y1
Untuk menggambarkan proses rotasi maka nilai A dan B diganti dengan
cos( )  sin(  ) 0
A dan B 
sin(  ) cos( ) 0

Operasi Geometrik
Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 9.1

Gambar 9.1. Disain Untuk Menampilkan Hasil Rotasi Suatu Citra

By Emy Setyaningsih-2018 Page 64


[Modul 9] Modul Pengolahan Citra Digital

a. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
3) Static text
Nama Komponen String Property Tag Properti
Static Text 1 OPERASI GEOMETRIK text1
Static Text 2 Citra Asli text2
Static Text 3 Citra Hasil Rotasi text3
Static Text 4 Rotasi Yang Diinginkan text4
Static Text 5 o text5
4) Edit text
Nama Komponen String Property Tag Properti
Edit Text 1 Kosongkan edit1

b. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan


nama rotasi. Maka kita akan mempunyai 2 file dengan rotasi.fig dan rotasi.m
c. Sekarang otomatis akan dibukakan file rotasi.m
d. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function
Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


edit1_Callback
function edit1_Callback(hObject, eventdata, handles)
sudut=str2num(get(hObject,'String'));
handles.sudut=sudut;
guidata(hObject,handles);

By Emy Setyaningsih-2018 Page 65


[Modul 9] Modul Pengolahan Citra Digital

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
[b,k,l]=size(data);
kernel=[1 1 1;1 1 1;1 1 1]/9;
if l~=1
r=data(:,:,1);
g=data(:,:,2);
b=data(:,:,3);
rr=uint8(conv2(double(r),kernel,'same'));
gg=uint8(conv2(double(g),kernel,'same'));
bb=uint8(conv2(double(b),kernel,'same'));
data1(:,:,1)=rr;
data1(:,:,2)=gg;
data1(:,:,3)=bb;
else
data1=uint8(conv2(double(data),kernel,'same'));
end;
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(data1);
e. Runing aplikasi yang telah dibuat.

9.3.2. Operasi Aritmatik


Image arithmetic merupakan proses pengolahan citra dengan memanfaatkan
operator aritmetika atau operator logika terhadap dua atau lebih citra input. Proses ini
dilakukan pengolahan pixel per pixel, sehingga proses ini dilakukan terhadap citra dengan
ukuran dan resolusi yg sama. Proses yg tergolong metode ini :
a. Penjumlahan
Operasi ini dapat digunakan untuk mengurangi noise di dalam data, dengan cara merata-
ratakan derajad keabuan setiap pixel dari citra yg sama yg diambil berkali-kali.
Rumus yg digunakan :
O( x, y)  u1 ( x, y)  u2 ( x, y)
Apabila nilai pixel berbentuk vektor(r,g,b), penjumlahan dilakukan pada jenis nilai
intensitas warna yg sejenis.
Proses penjumlahan juga dapat dilakukan dengan menggunakan konstanta.
O ( x, y )  u ( x, y )  K

b. Pengurangan
Rumus :
O( x, y)  u1 ( x, y)  u2 ( x, y)
Proses pengurangan juga dapat digunakan untuk mencari perbedaan absolut dari citra.
Rumus :
O( x, y )  u1 ( x, y )  u2 ( x, y )

Proses pengurangan juga dapat dilakukan dengan menggunakan konstanta


O ( x, y )  u ( x, y )  K
Contoh aplikasi :
 Untuk mendeteksi perubahan yg terjadi selama selang waktu tertentu bila dua buah
citra yg diambil adalah citra adegan yg sama (Teknik moving image)
 Operasi selisih antara dua citra temporal dapat digunakan untuk deteksi perubahan
wilayah.
c. Perkalian
Hasilnya hampir sama dengan proses penjumlahan krn ada peningkatan nilai citra.

By Emy Setyaningsih-2018 Page 66


[Modul 9] Modul Pengolahan Citra Digital

Rumus
O( x, y)  u1 ( x, y) * u2 ( x, y)

Teknik perkalian citra biasanya memanfaatkan sebuah citra biner. Citra biner tsb
berfungsi sebagai filter karena hanya mengandung nilai 0 dan 1.
Perbedaan terlihat apabila perkalian menggunakan nilai konstanta.
 Apabila nilai konstanta >1 akan ada peningkatan nilai intensitas
 Apabila nilai konstanta negatif maka akan ada penurunan intensitas.
Rumus
O ( x, y )  u ( x, y ) * K
d. Pembagian
Operasi pembagian dapat dilakukan terhadap2 citra input atau sebuah citra input
dengan suatu konstanta. Hasil pembagian terhadap dua citra akan menghasilkan suatu
citra yang memperlihatkan letak perbedaan antara kedua citra tsb yg menampilkan
suatu citra rasio perbedaan
Rumus : O ( x, y )  u1 ( x, y )
u2 ( x, y )
Pembagian dengan menggunakan konstanta K akan menunjukan nilai penurunan pixel
citra seperti yg dihasilkan dengan proses pengurangan citra
Rumus
u ( x, y )
O ( x, y ) 
K
Operasi Aritmatik
Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 9.2

Gambar 8.2. Disain Untuk Memproses Operasi Aritmatik

b. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1. Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA 1 Tombol_buka_1
Pushbutton 2 OPEN CITRA 2 Tombol_buka_2
Pushbutton 3 PROSES Tombol_proses
Pushbutton 4 KELUAR Tombol_tutup
2. Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 3 Kosongkan Kosongkan

By Emy Setyaningsih-2018 Page 67


[Modul 9] Modul Pengolahan Citra Digital

3. Static text
Nama Komponen String Property Tag Properti
Static Text 1 CONTOH OPERASI
ARITMATIK text1
Static Text 2 Citra Asli 1 text2
Static Text 3 Citra Asli 2 text3
Static Text 4 Citra Hasil text4
4. Tombol Panel
Nama Komponen String Property Tag Properti
Panel 1 Pilihan Brightness Menu_Pilihan
5. Radio Button
Nama Komponen String Property Tag Properti
Radio Button 1 Penjumlahan Citra jumlah
Radio Button 2 Pengurangan Citra kurang

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama


operasi_aritmatik. Maka kita akan mempunyai 2 file dengan operasi_aritmatik.fig
dan operasi_aritmatik.m
d. Sekarang otomatis akan dibukakan file operasi_aritmatik.m
e. tambahkan program pada masing-masing function

 Tambahkan deretan perintah untuk membuka file pada function


Tombol_buka_1_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk membuka file pada function


Tombol_buka_2_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data2=imread(fullfile(nama_path1,nama_file1));
handles.data2=data2;
guidata(hObject,handles);
axes(handles.axes2);
imshow(handles.data2);
else
return;
end

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...

By Emy Setyaningsih-2018 Page 68


[Modul 9] Modul Pengolahan Citra Digital

'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


jumlah_Callback
set(handles.kurang,'Value',0);
pilih = 1;
handles.pilih = pilih;
guidata(hObject,handles);

 Tambahkan deretan perintah untuk menyimpan pilihan pada function


kurang_Callback
set(handles.jumlah,'Value',0);
pilih = 2;
handles.pilih = pilih;
guidata(hObject,handles);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data1 = handles.data1;
data2 = handles.data2;
pilih = handles.pilih;
[b1,k1,d1]=size(data1);
[b2,k2,d2]=size(data2);
if (b1==b2)& (k1==k2) & (d1==d2)
if d1==1
data1=double(citra1);
data2=double(citra2);
for i=1:b1
for j=1:k1
if pilih==1
newcitra(i,j)=abs(data1(i,j)+data2(i,j));
else
newcitra(i,j)=abs(data1(i,j)-data2(i,j));
end;
if newcitra<=0
newcitra(i,j)=0;
elseif newcitra>=255
newcitra(i,j)=255;
end;
end;
end;
newcitra=uint8(newcitra);
else
R1=double(data1(:,:,1));
G1=double(data1(:,:,2));
B1=double(data1(:,:,3));
R2=double(data2(:,:,1));
G2=double(data2(:,:,2));
B2=double(data2(:,:,3));
for i=1:b1
for j=1:k1
if pilih == 2
nr(i,j)=abs(R1(i,j)-R2(i,j));
ng(i,j)=abs(G1(i,j)-G2(i,j));
nb(i,j)=abs(B1(i,j)-B2(i,j));
else
nr(i,j)=R1(i,j)+R2(i,j);
ng(i,j)=G1(i,j)+G2(i,j);
nb(i,j)=B1(i,j)+B2(i,j);

By Emy Setyaningsih-2018 Page 69


[Modul 9] Modul Pengolahan Citra Digital

end;
if nr<=0
nr(i,j)=0;
elseif nr>=255
nr(i,j)=255;
end;

if ng<=0
ng(i,j)=0;
elseif ng>=255
ng(i,j)=255;
end;

if nb<=0
nb(i,j)=0;
elseif nb>=255
nb(i,j)=255;
end;
end;
end;
newcitra(:,:,1)=uint8(nr);
newcitra(:,:,2)=uint8(ng);
newcitra(:,:,3)=uint8(nb);
end;
axes(handles.axes3);
imshow(newcitra);
else
errordlg('Ukuran Citra 1 dan Citra2 Tidak Sama,Ulangi Inputkan !','Citra Input
Error');
end

f. Runing aplikasi yang telah dibuat.

9.4. Latihan :
1. Buatlah disain dan program untuk menanpilkan hasil pemrosesan menggunakan operasi
geometrik yang lain
2. Buatlah disain dan program untuk menanpilkan hasil pemrosesan menggunakan operasi
Aritmatik yang lain

-oo0oo-

By Emy Setyaningsih-2018 Page 70


[Modul 10] Modul Pengolahan Citra Digital

MODUL 10
IMAGE ENHANCEMENT PADA DOMAIN FREKUENSI

10.1. Kompetensi Dasar :


Setelah mempelajari modul ini, mahasiswa :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
mengubah suatu citra dari satu domain ke domain lainnya

10.2. Indikator :
Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
mengubah citra menggunakan basis transformasi
 Mampu mendisain tampilan dan membangun program menggunakan Matlab untuk
mengubah citra menggunakan DCT (Discrete Cosinus Transform)
 Mampu mendisain tampilan dan membangun program menggunakan Matlab untuk
mengubah citra menggunakan DFT (Discrete Fourier Transform)
 Mampu mendisain tampilan dan membangun program menggunakan Matlab untuk
mengubah citra menggunakan FFT (Fast Fourier Transform)

10.3. Uraian Materi :


Pada konsep pengolahan citra, kita harus mengubah suatu citra dari satu domain ke
domain lainnya. Perubahan ini bertujuan untuk mempermudah pengkodean. Proses
perubahan ini dinamakan transformasi. Transformasi ini dapat dilakukan dengan beberapa
metode antara lain: Transformasi Cosinus diskret, transformasi wavelet, dan transformasi
fourier. Keuntungan penggunaan transformasi adalah hasil dari domain lebih sesuai untuk
proses pengkuantisasian.
Ada banyak metode yang digunakan untuk melakukan tranformasi image. Dua
diantaranya adalah
1) DCT (Discrete Cosinus Transform)
Discrete Cosine Transform merepresentasikan sebuah citra dari penjumlahan
sinusoida dari magnitude dan frekuensi yang berubah-ubah. Sifat dari DCT adalah
mengubah informasi citra yang signifkan dikonsentrasikan hanya pada beberapa
koefisien DCT. Oleh karena itu DCT sering digunakan untuk kompresi citra seperti
pada JPEG.
j=dct2(i);
2) FFT (Fast Fourier Transform).
Transformasi ini memindahkan informasi citra dari domain spasial ke dalam domain
frekuensi, yaitu dengan merepresentasikan citra spasial sebagai suatu penjumlahan
eksponensial kompleks dari beragam frekuensi, magnituda, dan fasa
Y = fft2(X)

Image Enhancement pada Domain Frekuensi


Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 10.1

Gambar 10.1. Disain Untuk Menampilkan Hasil DCT dan FFT

By Emy Setyaningsih-2018 Page 71


[Modul 10] Modul Pengolahan Citra Digital

a. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 3 Kosongkan Kosongkan
3) Static text
Nama Komponen String Property Tag Properti
Static Text 1 PERBAIKAN KUALITAS CITRA
PADA DOMAIN FREKUENSI text1
Static Text 2 Citra Asli text2
Static Text 3 Citra Hasil DCT text3
Static Text 4 Citra Hasil FFT text4

b. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan


nama domain_frekuensi. Maka kita akan mempunyai 2 file dengan
domain_frekuensi.fig dan domain_frekuensi.m
c. Sekarang otomatis akan dibukakan file domain_frekuensi.m
d. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function
Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
[b,k,l]=size(data);
if l~=1
r=data(:,:,1);
g=data(:,:,2);

By Emy Setyaningsih-2018 Page 72


[Modul 10] Modul Pengolahan Citra Digital

b=data(:,:,3);
rr=dct2(r);
gg=dct2(g);
bb=dct2(b);
data1(:,:,1)=rr;
data1(:,:,2)=gg;
data1(:,:,3)=bb;
r2=fft2(r);
g2=fft2(g);
b2=fft2(b);
data2(:,:,1)=r2;
data2(:,:,2)=g2;
data2(:,:,3)=b2;
else
data1=dct2(data);
data2=fft2(data);
end;
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(data1);
axes(handles.axes3);
imshow(data2);

e. Runing aplikasi yang telah dibuat.

10.4. Latihan :
Buatlah disain dan program untuk menanpilkan hasil pemrosesan menggunakan
tranformasi wavelet

-oo0oo-

By Emy Setyaningsih-2018 Page 73


[Modul 11] Modul Pengolahan Citra Digital

MODUL 11
ANALISIS CITRA

11.1. Kompetensi Dasar :


Setelah mempelajari modul ini, mahasiswa :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
melakukan proses analisis citra dengan menggunakan teknik operasi deteksi tepi dan
deteksi garis

11.2. Indikator :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
melakukan analisis terhadap citra menggunakan teknik deteksi tepi turunan pertama
dan kedua
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
melakukan analisis terhadap citra menggunakan teknik deteksi garis

11.3. Uraian Materi :


11.3.1. Deteksi Tepi
Tepian dari suatu citra mengandung informasi penting dari citra bersangkutan.
Tepian citra dapat merepresentasikan objek-objek yang terkandung dalam citra tsb, bentuk
dan ukurannya serta terkadang juga informasi tentang tekstur. Tepian citra adalah posisi
dimana intensitas pixel dari citra berubah dari nilai rendah ke nilai tinggi atau sebaliknya.
Jarak

Perubahan Intensitas

= arah tepi

Deteksi tepi (Edge Detection) pada suatu citra adalah suatu proses yang menghasilkan
tepi-tepi dari objek-objek gambar. Suatu titik (x,y) Dikatakan sebagai tepi dari suatu citra
bila titik tersebut mempunyai perbedaan yang tinggi dengan tetangganya. Berdasarkan
prinsip-prinsip filter pada citra maka tepi suatu gambar dapat diperoleh menggunakan High
Pass Filter (HPF), yang mempunyai Karakteristik :
∑ ∑ H(x,y) = 0
y x

Yang penting diperhatikan pada deteksi tepi bahwa hanya dapat dilakukan menggunakan
citra
grayscale atau citra 2-D.
Teknik yang digunakan untuk pendeteksian tepi antara lain :
 Operator turunan pertama ( differential gradient )
Deteksi tepi menggunakan turunan pertama menghasilkan tepian berupa garis yang
tebal. Macam-macam metode untuk proses deteksi tepi turunan pertama, antara lain :
◦ Metode Robert
◦ Metode Prewitt
◦ Metode Sobel
 Operator turunan kedua ( Laplacian )
Idealnya operator deteksi harus dapat menampilkan pusat tepian, yaitu menghasilkan
tepian yang sempit. Oleh karena itu diperlukan proses thining untuk mengurangi lebar
tepian menjadi 1 pixel. Dengan deteksi tepian turunan ke dua akan menghasilkan tepian
yang lebih tipis. Salah satu operatornya adalah Laplacian of Gaussian

By Emy Setyaningsih-2018 Page 74


[Modul 11] Modul Pengolahan Citra Digital

Deteksi Tepi
Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 11.1

Gambar 11.1. Disain Untuk Menampilkan Hasil Deteksi Tepi

a. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 3 Kosongkan Kosongkan
Axes 4 Kosongkan Kosongkan
3) Static text
Nama Komponen String Property Tag Properti
Static Text 1 DETEKSI TEPI TURUNAN
PERTAMA text1
Static Text 2 Citra Asli text2
Static Text 3 Operator Prewit text3
Static Text 4 Operator Sobel text4
Static Text 5 Operator Robert text5

b. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan


nama deteksi_tepi. Maka kita akan mempunyai 2 file dengan deteksi_tepi.fig
dan deteksi_tepi.m
c. Sekarang otomatis akan dibukakan file deteksi_tepi.m
d. tambahkan program pada masing-masing function

By Emy Setyaningsih-2018 Page 75


[Modul 11] Modul Pengolahan Citra Digital

 Tambahkan deretan perintah untuk membuka file pada function


Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
gray = rgb2gray(data);
BW1 = edge(gray,'prewitt');
BW2 = edge(gray,'sobel');
BW3 = edge(gray,'roberts');
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(BW1);
axes(handles.axes3);
imshow(BW2);
axes(handles.axes4);
imshow(BW3);

e. Runing aplikasi yang telah dibuat.

11.3.2. Deteksi Garis


Untuk mendeteksi garis dapat digunakan 4 mask pendeteksi garis pada arah 0 o, 45o,
90o, dan 135o .
 1  1  1  1 2  1  1  1 2   2  1  1
 2 2 2   1 2  1  1 2  1  1 2  1
       
 1  1  1  1 2  1  2  1  1  1  1 2 

Citra ditapis dengan setiap kernel diatas, kemudian citra hasil diperoleh dengan
melakukan operasi maksimal terhadap keempat citra yang dihasilkan dari keempat kernel
tersebut.

Deteksi Garis
Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 11.2

By Emy Setyaningsih-2018 Page 76


[Modul 11] Modul Pengolahan Citra Digital

Gambar 11.2. Disain Untuk Menampilkan Hasil Deteksi Garis

b. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 3 Kosongkan Kosongkan
Axes 4 Kosongkan Kosongkan
Axes 5 Kosongkan Kosongkan
Axes 6 Kosongkan Kosongkan
3) Static text
Nama Komponen String Property Tag Properti
Static Text 1 DETEKSI GARIS text1
Static Text 2 Citra Asli text2
Static Text 3 Citra Hasil Penggabungan text3
Static Text 4 Mask 0 derajat text4
Static Text 5 Mask 45 derajat text5
Static Text 6 Mask 90 derajat text6
Static Text 7 Mask 135 derajat text7

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan


nama deteksi_garis. Maka kita akan mempunyai 2 file dengan
deteksi_garis.fig dan deteksi_garis.m
d. Sekarang otomatis akan dibukakan file deteksi_garis.m
e. tambahkan program pada masing-masing function

By Emy Setyaningsih-2018 Page 77


[Modul 11] Modul Pengolahan Citra Digital

 Tambahkan deretan perintah untuk membuka file pada function


Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
gray = rgb2gray(data);
kernel0=[-1 -1 -1;2 2 2;-1 -1 -1];
kernel45=[-1 2 -1;-1 2 -1;-1 2 -1];
kernel90=[-1 -1 2;-1 2 -1;2 -1 -1];
kernel135=[2 -1 -1;-1 2 -1;-1 -1 2];
BW1=uint8(conv2(double(gray),kernel0,'same'));
BW2=uint8(conv2(double(gray),kernel45,'same'));
BW3=uint8(conv2(double(gray),kernel90,'same'));
BW4=uint8(conv2(double(gray),kernel135,'same'));
dt2=uint8(conv2(double(BW1),kernel45,'same'));
dt3=uint8(conv2(double(dt2),kernel90,'same'));
dt4=uint8(conv2(double(dt3),kernel135,'same'));
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(dt4);
axes(handles.axes3);
imshow(BW1);
axes(handles.axes4);
imshow(BW2);
axes(handles.axes5);
imshow(BW3);
axes(handles.axes6);
imshow(BW4);

f. Runing aplikasi yang telah dibuat.

11.4. Latihan :
Buatlah disain dan program untuk menampilkan hasil pemrosesan menggunakan
operator turunan kedua.

-oo0oo-

By Emy Setyaningsih-2018 Page 78


[Modul 12] Modul Pengolahan Citra Digital

MODUL 12
MORFOLOGI

12.1. Kompetensi Dasar :


Setelah mempelajari modul ini, mahasiswa :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
melakukan proses morfologi

12.2. Indikator :
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
melakukan proses erosi dan dilasi
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
melakukan proses closing dan opening
 Mampu merancang dan membangun program yang dapat dimanfaatkan untuk
melakukan proses pelabelan dan pewarnaan pada setiap objek

12.3. Uraian Materi :


Operasi morfologi adalah teknik pengolahan citra yang didasarkan pada bentuk
segmen atau region dalam citra. Karena difokuskan pada bentuk obyek, maka operasi ini
biasanya diterapkan pada citra biner. Segmentasi dilakukan dengan membedakan antara
obyek dan latar, antara lain dengan memanfaatkan operasi pengambangan yang mengubah
citra warna dan skala keabuan menjadi citra biner. Nilai biner dari citra hasil
merepresentasikan 2 keadaan: obyek dan bukan obyek (latar). Meskipun lebih banyak
dipakai pada citra biner, operasi morfologi sering pula digunakan pada citra skala keabuan
dan warna.
Secara umum, pemrosesan citra secara morfologi dilakukan dengan cara mem-
passing sebuah structuring element terhadap sebuah citra dengan cara yang hampir sama
dengan konvolusi. Structuring element dapat diibaratkan dengan mask pada pemrosesan
citra biasa (bukan secara morfologi). Structuring element (SE) dapat berukuran sembarang.
Structuring element juga memiliki titik poros (disebut juga titik origin/ titik asal/titik
acuan). Pada matlab terdapat bentuk SE, diantaranya :
 SE = strel(shape, parameters)
 SE = strel('arbitrary', NHOOD)
 SE = strel('arbitrary', NHOOD, HEIGHT)
 SE = strel('ball', R, H, N)
 SE = strel('diamond', R)
 SE = strel('disk', R, N)
 SE = strel('line', LEN, DEG)
 SE = strel('octagon', R)
 SE = strel('pair', OFFSET)
 SE = strel('periodicline', P, V)
 SE = strel('rectangle', MN)
 SE = strel('square', W)

Operasi morfologi biasanya didasarkan pada nilai-nilai dari tetangga langsung di


sekeliling titik obyek yang ditinjau (Moore neighborhood). Untuk operasi terhubung-4 (4-
connected) maka tetangga yang diperhatikan hanya yang langsung bersebelahan, yaitu titik
di sebelah kiri, kanan, atas dan bawah, sedangkan untuk operasi terhubung-8 (8-connected)
tetangga diagonalnya diikut sertakan
Beberapa operasi morfologi yang dapat kita lakukan adalah:
– Dilasi, Erosi
– penutupan (closing), pembukaan (opening)
– Thinning, shrinking, pruning, thickening, pengerangkaan (skeletonization)
– pengisian (filling), pelabelan,
– pencarian batas/kontur, dll

By Emy Setyaningsih-2018 Page 79


[Modul 12] Modul Pengolahan Citra Digital

12.3.1. Erosi dan Dilasi


Operasi erosi adalah kebalikan dari operasi dilasi. Erosi merupakan proses
penghapusan titik-titik objek (1) menjadi bagian dari latar (0), berdasarkan structuring
element S yang digunakan. Pada operasi ini, ukuran obyek diperkecil dengan mengikis
sekeliling obyek. Cara yang dapat dilakukan juga ada 2.
– dengan mengubah semua titik batas menjadi titik latar
– dengan menset semua titik di sekeliling titik latar menjadi titik latar.
Pada matlab bentuk umum perintah dari proses dilasi adalah
citraErosi = imerode(citraGray, se);
Operasi Dilasi dilakukan untuk memperbesar ukuran segmen obyek dengan
menambah lapisan di sekeliling obyek. Terdapat 2 cara untuk melakukan operasi ini, yaitu
 dengan cara mengubah semua titik latar yang bertetangga dengan titik batas menjadi
titik obyek, atau lebih mudahnya set setiap titik yang tetangganya adalah titik obyek
menjadi titik obyek.
 Dengan mengubah semua titik di sekeliling titik batas menjadi titik obyek, atau lebih
mudahnya set semua titik tetangga sebuah titik obyek menjadi titik obyek.
Pada matlab bentuk umum perintah dari proses dilasi adalah
citraDilasi = imdilate(citraGray, se);

Erosi dan Dilasi


Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 12.1

Gambar 12.1. Disain Untuk Menampilkan Hasil Proses Erosi dan Dilasi

b. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 3 Kosongkan Kosongkan
3) Static text
Nama Komponen String Property Tag Properti
Static Text 1 OPERASI EROSI DAN DILASItext1
Static Text 2 Citra Asli text2
Static Text 3 Operasi Erosi text3

By Emy Setyaningsih-2018 Page 80


[Modul 12] Modul Pengolahan Citra Digital

Static Text 4 Operasi Dilasi text4


Static Text 5 Pilihan Bentuk SE text5
4) Pop-up Menu
Nama Komponen String Property Tag Properti
popupmenu1 Pilihan bentuk SE popupmenu1
c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama
morfologi1. Maka kita akan mempunyai 2 file dengan morfologi1.fig dan
morfologi1.m
d. Sekarang otomatis akan dibukakan file morfologi.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function
Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menutup file pada function


popupmenu1_Callback
val = get(hObject,'Value');
switch val
case 1
NHOOD=[1 0 0;1 0 0;1 0 1];
SE = strel('arbitrary', NHOOD);
case 2
SE = strel('ball',5,5);
case 3
SE = strel('diamond', 3);
case 4
SE = strel('disk',3,8);
case 5
SE = strel('line',11,90);
case 6
SE = strel('octagon',3);
case 7
OFFSET=[2 2];
SE = strel('pair', OFFSET);
case 8
V=[1 -2];
SE = strel('periodicline',2, V);

By Emy Setyaningsih-2018 Page 81


[Modul 12] Modul Pengolahan Citra Digital

case 9
MN =[3 5];
SE = strel('rectangle', MN);
case 10
SE = strel('square',11);
end;
handles.SE=SE;
guidata(hObject,handles);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
SE=handles.SE;
citraGray = rgb2gray(data);
data1 = imerode(citraGray,SE);
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(data1);

f. Runing aplikasi yang telah dibuat.

12.3.2. Opening dan Closing


Opening adalah proses erosi yang diikuti dengan dilasi. Citra asli di erosi terlebih
dahulu, kemudian hasilnya di dilasi. Efek yang dihasilkan adalah menghilangnya atau
menutup objek-objek kecil atau lubang-lubang kecil yang ada dalam segmen obyek yang
tipis, dan secara umum menghaluskankan batas dari objek besar tanpa mengubah area
objek secara signifikan. Operasi opening juga digunakan untuk menggabungkan 2 segmen
obyek yang saling berdekatan (menutup sela antara 2 obyek yang sangat berdekatan). Pada
matlab perintah yang digunakan adalah :
j=imopen(citra,SE);
Closing juga merupakan kombinasi antara operasi dilasi dan erosi yang dilakukan
secara berurutan, tetapi citra asli di dilasi terlebih dahulu baru kemudian hasilnya di erosi.
Efek yang dihasilkan adalah mengisi lubang kecil pada objek, menggabungkan objek-objek
yang berdekatan, dan secara umum men-smooth-kan batas dari objek besar tanpa
mengubah area objek secara signifikan. Operasi ini digunakan untuk memutus bagian-
bagian dari obyek yang hanya terhubung dengan 1 atau 2 buah titik saja. Pada matlab
perintah yang digunakan adalah :
j=imclose(citra,SE);

Operasi Opening dan Closing


Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 12.2

Gambar 12.2. Disain Untuk Menampilkan Hasil Operasi Opening dan Closing

By Emy Setyaningsih-2018 Page 82


[Modul 12] Modul Pengolahan Citra Digital

b. Atur property dari masing-masing tombol pada langkah 1, yaitu:


1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 3 Kosongkan Kosongkan
Axes 4 Kosongkan Kosongkan
Axes 5 Kosongkan Kosongkan
Axes 6 Kosongkan Kosongkan
3) Static text
Nama Komponen String Property Tag Properti
Static Text 1 OPERASI OPENING DAN
CLOSING text1
Static Text 2 Citra Asli text2
Static Text 3 Operasi Opening text3
Static Text 4 Operasi Closing text4
Static Text 5 Pilihan Bentuk SE text5
4) Pop-up Menu
Nama Komponen String Property Tag Properti
popupmenu1 Pilihan bentuk SE popupmenu1

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan


nama morfologi2. Maka kita akan mempunyai 2 file dengan morfologi2.fig
dan morfologi2.m
d. Sekarang otomatis akan dibukakan file morfologi2.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function
Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

By Emy Setyaningsih-2018 Page 83


[Modul 12] Modul Pengolahan Citra Digital

 Tambahkan deretan perintah untuk menutup file pada function


popupmenu1_Callback
val = get(hObject,'Value');
switch val
case 1
NHOOD=[1 0 0;1 0 0;1 0 1];
SE = strel('arbitrary', NHOOD);
case 2
SE = strel('ball',5,5);
case 3
SE = strel('diamond', 3);
case 4
SE = strel('disk',3,8);
case 5
SE = strel('line',11,90);
case 6
SE = strel('octagon',3);
case 7
OFFSET=[2 2];
SE = strel('pair', OFFSET);
case 8
V=[1 -2];
SE = strel('periodicline',2, V);
case 9
MN =[3 5];
SE = strel('rectangle', MN);
case 10
SE = strel('square',11);
end;
handles.SE=SE;
guidata(hObject,handles);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data = handles.data1;
SE=handles.SE;
citraGray = rgb2gray(data);
data1 = imopen(citraGray,SE);
axes(handles.axes1);
imshow(data);
axes(handles.axes2);
imshow(data1);

f. Runing aplikasi yang telah dibuat.

12.3.3. Pelabelan dan Pewarnaan


Sebelum dilakukan proses pelabelan dan filling maka terlebih dahulu dilakukan
proses object counting. Object counting yaitu proses menghitung objek berdasarkan
konektivitasnya terhadapap piksel disekitarnya, bisa berdasarkan 4 piksel koneksi atau
menggunakan 8 piksel koneksi.
Fungsi yang digunakan untuk menghitung objek yaitu:
[labeled,numObjects] = bwlabel(imbw,4);
Sedangkan fungsi yang digunakan untuk memberi label dan warna yang berbeda pada setiap
objek yaitu:
imlabel = label2rgb(labeled, @spring, 'c', 'shuffle');

Operasi Pelabelan dan Pewarnaan


Langkah-langkah yang dilakukan :
a. Buatlah disain seperti terlihat pada gambar 12.3

By Emy Setyaningsih-2018 Page 84


[Modul 12] Modul Pengolahan Citra Digital

Gambar 12.3. Disain Untuk Menampilkan Hasil Operasi Labeling dan Pewarnaan
b. Atur property dari masing-masing tombol pada langkah 1, yaitu:
1) Tombol Pushbutton
Nama Komponen String Property Tag Properti
Pushbutton 1 OPEN CITRA Tombol_buka
Pushbutton 2 PROSES Tombol_proses
Pushbutton 3 KELUAR Tombol_tutup
2) Tombol Axes
Nama Komponen XTick Property YTick Properti
Axes 1 Kosongkan Kosongkan
Axes 2 Kosongkan Kosongkan
Axes 3 Kosongkan Kosongkan
5) Static text
Nama Komponen String Property Tag Properti
Static Text 1 PELABELAN DAN
PEWARNAAN text1
Static Text 2 Citra Asli text2
Static Text 3 Citra Grayscale text3
Static Text 4 Citra Hasil text4

c. Langkah selanjutnya adalah menyimpan figure diatas, misalnya dengan nama


labeling. Maka kita akan mempunyai 2 file dengan labeling.fig dan labeling.m
d. Sekarang otomatis akan dibukakan file labeling.m
e. tambahkan program pada masing-masing function
 Tambahkan deretan perintah untuk membuka file pada function
Tombol_buka_Callback
[nama_file1, nama_path1]=uigetfile( ...
{'*.bmp;*.jpg;*.jpeg','File Citra (*.bmp,*.jpg,*.jpeg)';
'*.bmp','File Bitmap (*.bmp)';...
'*.jpg','File jpeg (*.jpg)';...
'*.jpeg','File jpeg (*.jpeg)'},...
'Buka File Citra ');
if ~isequal(nama_file1, 0)
data1=imread(fullfile(nama_path1,nama_file1));
handles.data1=data1;
guidata(hObject,handles);
axes(handles.axes1);
imshow(handles.data1);
else
return;
end

By Emy Setyaningsih-2018 Page 85


[Modul 12] Modul Pengolahan Citra Digital

 Tambahkan deretan perintah untuk menutup file pada function


Tombol_tutup_Callback
button = questdlg('Tutup Aplikasi ?',...
'Tutup','Ya','Tidak','Ya');
if strcmp(button,'Tidak')
return;
end
delete(handles.figure1);

 Tambahkan deretan perintah untuk menampilkan hasil pada function


Tombol_proses_Callback
data1 = handles.data1;
gray=rgb2gray(data1);
thresh=graythresh(gray);
imbw=im2bw(gray,thresh);
[labeled,numObjects] = bwlabel(imbw,8);
imlabel = label2rgb(labeled, @spring, 'c', 'shuffle');
axes(handles.axes1);
imshow(data1);
axes(handles.axes2);
imshow(imbw);
axes(handles.axes3);
imshow(imlabel);

f. Runing aplikasi yang telah dibuat.

12.4. Latihan
1. Tambahkan function/statemen untuk menampilkan hasil operasi dilasi pada Gambar 12.1
2. Tambahkan function/statemen untuk menampilkan hasil operasi closing pada Gambar
12.2
-oo0oo-

By Emy Setyaningsih-2018 Page 86

Anda mungkin juga menyukai