Anda di halaman 1dari 38

BUKU PANDUAN PRAKTIKUM

PENGOLAHAN CITRA DIGITAL


Edisi Kedua
Disusun oleh:
Fitri Arnia
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS SYIAH KUALA
Mei 2010
Daftar Isi
Prakata ii
1 Pengantar Matlab untuk Pengolahan Citra 1
1 .1 Dasar Teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 .2 Persiapan Praktikum . . . . . . . . . . . . . . . . . . . . . . . . . 2
1 .3 Perintah Dasar Matlab untuk Pengolahan Citra . . . . . . . . . . 2
1 .3.1 Memuat Citra pada Memori . . . . . . . . . . . . . . . . . 2
1 .3.2 Merubah Tipe Data Citra . . . . . . . . . . . . . . . . . . 3
1 .3.3 Merubah Citra berwarna ke gray-scale . . . . . . . . . . . 3
1 .3.4 Menampilkan Citra Pada Layar Monitor . . . . . . . . . 3
1 .3.5 Menyimpan Citra . . . . . . . . . . . . . . . . . . . . . . . 3
1 .3.6 Operasi Matriks pada Matlab . . . . . . . . . . . . . . . . 4
1 .4 Membuat m-le dan Fungsi . . . . . . . . . . . . . . . . . . . . . 5
1 .5 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2 Transformasi Intensitas dan Ekualisasi Histogram 7
2 .1 Tujuan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 .2 Dasar Teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 .2.1 Fungsi Transformasi Intensitas . . . . . . . . . . . . . . . 7
2 .2.2 Ekualisasi Histogram . . . . . . . . . . . . . . . . . . . . . 8
2 .3 Kode Matlab dan Penjelasannya . . . . . . . . . . . . . . . . . . 10
2 .4 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3 Penapisan Spasial - Denoising Citra 15
3 .1 Tujuan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 .2 Dasar Teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 .2.1 Konsep Penapisan Citra . . . . . . . . . . . . . . . . . . . 15
3 .2.2 Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 .2.3 Tapis Spasial untuk Denoising . . . . . . . . . . . . . . . . 16
3 .3 Kode Matlab dan Penjelsannya . . . . . . . . . . . . . . . . . . . 20
3 .4 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
i
ii
4 Penapisan Spasial - Peningkatan Citra 25
4 .1 Tujuan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 .2 Dasar Teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4 .2.1 Penajaman Menggunakan Turunan Order Pertama . . . 26
4 .2.2 Penajaman dengan LaplacianTurunan Kedua . . . . . . 28
4 .3 Kode Matlab dan Penjelasannya . . . . . . . . . . . . . . . . . . 30
4 .4 Tugas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 Penapisan Pada Domain Frekuensi 35
5 .1 Dasar Teori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
c F. Arnia 2010
Laboratorium Pengolahan Data
Modul 1
Pengantar Matlab untuk
Pengolahan Citra
1 .1 Dasar Teori
Citra digital adalah deretan dua dimensi dari nilai cuplikan,
x[n
1
, n
2
], 0 n
1
< N
1
0 n
2
< N
2
N
1
dan N
2
memiliki panjang terbatas, dengan arah masing masing vertikal
dan horizontal. Istilah piksel dipahami sama dengan sebuah cuplikan pada
citra. Koordinat n
1
adalah indeks baris, dan n
2
adalah indeks kolom. Hal ini
ditunjukkan pada Gambar 1 .1
Gambar 1 .1: Interpretasi koordinat dari cuplikan citra
1
2 1 . PENGANTAR MATLAB UNTUK PENGOLAHAN CITRA
Nilai cuplikan x[n
1
, n
2
] merepresentasikan intensitas citra pada posisi [n
1
, n
2
].
Nilai cuplikan biasanya adalah bilangan bulat tidak bertanda (unsign integer)
sebesar B-bit. Sehingga
x[n
1
, n
2
] {0, 1, 2, . . . 2
B
1} (1 .1)
1 .2 Persiapan Praktikum
Buatlah direktori baru untuk menyimpan le yang akan digunakan pada
praktikum ini.
Download/ambil citra dan simpan citranya di direktori anda .
Buka programMatlab dari icon di desktop atau dari Start>ProgramMenu.
Pindah ke direktori yang baru anda buat tadi (gunakan cd).
Klik icon untuk membuka le baru. Anda siap memulai membuat pro-
gram Matlab.
1 .3 Perintah Dasar Matlab untuk Pengolahan Citra
Matlab adalah salah satu perangkat lunak yang sesuai untuk pengolahan citra,
karena bekerjanya berbasis matriks (Citra digital bisa dianggap sebagai suatu
matriks). Matlab memiliki banyak fungsi built-in yang dapat digunakan un-
tuk mengolah citra. Untuk mengetahui apa sebenarnya yang dilakukan setiap
fungsi built-in tersebut, kita dapat mengetikkan perintah help <nama-fungsi>.
Untuk melihat source-program-nya, ketikkan type <nama-fungsi>.
1 .3.1 Memuat Citra pada Memori
Memuat citra citra.jpg pada memori dilakukan dengan perintah
C = imread(citra.jpg);
C adalah nama variable yang memuat citra.jpg.
c F. Arnia 2010
Laboratorium Pengolahan Data
1 .3. PERINTAH DASAR MATLAB UNTUK PENGOLAHAN CITRA 3
1 .3.2 Merubah Tipe Data Citra
Terdapat beberapa tipe bilangan yang difasilitasi oleh Matlab, seperti single
dan double. Untuk merubah tipenya ke bentuk double, ketikkan,
C = double(C);
C disebelah kiri adalah variabel baru yang setiap elemennya bertipe dou-
ble.
1 .3.3 Merubah Citra berwarna ke gray-scale
Citra berwarna dengan 3 komponen warna (RGB) dapat dirubah ke citra gray-
scale dengan perintah:
C-abu-abu = (C(:, :, 1) + C(:, :, 2) + C(:, :, 3))/3 : atau
dengan fungsi built-in rgb2gray.
Perintah pertama menghitung nilai intensitas rata-rata dari komponen merah
hijau dan biru, sedangkan perintah kedua memberikan nilai luminance. Hal
ini dibahas pada topik citra berwarna.
1 .3.4 Menampilkan Citra Pada Layar Monitor
Citra C dapat dilihat pada layar monitor dengan perintah:
imshow(C)
imagesc(C)
Kedua fungsi di atas sedikit berbeda, untuk fungsi imagesc, aksis citranya
perlu lebih lanjut ditetapkan.
1 .3.5 Menyimpan Citra
Citra yang telah dimanipulasi atau diolah, seringkali harus disimpan untuk
selanjutnya dapat dipergunakan kembali. Ada beberapa cara untuk menyim-
pan citra.
c F. Arnia 2010
Laboratorium Pengolahan Data
4 1 . PENGANTAR MATLAB UNTUK PENGOLAHAN CITRA
Mengetikkan imwrite(C-abu-abu,citra-abu-abu.jpg,jpg)
Dengan perintah ini, elemen matriks dari variable C-abu-abu akan dis-
impan menjadi citra bernama citra-abu-abu.jpg.
Adakalnya kita ingin menyimpan citra yang telah ditampilkan pada la-
yar monitor. Untuk ini kita bisa meng-klik le>save as,. . .. Akan
muncul layar untuk memilih ekstensi le yang diinginkan. Pilih salah
satu, kemudian klik save
1 .3.6 Operasi Matriks pada Matlab
Berikut beberapa operasi matriks pada Matlab yang biasa digunakan pada
pengolahan citra. Beberapa perintah dasar Matlab yang lain dapat dilihat di
Buku Dasar Pengolahan Sinyal Digital.
Jika kita ingin melihat sebagian elemen matriks dari citra, ketikkan:
C = C(1:5,1:5);
C di sebelah kiri akan berisi 25 elemen C, dari baris 1 sampai 5 dan
kolom 1 sampai 5. Tanda : dapat dibaca sampai
Penjumlahan antara dua matriks (citra) C dan C-abu-abu dilakukan
dengan perintah:
Jumlah = C + C-abu-abu;
Jumlah adalah variabel yang memuat hasil penjumlahan kedua mariks
tersebut.
Pengurangan antara dua matriks (citra) C dan C-abu-abu dilakukan
dengan perintah:
Kurang = C - C-abu-abu;
Kurang adalah variabel yang memuat hasil pengurangan kedua matriks
tersebut.
Perkalian antara citra C dan C-abu-abu dilakukan dengan perintah:
Kali = C C-abu-abu;
Jika ingin mengalikan satu-satu setiap elemen dari C dan C-abu-abu
ketikkkan:
Kali = C. C-abu-abu;
c F. Arnia 2010
Laboratorium Pengolahan Data
1 .4. MEMBUAT M-FILE DAN FUNGSI 5
Pembagian antara citra C dan C-abu-abu dilakukan dengan perin-
tah:
Bagi = C / C-abu-abu; .
Jika ingin membagikan dengan korespondensi satu-satu, gunakan per-
intah:
Bagi = C ./ C-abu-abu;
1 .4 Membuat m-le dan Fungsi
Dalam bagian ini akan dijelaskan membuat m-le dan fungsi untuk merubah
suatu citra berwarna menjadi citra gray-scale dan menampilkan citra-citra terse-
but.
% CONTOH M-FILE
clear; clc; closeall;
citra warna = imread(

fujiTV jauh.jpg

);
citra gray1 = (citra warna(:, :, 1) + citra warna(:, :, 2)
+ citra warna(:, :, 3))/3;
citra gray2 = rgb2gray(citra warna);
figure(1); imshow(citra warna);
figure(2); imshow(citra gray1);
figure(3); imshow(citra gray2);
Perintah clear, clc dan close all masing-masing berfungsi untuk:
membersihkan memori, membersihkan screen (command-window) dan menut-
up semua citra yang ditampilkan oleh eksekusi program sebelumnya.
Perintah gure(n) membangkitkan tampilan kosong. Perintah imshow(. . .)
menampilkan citra pada tampilan kosong tersebut.
M-le di atas bisa dirubah menjadi sebuah fungsi. Dengan demikian, kita
dapat memanggil /memperlakukan fungsi buatan kita ini, seperti halnya
fungsi built-in Matlab.
c F. Arnia 2010
Laboratorium Pengolahan Data
6 1 . PENGANTAR MATLAB UNTUK PENGOLAHAN CITRA
% CONTOH FUNGSI
%Ini adalah suatu fungsi dengan masukan B yang berupa
%citra berwarna dan keluaran A dan C yang merupakan citra
%abu-abu. Fungsi ini juga menampilkan citra masukan dan
%citra keluaran. Citra abu-abu dihasilkan dengan menghitung
%nilai rata-rata dari tiga komponen warna dan luminance dari
%citra masukan. A, B dan C dalam bentuk matriks.
function A = warna2gray(B)
A = rgb2gray(B);
% A adalah citra abu-abu luminance dan B adalah citra berwarna
C = (B(:, :, 1) + B(:, :, 2) + B(:, :, 3))/3;
% C adalah citra abu-abu rata-rata
figure(1); imshow(B);
figure(2); imshow(A);
figure(3); imshow(C)
1 .5 Tugas
Buatlah suatu fungsi Matlab untuk menghitung histogram dari citra fu-
jiyama.jpg
Fungsi built-in Matlab untuk menghitung histogram adalah imhist.
Tampilkan citra asal dan histogramnya (menggunakan perintah plot)
Ulangi prosedur yang sama menggunakan citra fujiyama contrast1.jpg
dan citra fujiyama contrast2.jpg
Apa pendapat anda tentang hubungan antara citra dan histogramnya ?
Dalam lembar jawaban tuliskan kode program dan tampilkan semua cit-
ra hasil simulasi.
c F. Arnia 2010
Laboratorium Pengolahan Data
Modul 2
Transformasi Intensitas dan
Ekualisasi Histogram
2 .1 Tujuan
Memahami mekanisme transformasi intensitas
Memahami konsep koreksi gamma sebagai suatu bentuk transformasi
intensitas
Memahami arti kata histogram sebagai istilah pada bidang pengolahan
citra
Memahami prosedur dan tujuan ekualisasi histogram
2 .2 Dasar Teori
2 .2.1 Fungsi Transformasi Intensitas
Transformasi intensitas adalah suatu metode pengolahan citra sederhana yang
memiliki beragam tujuan diantaranya untuk memperbaiki/merubah kekon-
trasan citra. Suatu citra C yang dikenakan fungsi transformasi intensitas
diilustrasikan pada Persamaan 2 .2.1. Ilustrasi tersebut menunjukkan bahwa
fungsi transformasi intensitas dikenakan pada setiap piksel dari suatu citra.
7
8 2 . TRANSFORMASI INTENSITAS DAN EKUALISASI HISTOGRAM
_

_
p
11
p
12
p
13
p
14
p
21
p
22
p
23
p
24
p
31
p
32
p
33
p
34
p
41
p
42
p
43
p
44
_

_
f(p
11
) f(p
12
) f(p
13
) f(p
14
)
f(p
21
) f(p
22
) f(p
23
) f(p
24
)
f(p
31
) f(p
32
) f(p
33
) f(p
34
)
f(p
41
) f(p
42
) f(p
43
) f(p
44
)
_

_
2 .2.2 Ekualisasi Histogram
Selain transformasi intensitas, metode dasar pengolahan citra lain adalah ekual-
isasi histogram. Histogram menggambarkan sebaran intensitas suatu citra,
karena itu histogram adalah ciri dari suatu citra. Histogram dapat digunakan
untuk menentukan metode pengolahan citra lanjutan yang diperlukan untuk
suatu aplikasi.
Histogram dari suatu citra adalah jumlah piksel dengan nilai intensitas
yang sama sebagai fungsi dari nilai intensitasnya. Untuk sistem 8 bit, nilai in-
tensitas akan berkisar antara 0 (mewakili hitam) sampai 255 (mewakili putih).
Ini dapat didenisikan sebagai berikut,
J(r
k
) = n
k
, untuk k = 0, 1, 2, ...255 (2 .1)
dibaca: Jumlah piksel dengan intensitas r
k
pada posisi k adalah n
k
.
Suatu citra dapat dimanipulasi/dirubah menggunakan histogramnya. Op-
erasi pengolahan citra yang kerap dilakukan dengan memodikasi histogram
citra adalah pengaturan kontras citra (contrast stretching).
Histogram suatu citra adakalanya memenuhi seluruh nilai intensitas (0
255). Namun seringkali juga hanya menempati sebagian nilai intensitas. Be-
berapa aplikasi akan diuntungkan jika nilai piksel menyebar merata (menye-
bar secara uniform - uniform distribution) ke seluruh bagian histogram. Ekual-
isasi dilakukan untuk memperoleh sebaran uniform ini.
Langkah-langkah Ekualisasi
Normalisasi fungsi histogram pada persamaan 2 .1
p(r
k
) =
J(r
k
)
n
=
n
k
n
(2 .2)
c F. Arnia 2010
Laboratorium Pengolahan Data
2 .2. DASAR TEORI 9
dengan p(r
k
) adalah fungsi histogram ternormalisasi yang juga adalah
probabilitas kemunculan intensitas bersangkutan.
Hitung fungsi transformasi intensitas untuk histogram berdasarkan
T(r
k
) =
k
j=1
p(r
k
) (2 .3)
yang berarti kita menambahkan fungsi histogram ternormalisasi dari 1
sampai k untuk mengetahui lokasi terekualisasi dari intensitas r
k
pada
interval 0 1 (ingat jumlah total probabilitas dari suatu kejadian adalah
1)
c F. Arnia 2010
Laboratorium Pengolahan Data
10 2 . TRANSFORMASI INTENSITAS DAN EKUALISASI HISTOGRAM
2 .3 Kode Matlab dan Penjelasannya
Berikut adalah kode Matlab untuk tranformasi intensitas, termasuk koreksi
gamma dan ekualisasi histogram.
% TRANSFORMASI INTENSITAS DENGAN FUNGSI f(x)=x/2
clear; clc; closeall;
citra = imread(

5.1.12.tiff

);
[s1, s2] = size(citra);
figure(1)
imshow(citra)
%Transormasi Intensitas dengan fungsi f(x)=x/2
ct = zeros(s1, s2);
ct = citra/2;
figure(2)
imshow(ct)
Penjelasan
Inti dari program ini adalah perintah ct=citra/2
Kode program lainnya telah dijelaskan pada Modul 1.
c F. Arnia 2010
Laboratorium Pengolahan Data
2 .3. KODE MATLAB DAN PENJELASANNYA 11
% KOREKSI GAMMA
clear; clc; closeall;
citra = double(imread(

5.1.12.tiff

));
citra = citra/max(max(citra));
[s1, s2] = size(citra);
figure(1)
imshow(citra)
%Gamma Correction
gamma = 0.25;
gammac = gamma. ones(s1, s2);
ct = power(citra, gammac);
figure(2)
imshow(uint8(ct 256))
Penjelasan
Perintah gamma=0.25 adalah nilai gamma yang diinginkan. Nilai ini
dapat dirubah sesuai keperluan.
Perintah gammac=gamma.*ones(s1,s2) menyiapkan matriks gammac
dengan baris sebanyak s1 dan kolom sebanyak s2. Isi semua elemen
dari matriks ini adalah sebesar harga gamma yang dimasukkan/ditentukan
pada baris sebelumnya
Perintah ct = power(citra,gammac) memangkatkan setiap elemen ma-
triks citra dengan elemen matriks gammac dengan korespondensi
satu-satu
c F. Arnia 2010
Laboratorium Pengolahan Data
12 2 . TRANSFORMASI INTENSITAS DAN EKUALISASI HISTOGRAM
% EKUALISASI HISTOGRAM
clear; clc; closeall;
citra = (imread(

5.1.12.tiff

));
[s1, s2] = size(citra);
figure(1)
imshow(citra)
%Histogram
c = reshape(citra, s1 s2, 1);
histo = zeros(s1, 1);
forn = 1 : 255
l = find(c == n);
[jumlah, j] = size(l);
histo(n) = jumlah;
end
figure(2)
bar(histo);
% Histogram Ternormalisasi
nhisto = histo/(s1 s2);
figure(3)
plot(nhisto);
%Ekualisasi
fork = 1 : 255
t(k) = sum(nhisto(1 : k));
end
t = t 256;
t = t

;
figure(4)
plot(t, histo(1 : 255));
c F. Arnia 2010
Laboratorium Pengolahan Data
2 .4. TUGAS 13
2 .4 Tugas
Dengan programTransformasi Intensitas, tunjukkanlah keluaran gam-
bar untuk fungsi:
f(x) = 1 x (2 .4)
dan
f(x) =
_

_
0 jika x 1/3
x jika 1/3 x 2/3
1 jika 2/3 x
Untuk percobaan Koreksi gamma, set-lah gamma untuk nilai-nilai:
0,25, 0,5, 0,75, 1, 1,25, 1,5 dan 1,75. Apakah kesimpulan anda? Simpanlah
gambar dari setiap nilai gamma di atas!
Jelaslan maksud setiap baris perintah pada program Ekualisasi His-
togram
Bandingkan hasil ekualisasi menggunakan perintah imhist dengan pro-
gram Ekualisasi Histogram di atas, dengan menggunakan citra yang
sama.
c F. Arnia 2010
Laboratorium Pengolahan Data
14 2 . TRANSFORMASI INTENSITAS DAN EKUALISASI HISTOGRAM
c F. Arnia 2010
Laboratorium Pengolahan Data
Modul 3
Penapisan Spasial - Denoising Citra
3 .1 Tujuan
Memahami konsep penapisan spasial untuk denoising citra.
Memahami beda operasi smoothing dan penapisan median.
Memahami karakteristik citra sehubungan dengan proses denoising.
3 .2 Dasar Teori
3 .2.1 Konsep Penapisan Citra
Penapisan pada 2-D diimplementasikan dengan meng-konvolusi citra F den-
gan suatu tapis T yang lazim disebut kernel atau mask yang juga 2-D. Citranya
biasanya jauh lebih besar dibandingkan kernel. Tapis ini dikonvolusikan ke
seluruh piksel pada suatu citra. Gambar 3 .1 menunjukkan proses penapisan
citra. Nilai piksel citra G yang telah ditapis pada posisi (x, y) dihitung nilainya
berdasarkan persamaan berikut:
g(x, y) = f(x 1, y 1)t(1, 1) + f(x, y 1)t(0, 1)
+ . . . + f(x, y)t(0, 0) + . . . + f(x + 1, y + 1)t(1, 1)
(3 .1)
Istilah konvolusi yang digunakan di sini tidak mewakili operasi konvolusi
yang sebenarnya (Ingat: Konvolusi dilakukan dengan membalikkan tapis).
15
16 3 . PENAPISAN SPASIAL - DENOISING CITRA
3 .2.2 Padding
Proses penapisan yang dilakukan sesuai gambar 3 .1 memerlukan padding pa-
da setiap pinggiran (border) dari citra
1
, karena untuk mengambil nilai pe-
napisan pada posisi piksel paling pinggir, ada bagian tapis yang akan berada
diluar citra. Besarnya padding tergantung pada besar tapis yang digunakan.
Sebagain contoh, untuk tapis 3 3, citra harus di-padding sebanyak 1 piksel
di sekelilingnya, sementara untuk tapis 5 5, dibutuhkan padding sebanyak
2 piksel pada masing-masing sisi citra. Ilustrasi proses padding sebanyak 1
piksel ditunjukkan gambar 3 .2.
3 .2.3 Tapis Spasial untuk Denoising
Citra seringkali terdistorsi oleh noise yang disebabkan derau elektronik pa-
da peralatan input (scanner atau kamera), sensor dan rangkaian, juga oleh
shot-noise. Khusus untuk kamera digital, jika kita menggunakan indeks ek-
posure (kecepatan ISO) yang tinggi dengan cahaya kurang, maka citra yang
dihasilkan cenderung akan berderau. Eksposure adalah jumlah total cahaya
yang diizinkan masuk ke medium fotogra (lm atau sensor citra), selama
proses pengambilan citra.
Kecepatan lm adalah ukuran kepekaan lm terhadap cahaya. Film den-
gan kepekaan rendah (kecepatan ISO/ASA-nya rendah) memerlukan ekspo-
sure yang lama. Sebaliknya lmdengan kepekaan tinggi (kecepatan ISO/ASA-
nya tinggi) dapat menangkap scene yang sama dalamwaktu yang lebih singkat.
Untuk memperbaiki tampilan citra seperti ini, kita dapat menghaluskan-
nya dengan melakukan penapisan rata-rata yang didenisikan sebagai berikut:
C
out
(x, y) = R
_
C
inn
(x N, y N)
_
Masing-masing C
o
ut, C
i
n, R, aB menotasikan citra keluaran, citra masukan,
nilai rata-rata, piksel-piksel tetangga titik a dengan jarak ke kiri,kanan atas
dan bawah sejauh B. Dengan kata lain, kita melakukan penapisan dengan
lter yang besarnya 2B + 1 baik untuk arah horizontal maupun vertikal.
Untuk tapis dengan besar 5 5, piksel pada C
out
(x, y) diperoleh dari:
1
Padding adalah proses penambahan /penempelan beberapa piksel di sekeliling citra
c F. Arnia 2010
Laboratorium Pengolahan Data
3 .2. DASAR TEORI 17
C
out
(x, y) =

2
i=2

2
j=2
_
C
inn
(x + i, y + j)
_
25
(3 .2)
Operasi smoothing cenderung untuk mem-blur-kan tepian objek pada suatu
citra. Untuk mengatasi hal ini, pengambilan nilai rata-rata pada smoothing
digantikan dengan mengambil nilai tengah (median) dari citra yang berada
dibawah suatu kernel. Persamaan 3 .2 digantikan oleh:
C
out
(x, y) = Med
_
C
inn
(x N, y N)
_
(3 .3)
Masing-masing C
o
ut, C
i
n, Med, a B menotasikan citra keluaran, citra ma-
sukan, nilai median, piksel-piksel tetangga titik a dengan jarak ke kiri,kanan
atas dan bawah sejauh B.
c F. Arnia 2010
Laboratorium Pengolahan Data
18 3 . PENAPISAN SPASIAL - DENOISING CITRA
Gambar 3 .1: Proses penapisan citra
c F. Arnia 2010
Laboratorium Pengolahan Data
3 .2. DASAR TEORI 19
Gambar 3 .2: Proses padding 1 piksel
c F. Arnia 2010
Laboratorium Pengolahan Data
20 3 . PENAPISAN SPASIAL - DENOISING CITRA
3 .3 Kode Matlab dan Penjelsannya
Berikut adalah dua program Matlab untuk penapisan smoothing dan median.
% SMOOTHING
clear; closeall; clc;
%Program ini men-smooth-kan citra dengan menggantikan nilai pada posisi
%tengah dengan nilai rata-rata dari piksel yang berada dibawah window.
%Bagian sisi dipadding dengan replika citra palling pinggir.
%Dimensi lter 3X3
A = imread(

tmu.jpg

);
[m, n] = size(A);
d = 3;
M = zeros((2 (d 2) + m), (2 (d 2) + n));
%Proses pading
M(2 : m + 1, 2 : n + 1) = A;
M(1, 2 : n + 1) = A(1, :);
M(m + 2, 2 : n + 1) = A(m, :);
M(:, 1) = M(:, 2);
M(:, n + 2) = M(:, n + 1);
H = zeros(m, n);
fori = 1 : m
forj = 1 : n
H(i, j) = floor(sum(sum(M(i : i + 2, j : j + 2)))/9);
end
end
figure(1); imshow(A);
figure(2); imshow(uint8(H));
Penjelasan
c F. Arnia 2010
Laboratorium Pengolahan Data
3 .3. KODE MATLAB DAN PENJELSANNYA 21
Perintah imread (baris pertama), gure dan imshow (baris ter-
akhir) telah dibahas pada Modul 1.
[m, n] = size(A). m akan terisi oleh jumlah baris matriks A dan n
akan terisi oleh jumlah kolom matris A.
M = zeros(x, y). Matriks M adalah matriks dengan semua elemennya
bernilai nol, dengan banyak baris x dan dan banyak kolom y. Dalam
hal ini, besar M adalah besar matriks A ditambah padding 1 piksel dis-
ekelilingnya.
Perintah pada proses padding:
M(2 : m + 1, 2 : n + 1) = A;. Mengisi bagian tengah matriks M
dengan matriks A, sisi-sisi matriks M tetap bernilai nol.
M(1, 2 : n + 1) = A(1, :);. Mengisi seluruh baris pertama matriks
M mulai kolom kedua (M(1, 2 : n + 1)) dengan baris pertama
matriks A (A(1, :)). Berarti, nilai baris pertama dan kedua dari
matriks M adalah sama.
M(m + 2, 2 : n + 1) = A(m, :);. Mengisi baris terakhir matriks M
dengan baris terakhir matriks A.
M(:, 1) = M(:, 2);. Mengisi kolom pertama M dengan kolom ked-
ua M.
M(:, n + 2) = M(:, n + 1);. Mengisi kolom terakhir M dengan
kolom nomor dua dari akhir.
H = zeros(m, n);. Matriks H adalah matriks hasil yang gunanya
menampung hasil perhitungan yang akan dilakukan perintah loop se-
lanjutnya.
Loop, menghitung nilai rata-rata dari 9 buah piksel dan hasilnya dis-
ubstitusikan ke posisi piksel yang berada di tengah tapis.
c F. Arnia 2010
Laboratorium Pengolahan Data
22 3 . PENAPISAN SPASIAL - DENOISING CITRA
% PENAPISAN MEDIAN
clear; closeall; clc;
%Program ini men-smooth-kan citra dengan menggantikan nilai pada posisi
%tengah dengan nilai rata-rata dari piksel yang berada dibawah window.
%Bagian sisi dipadding dengan replika citra palling pinggir.
%Dimensi lter 3X3
A = imread(

tmu.jpg

);
[m, n] = size(A);
d = 3;
M = zeros((2 (d 2) + m), (2 (d 2) + n));
%Proses pading
M(2 : m + 1, 2 : n + 1) = A;
M(1, 2 : n + 1) = A(1, :);
M(m + 2, 2 : n + 1) = A(m, :);
M(:, 1) = M(:, 2);
M(:, n + 2) = M(:, n + 1);
H = zeros(m, n);
fori = 1 : m
forj = 1 : n
H(i, j) = (median(median(M(i : i + 2, j : j + 2))));
end
end
figure(1); imshow(A);
figure(2); imshow(uint8(H));
c F. Arnia 2010
Laboratorium Pengolahan Data
3 .4. TUGAS 23
Penjelasan
Beda smoothing dan tapis median hanya pada bagian loop. Untuk tapis
median, nilai rata-rata digantian dengan fungsi median. Fungsi built-
in Matlab untuk mencari nilai tengah dari suatu deretan.
3 .4 Tugas
Soal 1
Ketikkan kode berikut pada le Matlab (buatlah m-le).
Ganti citranya dengan citra lena (Cari dan Download dari Internet)
Tambahkan noise Gaussian dan noise salt & pepper pada gambar
tersebut
Ganti tapisnya dengan ukuran 7 7 dan 11 11 (Buat 4 m-le baru, 2
m-le untuk smoothing dan 2 m-le untuk penapisan median).
Tapis citra dengan noise Gaussian dengan tapis smoothing dan median
dengan ukuran masing-masing 3 3, 7 7 dan 11 11
Tapis citra dengan noise salt & pepper dengan tapis smoothing dan me-
dian dengan ukuran masing-masing 3 3, 7 7 dan 11 11.
Tapis apa dan dengan besar berapa yang menurut saudara paling sesuai
untuk menghilangkan noise Gaussian?
Tapis apa dengan besar berapa yang menurut saudara paling sesuai un-
tuk menghilangkan noise salt $ pepper ?
Apa kelebihan dan kekurangan masing-masing tapis?
c F. Arnia 2010
Laboratorium Pengolahan Data
24 3 . PENAPISAN SPASIAL - DENOISING CITRA
Soal 2
Lakukan prosedur yang sama menggunakan citra baboon.
Bandingkan hasilnya dengan bagian pertama.
Apa kesimpulan anda?
c F. Arnia 2010
Laboratorium Pengolahan Data
Modul 4
Penapisan Spasial - Peningkatan
Citra
4 .1 Tujuan
Memahami konsep penapisan spasial untuk peningkatan citra.
Memahami tapis turunan pertama dan kedua untuk deteksi tepi.
4 .2 Dasar Teori
Modul 2 membahas penapisan spasial untuk denoising. Pada bagian ini proses
penapisan digunakan untuk mempertajam citra yang blur (kabur). Citra yang
kabur adalah citra yang kehilangan bagian frekuensi tingginya, yaitu yang
berhubungan dengan komponen detail citra. Blur sangat terlihat pada tepian
objek yang ada pada citra. Karena itu penajaman citra berhubungan dengan
deteksi tepi.
Metode deteksi tepi paling sederhana adalah menghitung perbedaan an-
tara dua nilai piksel yang berturutan. Beda ini dirumuskan oleh persamaan
beda (difference equation); ingat persamaan diferensial (differential equation un-
tuk kasus analog). Persamaan beda (difference equation) tingkat pertama dan
kedua berturut-turut dirumuskan sebagai berikut,
f
x
= f(x + 1) f(x) (4 .1)
25
26 4 . PENAPISAN SPASIAL - PENINGKATAN CITRA
Gambar 4 .1: Deteksi tepi menggunakan beda antara dua piksel yang berturu-
tan.

2
f
x
2
= f(x + 1) + f(x 1) 2f(x) (4 .2)
Apabila beda antara dua piksel berturutan jauh, maka kemungkinan ter-
dapat tepi pada lokasi tersebut. Hal ini diilustrasikan pada Gambar 4 .1 untuk
kasus 1-D. Baris pertama adalah suatu sinyal. Baris kedua dan ketiga berturut-
turut adalah beda tingkat pertama (PB-I) dan beda tingkat kedua (PB-II) dari
nilai-nilai sinyal yang berturutan.
Pada kasus ini, PB-I ekivalen dengan meng-konvolusikan sinyal dengan
tapis yang koesiennya (1, 1) pada arah horizontal dan vertikal. Sementara
PB-II ekivalen dengan mengkonvolusikan sinyal dengan tapis yang koesien-
nya (1, -2, 1) pada arah horizontal dan vertikal.
Hasil deteksi tepi dengan PB-II dibandingkan PB-I, karena dapat mende-
teksi detail citra lebih baik. Karena itu, metode deteksi tepi banyak yang selan-
jutnya dikembangkan berdasarkan PB-II. Salah satunya adalah operator de-
teksi tepi Laplacian (DT-Laplacian).
4 .2.1 Penajaman Menggunakan Turunan Order Pertama
Penajaman citra menggunakan turunan order pertama diperoleh dengan menghi-
tung besar gradien dari dua piksel yang berturutan, baik pada arah x dan y.
Untuk fungsi f(x, y), gradiennya pada koordinat (x, y) dan didenisikan se-
bagai vektor kolom 2 dimensi,
f grad(f)
_
g
x
g
y
_
=
_
f
x
f
y
_
(4 .3)
Besar (magnitude/panjang) dari vektor f pada posisi (x, y) dinotasikan
dengan B(x, y) didenisikan sebagai,
c F. Arnia 2010
Laboratorium Pengolahan Data
4 .2. DASAR TEORI 27
Gambar 4 .2: Tapis Sobel (a). Posisi piksel yang berada di bawah tapis 3 3
(b) dan (c) Tapis sobel horizontal dan vertikal.
B(x, y) = mag(f) =

g
x
2
+ g
y
2
(4 .4)
B adalah citra yang besarnya sama dengan citra asal dan sering dinamai seba-
gai citra gradien.
Berdasarkan persamaan 4 .1 dan 4 .3, persamaan 4 .4 dapat dituliskan kem-
bali sebagai,
B(x, y) = mag(f) =

(f(x + 1, y) f(x, y))


2
+ (f(x, y + 1) f(x, y))
2
(4 .5)
B(x, y) dapat juga dihitung dengan persamaan berikut,
B(x, y) |g
x
| +|g
y
| (4 .6)
Tapis yang besarnya genap kurang praktis, karena tidak ada pusat simetrinya.
Tapis terkecil yang banyak digunakan adalah tapis dengan besar 33. Rujuk
Gambar 4 .2 sebagai bantuan untuk menurunkan persamaan 4 .1. Pada kasus
ini, beda nilai piksel pada posisi e ke arah x dan y diperoleh dari,
g
x
=
f
x
= (g + 2h + i) (a + 2b + c) (4 .7)
c F. Arnia 2010
Laboratorium Pengolahan Data
28 4 . PENAPISAN SPASIAL - PENINGKATAN CITRA
dan
g
y
=
f
y
= (c + 2f + i) (a + 2d + g) (4 .8)
Kedua persamaan ini dapat diimplementasikan dengan tapis pada gam-
bar 4 .2 (b) dan (c) yang dikenal dengan tapis Sobel. Setelah menghitung per-
samaan beda partial masing-masing ke arah x dan y, selanjutnya B(x, y) dapat
dihitung menggunakan persamaan 4 .5 atau 4 .6.
4 .2.2 Penajaman dengan LaplacianTurunan Kedua
Laplacian adalah operator turunan isotropik, yang untuk fungsi 2-D f(x, y)
(citra) didenisikan sebagai,

2
f =

2
f
x
2
+

2
f
y
2
(4 .9)
Bentuk diskrit dari persamaan 4 .9 diturunkan menggunakan denisi pada
persamaan 4 .2. Ingatlah kita akan menurunkannya terhadap x dan y. Turunan
pada arah x dapat dituliskan sebagai,

2
f
x
2
= f(x 1, y) + f(x 1, y) 2f(x, y) (4 .10)
sementara pada arah y,

2
f
y
2
= f(x, y + 1) + f(x, y 1) 2f(x, y) (4 .11)
Jika kita subsitusi persamaan 4 .10 dan 4 .11 ke persamaan 4 .9, kita peroleh:

2
f(x, y) = f(x + 1, y) + f(x 1, y) + f(x, y + 1)f(x, y 1) 4f(x, y) (4 .12)
Persamaan ini bisa diimplementasikan menggunakan lter dengan koesien
seperti yang ditunjukkan Gambar 4 .3(a). Tapis pada bagian (b), (c) dan (d)
adalah tapis Laplacian lain yang biasa digunakan dalam praktek.
c F. Arnia 2010
Laboratorium Pengolahan Data
4 .2. DASAR TEORI 29
Gambar 4 .3: Tapis Laplacian (a). Implementasi dari persamaan 4 .12. Tapis
pada (b), (c) dan (d) adalah modikasi dari tapis (a).
c F. Arnia 2010
Laboratorium Pengolahan Data
30 4 . PENAPISAN SPASIAL - PENINGKATAN CITRA
4 .3 Kode Matlab dan Penjelasannya
Berikut adalah dua program Matlab untuk deteksi tepi (selanjutnya untuk
meningkatkan citra) dengan metode turunan pertama dan kedua.
% METODE TURUNAN PERTAMA
clear; close all; clc;
%Program ini mendeteksi tepi suatu citra menggunakan metode turunan
pertama.Tapis yang digunakan adalah tapis sobel.
A = double(imread(

tmu blur.jpg

));
[m, n] = size(A);
d = 3;
M = zeros((2 (d 2) + m), (2 (d 2) + n));
%Proses pading
M(2 : m + 1, 2 : n + 1) = A;
M(1, 2 : n + 1) = A(1, :);
M(m + 2, 2 : n + 1) = A(m, :);
M(:, 1) = M(:, 2);
M(:, n + 2) = M(:, n + 1);
tapissobelh = [1 2 1; 000; 121];
% Tapis sobel horizontal.
tapissobelv = [101; 202; 101];
% Tapis sobel vertikal.
% Proses penapisan horizontal
H = zeros(m, n);
fori = 1 : m
forj = 1 : n
H(i, j) = sum(sum(M(i : i + 2, j : j + 2). tapissobelh));
c F. Arnia 2010
Laboratorium Pengolahan Data
4 .3. KODE MATLAB DAN PENJELASANNYA 31
end
end
% Proses penapisan vertikal
K = zeros(m, n);
fori = 1 : m
forj = 1 : n
K(i, j) = sum(sum(M(i : i + 2, j : j + 2). tapissobelv));
end
end
citratajam1 = abs(H) + abs(K);
% Menghitung tepian dengan persamaan (3.6)
citratajam1 = citratajam1 + A;
% Menjumlahkan tepi dengan citra blur
citratajam2 = sqrt(H.

2 + K.

2);
% Menghitung tepian dengan persamaan (3.5)
citratajam2 = citratajam2 + A;
% Menjumlahkan tepian dengan citra blur
figure(1); imshow(uint8(A));
figure(2); imshow(uint8(citratajam1));
figure(2); imshow(uint8(citratajam2));
Penjelasan
Dari baris pertama sampai dengan proses padding, semuanya sama den-
gan program smoothing dan tapis median.
Variabel tapissobelh adalah tapis 3 3 yang isinya koesien tapis so-
bel horizontal.
Variabel tapissobelv adalah tapis 3 3 yang isinya koesien tapis sobel
vertikal.
c F. Arnia 2010
Laboratorium Pengolahan Data
32 4 . PENAPISAN SPASIAL - PENINGKATAN CITRA
Proses penapisan horizontal dan vertikal adalah proses penapisan spasial
sesuai Gambar 2.1. Proses ini mirip dengan proses smoothing dan pe-
napisan median.
Variabel citratajam1 adalah variabel yang memuat tepian yang dihi-
tung dengan persamaan 3.6.
Variabel citratajam2 adalah variabel yang memuat tepian yang dihi-
tung dengan persamaan 3.5.
% METODE TURUNAN PERTAMA
.
.
.
.
.
.
%Tapis Laplacian
tapislaplacian1 = [010; 1 41; 010];
H = zeros(m, n);
fori = 1 : m
forj = 1 : n
H(i, j) = sum(sum(M(i : i + 2, j : j + 2). tapislaplacian1));
end
end
citratajam = A H;
.
.
.
c F. Arnia 2010
Laboratorium Pengolahan Data
4 .4. TUGAS 33
Penjelasan
Dari baris pertama sampai proses padding, prosesnya sama dengan metode
turunan kedua.
Variabel tapislaplacian1 adalah tapis yang berisi koesien tapis lapla-
cian (4 .3(a)).
Proses penapisan dilakukan hanya sekali jalan. Tidak ada tapis horizon-
tal dan vertikal seperti pada penapisan sobel.
Variabel citratajam diperoleh dengan menjumlahkan /mengurangkan
citra asal (A) dengan citra hasil penapisan Laplace (H). Jika nilai tapis
pada posisi tengah adalah negatif, maka dilakukan pengurangan, yaitu:
citratajam = A - H.
Jika nilai tapis pada posisi tengah positif;
citratajam = A + H.
4 .4 Tugas
Soal 1
Pergunakan kode Matlab metode turunan pertama untuk memperbaiki
citra blur .....
Simpan citra hasil simulasi (2 citra) untuk kebutuhan praktikum berikut-
nya .
Soal 2
Pergunakan kode Matlab turunan kedua untuk memperbaiki citra blur
....
Rubah tapisnya sesuai tapis Laplacian pada gambar 4 .3
Bandingkan citra-citra hasil simulasi (4 citra). Menurut anda, tapis man-
akan yang paling bagus untuk mempertajam tepian?
Bandingkan hasil penapisan Laplacian (turunan kedua) dengan hasil tapis
sobel. Manakan yang lebih bagus?
c F. Arnia 2010
Laboratorium Pengolahan Data
34 4 . PENAPISAN SPASIAL - PENINGKATAN CITRA
Semua citranya disertakan dalam Laporan Praktikum
c F. Arnia 2010
Laboratorium Pengolahan Data
Modul 5
Penapisan Pada Domain Frekuensi
5 .1 Dasar Teori
35

Anda mungkin juga menyukai