Top Banner
BAB 10 Segmentasi Citra Setelah bab ini berakhir, diharapkan pembaca dapat memahami berbagai istilah berikut dan juga dapat mempraktikkan beberapa penerapannya. Segmentasi citra Deteksi garis Deteksi tepi Peng-ambangan dwi-aras Peng-ambangan global Vs. lokal Peng-ambangan aras-jamak Peng-ambangan dengan metode Otsu Peng-ambangan adaptif Peng-ambangan berdasarkan entropi Segmentasi warna
96

BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Mar 03, 2019

Download

Documents

doandat
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

BAB 10

Segmentasi

Citra

Setelah bab ini berakhir, diharapkan pembaca dapat

memahami berbagai istilah berikut dan juga dapat

mempraktikkan beberapa penerapannya.

Segmentasi citra

Deteksi garis

Deteksi tepi

Peng-ambangan dwi-aras

Peng-ambangan global Vs. lokal

Peng-ambangan aras-jamak

Peng-ambangan dengan metode Otsu

Peng-ambangan adaptif

Peng-ambangan berdasarkan entropi

Segmentasi warna

Page 2: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

402 Pengolahan Citra : Teori dan Aplikasi

10.1 Pengantar Segmentasi Citra

Segmentasi citra merupakan proses yang ditujukan untuk mendapatkan

objek-objek yang terkandung di dalam citra atau membagi citra ke dalam

beberapa daerah dengan setiap objek atau daerah memiliki kemiripan atribut. Pada

citra yang mengandung hanya satu objek, objek dibedakan dari latarbelakangnya.

Contoh ditunjukkan pada Gambar 10.1. Pada citra yang mengandung sejumlah

objek, proses untuk memilah semua objek tentu saja lebih kompleks. Contoh

penerapan segmentasi yaitu untuk membuat “Magic Wand”, yang biasa terdapat

pada perangkat pengedit foto. Contoh pada Gambar 10.2 menunjukkan

penggunaan “Magic Wand” pada Adobe Photoshop. Contoh tersebut

memperlihatkan pemilihan area yang ditandai dengan warna khusus.

(b) Citra daun (a) Hasil segmentasi dalam

bentuk biner

Gambar 10.1 Pemisahan objek daun terhadap latarbelakang

Page 3: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 403

Area ini diperoleh

melalui “Magic Wand”

Gambar 10.2 Pemilihan citra berdasarkan warna,

yang intinya diperoleh melalui segmentasi.

Bagian terpilih ditandai dengan garis terputus-putus

Gambaran berbagai aplikasi segmentasi serta acuan yang digunakan dapat

dilihat pada Tabel 10.1. Secara prinsip, segmentasi dilakukan untuk mendapatkan

objek yang menjadi perhatian.

Tabel 10.1 Aplikasi segmentasi pada citra

Objek Citra Kegunaan

Segmentasi

Acuan yang

Digunakan

Mobil Mobil, jalan, dan

latarbelakang

Pelacakan mobil Gerakan dan

warna

Struktur

permukaan bumi

Foto satelit Pengklasifikasian

area

Tekstur dan

warna

Wajah orang Kerumunan orang

di pasar

Pengenalan wajah Warna, bentuk,

dan tekstur

Apel Kumpulan apel

pada ban berjalan

Pemilahan buah apel

berdasarkan ukuran

Bentuk, warna,

ukuran

Segmentasi juga biasa dilakukan sebagai langkah awal untuk

melaksanakan klasifikasi objek. Gambar 10.3 menperlihatkkan hal ini. Setelah

segmentasi citra dilaksanakan, fitur yang terdapat pada objek diambil. Sebagai

Page 4: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

404 Pengolahan Citra : Teori dan Aplikasi

contoh, fitur objek dapat berupa perbandingan lebar dan panjang objek, warna

rata-rata objek, atau bahkan tekstur pada objek. Selanjutnya, melalui

pengklasifikasi, jenis objek dapat ditentukan. Sebagai contoh, pengklasifikasi

menyatakan bahwa daun termasuk golongan Aglaonema.

Teknik segmentasi citra didasarkan pada dua properti dasar nilai aras

keabuan: ketidaksinambungan dan kesamaan antarpiksel. Pada bentuk yang

pertama, pemisahan citra didasarkan pada perubahan mendadak pada aras

keabuan. Contoh yang menggunakan pendekatan seperti itu adalah detektor garis

dan detektor tepi pada citra. Cara kedua didasarkan pada kesamaan antarpiksel

dalam suatu area (Acharya dan Ray, 2005). Termasuk dalam cara kedua ini yaitu:

peng-ambangan berdasarkan histogram;

pertumbuhan area;

pemisahan dan penggabungan area;

pengelompokan atau pengklasifikasian;

pendekatan teori graf;

pendekatan yang dipandu pengetahuan atau berbasis aturan.

Berdasarkan teknik yang digunakan, segmentasi dapat dibagi menjadi empat

kategori berikut(Rangayyan, 2005):

1) teknik peng-ambangan;

2) metode berbasis batas;

3) metode berbasis area;

4) metode hibrid yang mengombinasikan kriteria batas dan area.

Page 5: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 405

Segmentasi

Citra

Ekstraksi

Fitur

Pengklasifikasi

Citra masukan

Objek daun

Fitur-fitur

pada daun

Jenis tanaman

Gambar 10.3 Segmentasi sebagai langkah awal

sistem klasifikasi

10.2 Deteksi Garis

Deteksi garis pada citra dapat diperoleh melalui penggunaan “cadar”

(mask) dengan contoh tercantum pada Gambar 10.4 (Gonzalez & Woods, 2002).

Cadar (a) berguna untuk memperoleh garis horizontal, cadar (b) untuk

mendapatkan garis yang berorientasi 45o, cadar (c) untuk memperoleh garis tegak,

dan cadar (d) untuk mendapatkan garis yang berorientasi -45o.

−1 −1 −12 2 2−1 −1 −1

−1 −1 2−1 2 −12 −1 −1

−1 2 −1−1 2 −1−1 2 −1

2 −1 −1−1 2 −1−1 −1 2

(a) (b) (c) (d)

Gambar 10.4 Empat pasang cadar untuk mendeteksi keberadaan garis

Page 6: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

406 Pengolahan Citra : Teori dan Aplikasi

Fungsi deteksi berikut berguna untuk menguji cadar-cadar yang terdapat

pada Gambar 10.4. Fungsi tersebut sekaligus dapat dipakai untuk menguji cadar-

cadar yang lain.

Program : deteksi.m

function [G] = deteksi(F, H, potong, pembulatan)

% DETEKSI Melakukan operasi korelasi kernel H dengan citra F

% H harus mempunyai tinggi dan lebar ganjil

% Argumen potong bersifat opsional. Apabila

% bernilai true, bagian citra yang tidak diproses

% akan dipotong. Bawaan = false

% Argumen pembulatan bersifat opsional.

% Apabila bernilai true, pembulatan dengan uint8

% tidak dilakukan. Bawaan = true

%

% Hasil: citra G

if nargin < 3

potong = false;

end

if nargin < 4

pembulatan = true;

end

[tinggi_f, lebar_f] = size(F);

[tinggi_h, lebar_h] = size(H);

if rem(lebar_h,2) == 0 || rem(tinggi_h,2) == 0

disp('Lebar dan tinggi H harus ganjil');

return;

end

m2 = floor(tinggi_h/2);

n2 = floor(lebar_h/2);

% Menentukan ukuran hasil beserta

% penentu ofset koordinat

if potong == true

sisi_m2 = m2;

sisi_n2 = n2;

G = zeros(tinggi_f - 2 * m2, lebar_f - 2 * n2);

else

sisi_m2 = 0;

sisi_n2 = 0;

G = zeros(size(F));

end

F2=double(F);

Page 7: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 407

for y=m2+1 : tinggi_f-m2

for x=n2+1 : lebar_f-n2

% Pelaksanaan korelasi F(baris, kolom)

jum = 0;

for p=-m2 : m2

for q=-n2 : n2

jum = jum + H(p+m2+1,q+n2+1) * ...

F2(y+p, x+q);

end

end

G(y - sisi_m2, x - sisi_n2) = jum;

end

end

if pembulatan == true

G = uint8(G);

end

Akhir Program

Dengan fungsi di atas, bagian pinggir citra yang tidak diproses akan

dibuang sekiranya argumen ketiga tidak diberikan atau diberi nilai false. Dengan

demikian, ukuran G akan dipengaruhi oleh ukuran H. Nilai true pada argumen

ketiga akan membuat bagian tepi yang tidak diproses berwarna hitam, membentuk

seperti bingkai. Argumen keempat digunakan untuk menentukan eksekusi uint8

atau tidak. Dalam banyak hal, argumen keempat tidak perlu disebutkan karena

umumnya memang hasil deteksi tepi akan memotong nilai yang di bawah nol dan

yang di atas 255. Namun, di belakang akan ada aplikasi yang memerlukan fungsi

deteksi tetapi tanpa perlu melakukan pemotongan seperti itu.

Contoh berikut menunjukkan penggunaan deteksi untuk mendapatkan

garis tegak:

>> H1 = [-1 -1 -1; 2 2 2; -1 -1 -1];

>> Img = imread('C:\Image\jaring.png');

>> G = deteksi(Img, H1); imshow(G,[0 1])

>>

Hasil deteksi garis dapat dilihat pada Gambar 10.5(b). Terlihat bahwa garis

vertikal tidak tampak. Namun, garis miring dan mendatar tetap terdeteksi.

Page 8: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

408 Pengolahan Citra : Teori dan Aplikasi

(a) Citra jaring.png (b) Hasil deteksi garis horizontal

Gambar 10.5 Contoh deteksi garis horizontal

Gambar 10.6 memperlihatkan perbedaan hasil yang menggunakan masing-masing

satu dari keempat cadar yang tercantum di Gambar 10.4.

Page 9: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 409

Gambar 10.6 Contoh hasil deteksi garis untuk empat arah yang berbeda

terhadap gambar pada Gambar 10.5(a)

Deteksi garis juga dapat diperoleh melalui transformasi Hough.

Transformasi tersebut dibahas, misalnya, oleh Davies (1990).

Page 10: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

410 Pengolahan Citra : Teori dan Aplikasi

10.3 Deteksi Tepi

Deteksi tepi berfungsi untuk memperoleh tepi objek. Deteksi tepi

memanfaatkan perubahan nilai intensitas yang drastis pada batas dua area.

Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada

batas dua area” (Gonzalez & Woods, 2002). Perlu diketahui, tepi sesungguhnya

mengandung informasi yang sangat penting. Informasi yang diperoleh dapat

berupa bentuk maupun ukuran objek.

Umumnya, deteksi tepi menggunakan dua macam detektor, yaitu detektor

baris (Hy) dan detektor kolom (Hx). Beberapa contoh yang tergolong jenis ini

adalaah operator Roberts, Prewitt, Sobel, dan Frei-Chen.

Deteksi tepi dapat dibagi menjadi dua golongan. Golongan pertama

disebut deteksi tepi orde pertama, yang bekerja dengan menggunakan turunan

atau diferensial orde pertama. Termasuk kelompok ini adalah operator Roberts,

Prewitt, dan Sobel. Golongan kedua dinamakan deteksi tepi orde kedua, yang

menggunakan turunan orde kedua. Contoh yang termasuk kelompok ini adalah

Laplacian of Gaussian (LoG).

Tabel 10.2 memberikan definisi turunan orde pertama dan kedua baik pada

bentuk yang kontinu maupun diskret. Bentuk diskret sangat berguna untuk

melakukan deteksi tepi. Adapun Gambar 10.7 menunjukkan hubungan antara

fungsi citra dan deteksi tepi orde pertama dan orde kedua. Perlu diketahui, terkait

dengan turunan, tepi sesungguhnya terletak pada:

nilai absolut maksimum pada turunan pertama;

persilangan nol (zero-crossing) pada turunan kedua.

Tabel 10.2 Turunan orde pertama dan kedua pada

bentuk kontinu dan diskret

Turunan Bentuk kontinu Bentuk diskret

𝑑𝑓

𝑑𝑥 lim

∆𝑥→0

𝑓(𝑦,𝑥 + ∆𝑥)𝑓(𝑦, 𝑥)

∆𝑥

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

𝑑𝑓

𝑑𝑦 lim

∆𝑥→0

𝑓(𝑦 + ∆𝑦, 𝑥)𝑓(𝑦, 𝑥)

∆𝑦

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

∇𝑓(𝑦, 𝑥) [𝑑𝑓

𝑑𝑦,𝑑𝑓

𝑑𝑥]

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

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

Page 11: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 411

Turunan Bentuk kontinu Bentuk diskret

𝑑2𝑓

𝑑𝑥2

lim∆𝑥→0

(𝑑𝑓𝑑𝑥)(𝑦,𝑥 + ∆𝑥) (

𝑑𝑓𝑑𝑥)𝑓(𝑦,𝑥)

∆𝑥

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

𝑑2𝑓

𝑑𝑦2

lim∆𝑥→0

(𝑑𝑓𝑑𝑦

) (𝑦 + ∆𝑦, 𝑥) (𝑑𝑓𝑑𝑦

)𝑓(𝑦, 𝑥)

∆𝑦

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

∇2𝑓(𝑦, 𝑥) 𝑑2𝑓

𝑑𝑥2+

𝑑2𝑓

𝑑𝑦2

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

𝑑

𝑑𝑥𝑓(𝑥)

𝑓(𝑥)

𝑑2

𝑑𝑥2𝑓(𝑥)

(a) Fungsi citra

(b) Deteksi tepi

derivatif orde pertama

(c) Deteksi tepi

derivatif orde kedua

Persilangan nol

(zero-crossing)

Nilai maksimum

Batas

a b

Gambar 10.7 Deteksi tepi orde pertama dan orde kedua pada arah x

Page 12: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

412 Pengolahan Citra : Teori dan Aplikasi

Apabila profil citra mempunyai tepi dengan bentuk tanjakan

(ramp), fungsi dan turunannya ditunjukkan berikut ini.

Profil aras

keabuan

Turunan

pertama

Turunan

kedua

Profil citra dapat berupa tepi dengan bentuk atap, garis, undakan,

atau tanjakan.

Tepi

tanjakan

Tepi garis

Tepi

undakan

Tepi atap

Contoh pada Gambar 10.7(a) menunjukkan keadaan fungsi intensitas citra

f(y,x) pada arah x dengan bentuk tepi tanjakan yang landai. Gambar 10.7(b)

menunjukkan keadaan turunan pertama pada arah x. Puncak pada Gambar 10.7(b)

menyatakan letak tepi pada turunan pertama, sedangkan persilangan nol pada

Gambar 10.7(c) menyatakan letak tepi pada turunan kedua. Apabila nilai batas

dikenakan pada turunan pertama, puncak tidak lagi menjadi tepi. Akibatnya,

terdapat dua nilai yang memenuhi (yaitu a dan b). Kedua nilai tersebut akan

menjadi piksel-piksel tepi. Berbeda halnya pada turunan kedua, tepi akan selalu

berupa satu piksel. Hal itu terlihat pada perpotongan fungsi turunan kedua dengan

sumbu x. Akibatnya, ketebalan tepi akan selalu berupa satu piksel.

Page 13: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 413

Untuk memahami profil citra yang berhubungan dengan tepi,

perhatikan matriks yang berukuran 4 x 6 berikut.

[

168 168 168168 168 168

0 0 00 0 0

168 168 168168 168 168

0 0 00 0 0

]

Pada contoh tersebut perubahan nilai dari sisi kiri (168) ke sisi

kanan (0) sangat drastis, tidak bertahap. Profil citra tersebut berupa

tepi undakan. Adapun matriks berikut mengandung tepi tanjakan:

168 168 168 138 87 30 0 0 0168 168 168 138 87 30 0 0 0168 168 168 138 87 30 0 0 0

Perhatikan, terjadi perubahan nilai secara bertahap dari transisi 168

ke 0.

Contoh dalam bentuk citra:

tepi undakan tepi tanjakan

Deteksi tepi dengan turunan orde pertama dilakukan dengan menggunakan

operator gradien. Operator gradien didefinisikan sebagai vektor

𝒗𝒇 = [𝐺𝑥

𝐺𝑦] = [

𝑑𝑓

𝑑𝑥𝑑𝑓

𝑑𝑦

] (10.1)

Page 14: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

414 Pengolahan Citra : Teori dan Aplikasi

Besaran vektor dihitung menggunakan rumus

∇𝑓 = 𝑚𝑎𝑔(∇f) = [𝐺𝑥2 + 𝐺𝑦

2]1/2

= [(𝑑𝑓

𝑑𝑥)2 + (

𝑑𝑓

𝑑𝑦)2]

1/2

(10.2)

Namun, untuk alasan penyederhanaan komputasi, operasi akar ditiadakan

sehingga besaran vektor tersebut dihampiri melalui

∇𝑓 ≈ 𝐺𝑥2 + 𝐺𝑦

2 (10.3)

Perlu diketahui, besaran gradien sering disebut sebagai “gradien” saja.

Adapun turunan orde kedua yang biasa digunakan dalam pengolahan citra

dihitung dengan menggunakan Laplacian. Perhitungannya seperti berikut:

∇2𝑓(𝑦, 𝑥) =𝑑2𝑓(𝑦,𝑥)

𝑑𝑥2 +𝑑2𝑓(𝑦,𝑥)

𝑑𝑦2 (10.4)

Cadar yang digunakan pada deteksi tepi dalam buku ini telah

disesuaikan agar proses terhadap citra dapat dilakukan secara

korelasi (bukan konvolusi). Itulah sebabnya, ada kemungkinan

cadar yang digunakan pada buku ini berbeda dengan cadar di

literatur lain.

Berbagai teknik deteksi tepi bekerja dengan cara yang berbeda.

Masing-masing memiliki kekuatan (Crane, 1997). Itulah

sebabnya, eksperimen pada suatu aplikasi dengan menggunakan

berbagai teknik deteksi tepi perlu dilakukan untuk mendapatkan

hasil yang terbaik.

Page 15: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 415

10.3.1 Operator Roberts

Operator Roberts, yang pertama kali dipublikasikan pada tahun 1965,

terdiri atas dua filter berukuran 2x2. Ukuran filter yang kecil membuat komputasi

sangat cepat. Namun, kelebihan ini sekaligus menimbulkan kelemahan, yakni

sangat terpengaruh oleh derau. Selain itu, operator Roberts memberikan

tanggapan yang lemah terhadap tepi, kecuali kalau tepi sangat tajam (Fisher, dkk.,

2003).

(b) Gx (a) Posisi pada citra f

z1 z2

z3

z4

x x+1

y

y+1

1 0

0 -1

0 -1

1 0

(c) Gy

Gambar 10.8 Operator Roberts (b) dan (c) serta posisi pada citra f

Bentuk operator Roberts ditunjukkan pada Gambar 10.8. Misalkan, f

adalah citra yang akan dikenai operator Roberts. Maka, nilai operator Roberts

pada (y, x) didefinisikan sebagai

𝑟(𝑦, 𝑥) = √(𝑧1 − 𝑧4)2 + (𝑧3 − 𝑧2)

2 (10.5)

Dalam hal ini, z1 = f(y, x), z2 = f(y, x+1), z3 = f(y+1, x), dan z4 = f(y+1, x+1).

Fungsi roberts berikut berguna untuk memperoleh tepi pada citra berskala

keabuan.

Program : roberts.m

function [G] = roberts(F)

% ROBERTS Pemerolehan tepi objek pada citra F

% melalui operator Roberts

% Hasil: citra G

Page 16: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

416 Pengolahan Citra : Teori dan Aplikasi

[m, n] = size(F);

F=double(F);

for y=1 : m-1

for x=1 : n-1

G(y, x) = sqrt((F(y,x)-F(y+1,x+1))^2 + ...

(F(y+1,x)-F(y,x+1))^2) ;

end

end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi roberts:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

>> G = roberts(Img);

>> imshow(G)

>>

Hasil deteksi tepi pada citra mainan.png dapat dilihat pada Gambar 10.9.

Page 17: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 417

(a) Citra mainan.png

(b) Hasil deteksi tepi dengan operator Roberts

Gambar 10.9 Pengenaan operator Roberts pada citra mainan.png

10.3.2 Operator Prewitt

Operator Prewitt dikemukakan oleh Prewitt pada tahun 1966. Bentuknya

terlihat pada Gambar 10.10. Untuk mempercepat komputasi, bagian yang bernilai

nol tidak perlu diproses. Oleh karena itu, perhitungan dengan operator Prewitt

ditulis menjadi

𝑟(𝑦, 𝑥) = sqrt((f(y-1,x-1)+f(y,x-1)+f(y+1,x-1) -

f(y-1,x+1)-f(y,x+1)-f(y+1,x+1))^2 + (10.6)

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

f(y-1,x-1) - f(y-1,x) - f(y-1,x+1))^2))

Page 18: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

418 Pengolahan Citra : Teori dan Aplikasi

(b) Gx (a) Posisi pada citra f (c) Gy

1 0

1 0

-1

-1

1 0 -1

-1 -1

0 0

-1

0

1 1 1

x x+1

y

y+1

x-1

y-1 z1 z2

z4

z5

z3

z6

z7

z8

z9

Gambar 10.10 Operator Prewitt (b) dan (c) serta posisi pada citra f

Fungsi prewitt berikut berguna untuk melakukan pengujian operator

Prewitt terhadap citra berskala keabuan.

Program : prewitt.m

function [G] = prewitt(F)

% PREWITT Pemerolehan tepi objek pada citra F

% melalui operator Prewitt

% Hasil: citra G

[m, n] = size(F);

F=double(F);

G=zeros(m,n);

for y=2 : m-1

for x=2 : n-1

G(y, x) = sqrt((F(y-1,x-1) + F(y,x-1) + F(y+1,x-1) - ...

F(y,x) - F(y,x+1) - F(y+1,x+1))^2 + ...

(F(y+1,x-1)+ F(y+1,x) + F(y+1,x+1) - ...

F(y-1,x-1) - F(y-1,x) - F(y-1,x+1))^2) ;

end

end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi prewitt:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

Page 19: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 419

>> G = prewitt(Img);

>> imshow(G)

>>

Hasil deteksi tepi pada citra mainan.png dapat dilihat pada Gambar 10.11.

Gambar 10.11 Hasil deteksi tepi dengan operator Prewitt. Hasil tepi lebih

tegas daripada hasil dengan operator Roberts

Page 20: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

420 Pengolahan Citra : Teori dan Aplikasi

10.3.3 Operator Sobel

Operator Sobel dapat dilihat pada Gambar 10.12. Operator Sobel lebih

sensitif terhadap tepi diagonal daripada tepi vertikal dan horizontal Hal ini

berbeda dengan operator Prewitt, yang lebih sensitif terhadap tepi vertikal dan

horizontal (Crane, 1997).

Fungsi deteksi dapat digunakan untuk mengamati efek cadar Gx

dan Gy pada operator Prewitt secara individual. Contoh

penggunaannya seperti berikut:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

>> Gx = [ 1 0 -1; 1 0 -1; 1 0 -1];

>> G = deteksi(Img, Gx); imshow(G)

>>

Hasilnya seperti berikut:

Page 21: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 421

(b) Gx (a) Posisi pada citra f

-1 0

-2 0

(c) Gy

1

2

-1 0 1

1 2

0 0

1

0

-1 -2 -1

x x+1

y

y+1

x-1

y-1 z1 z2

z4

z5

z3

z6

z7

z8

z9

Gambar 10.12 Operator Sobel (b) dan (c) serta posisi dalam citra f

Fungsi sobel berikut berguna untuk melakukan pengujian operator Sobel

terhadap citra berskala keabuan.

Program : sobel.m

function [G] = sobel(F)

% SOBEL Pemerolehan tepi objek pada citra F

% melalui operator Sobel

% Hasil: citra G

[m, n] = size(F);

F=double(F);

G=zeros(m,n);

for y=2 : m-1

for x=2 : n-1

G(y, x) = sqrt(...

(F(y-1,x+1)+2*F(y,x+1)+F(y+1,x+1) - ...

F(y-1,x-1)-F(y,x-1)-F(y+1,x-1))^2 + ...

(F(y-1,x-1)+2*F(y-1,x)+F(y-1,x+1) - ...

F(y+1,x-1)-2*F(y+1,x)-F(y+1,x+1))^2) ;

end

end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi sobel:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

Page 22: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

422 Pengolahan Citra : Teori dan Aplikasi

>> G = sobel(Img);

>> imshow(G)

>>

Hasil deteksi tepi pada citra mainan.png dapat dilihat pada Gambar 10.13.

Gambar 10.13 Hasil deteksi tepi dengan operator Sobel

10.3.4 Operator Frei-Chen

Operator Frei-Chen (kadang disebut operator isotropik) ditunjukkan pada

Gambar 10.14. Operator ini mirip dengan operator Sobel, dengan setiap angka 2

diganti menjadi √2.

(b) Gx (a) Posisi pada citra f

-1 0

-√2 0

(c) Gy

1

√2

-1 0 1

1 √2

0 0

1

0

-1 -√2

-1

x x+1

y

y+1

x-1

y-1 z1 z2

z4

z5

z3

z6

z7

z8

z9

Gambar 10.14 Operator Frei-Chen (b) dan (c) serta posisi dalam citra f

Page 23: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 423

Fungsi freichen berikut berguna untuk melakukan pengujian operator

Frei-Chen terhadap citra berskala keabuan.

Program : freichen.m

function [G] = freichen(F)

% FREICHEN Pemerolehan tepi objek pada citra F

% melalui operator Frei-Chen

% Hasil: citra G

[m, n] = size(F);

akar2 = sqrt(2);

F=double(F);

G=zeros(m,n);

for y=2 : m-1

for x=2 : n-1

G(y, x) = sqrt(...

(F(y-1,x+1)+akar2*F(y,x+1)+F(y+1,x+1) - ...

F(y-1,x-1)-F(y,x-1)-F(y+1,x-1))^2 + ...

(F(y-1,x-1)+akar2*F(y-1,x)+F(y-1,x+1) - ...

F(y+1,x-1)-akar2*F(y+1,x)-F(y+1,x+1))^2) ;

end

end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi freichen:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

>> G = freichen(Img);

>> imshow(G)

>>

Hasil deteksi tepi pada citra mainan.png dapat dilihat pada Gambar 10.15.

Page 24: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

424 Pengolahan Citra : Teori dan Aplikasi

Gambar 10.15 Hasil deteksi tepi dengan operator Frei-Chen

Gambar 10.16 memperlihatkan perbedaan secara visual hasil deteksi tepi

dengan menggunakan operator Roberts, Prewitt, Sobel, dan Frei-Chen. Perlu

diketahui, hasil pada gambar tersebut masih berskala keabuan. Untuk menjadi

citra biner, perlu dilakukan peng-ambangan yang mulai dibahas pada Subbab

10.4. Contoh hasil peng-ambangan dapat dilihat pada Gambar 10.17.

Page 25: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 425

(a) Operator Roberts (b) Operator Prewitt

(c) Operator Sobel (d) Operator Frei-Chen

Gambar 10.16 Perbedaan hasil deteksi tepi dengan

menggunakan keempat macam operator

(a) Hasil deteksi tepi dengan

operator Roberts

(a) Hasil deteksi tepi dengan

operator Roberts

(b) Hasil setelah peng-ambangan

dengan nilai ambang 20

Gambar 10.17 Contoh hasil deteksi tepi dan peng-ambangan

10.3.5 Operator Laplacian

Operator Laplacian merupakan contoh operator yang berdasarkan pada

turunan kedua. Operator ini bersifat omnidirectional, yakni menebalkan bagian

tepi ke segala arah. Namun, operator Laplacian memiliki kelemahan, yakni peka

terhadap derau, memberikan ketebalan ganda, dan tidak mampu mendeteksi arah

tepi (Gonzalez & Woods, 2002). Contoh cadar ditunjukkan pada Gambar 10.18.

Page 26: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

426 Pengolahan Citra : Teori dan Aplikasi

(b) #1 (a) Posisi pada citra f

0 -1

-1 4

(c) #2

0

-1

0 -1 0

-1 -1

-1 8

-1

-1

-1 -1 -1

x x+1

y

y+1

x-1

y-1 z1 z2

z4

z5

z3

z6

z7

z8

z9

Gambar 10.18 Operator Laplacian

Berdasarkan cadar #1 pada Gambar 10.18(b), nilai operator Laplacian

pada (y, x) didefinisikan sebagai

𝑙(𝑦, 𝑥) = 4 𝑓(𝑦, 𝑥) − [𝑓(𝑦 − 1, 𝑥) + 𝑓(𝑦, 𝑥 − 1) +

𝑓(𝑦, 𝑥 + 1) + 𝑓(𝑦+ 1, 𝑥)] (10.7)

Fungsi laplacian2 berikut berguna untuk melakukan pengujian

operator Laplacian terhadap citra berskala keabuan dengan menggunakan cadar

#2 yang tertera pada Gambar 10.18(c).

Program : laplacian2.m

function [G] = laplacian2(F)

% LAPALACIAN2 Pemerolehan tepi objek pada citra F

% melalui operator Laplacian #1

% Hasil: citra G

[m, n] = size(F);

G=zeros(m,n); % Semua berisi nol

F=double(F);

for y=2 : m-1

for x=2 : n-1

G(y, x) = 8 * F(y,x) - ...

(F(y-1,x)+ F(y,x-1)+F(y,x+1)+F(y+1,x) + ...

F(y-1,x-1)+ F(y-1,x+1)+F(y+1,x-1)+F(y+1,x+1));

Page 27: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 427

end

end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi laplacian2:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

>> G = laplacian2(Img);

>> imshow(G)

>>

Hasil deteksi tepi pada citra mainan.png dapat dilihat pada Gambar 10.19.

Gambar 10.19 Hasil deteksi tepi menggunakan operator Laplacian #2

10.3.6 Operator Laplacian of Gaussian

Deteksi tepi orde kedua yang makin kurang sensitif terhadap derau adalah

Laplacian of Gaussian (LoG). Hal ini disebabkan penggunaan fungsi Gaussian

Page 28: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

428 Pengolahan Citra : Teori dan Aplikasi

yang memuluskan citra dan berdampak pada pengurangan derau pada citra.

Akibatnya, operator mereduksi jumlah tepi yang salah terdeteksi (Crane, 1997).

Menurut Fisher, dkk. (2003), operator LoG diperoleh melalui konvolusi

dengan

𝐿𝑜𝐺(𝑦, 𝑥) = −1

𝜋𝜎4 [1 −𝑥2+𝑦2

2𝜎2 ] 𝑒−(𝑥2+𝑦2 )

2𝜎2 (10.8)

Fungsi di atas disebut sebagai filter topi Meksiko (the Mexican hat filter) karena

bentuknya seperti topi yang biasa dikenakan orang Meksiko (lihat Gambar 10.20).

Dalam hal ini, semakin besar nilai , semakin besar pula cadar yang diperlukan.

Contoh cadar berukuran 5 x 5 yang mewakili operator LoG ditunjukkan pada

Gambar 10.21 (Gonzalez & Woods, 2002).

Dalam praktik, terdapat berbagai variasi rumus yang digunakan

dalam LoG. Gonzalez dan Woods (2002) menggunakan rumus

seperti berikut:

𝐿𝑜𝐺(𝑦, 𝑥) = −[𝑥2 + 𝑦2 − 𝜎2

𝜎4]𝑒

−(𝑥2+𝑦2)

2𝜎2

Nixon dan Aguido (2002) menggunakan rumus:

𝐿𝑜𝐺(𝑦, 𝑥) =1

𝜎2[𝑥2 +𝑦2

𝜎2−2] 𝑒

−(𝑥2+𝑦2 )

2𝜎2

Adapun Crane (1997) menggunakan rumus:

𝐿𝑜𝐺(𝑦, 𝑥) =1

𝜋𝜎4[1 −

𝑥2 + 𝑦2

2𝜎2] 𝑒

−(𝑥2+𝑦2 )

2𝜎2

Page 29: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 429

Gambar 10.20 Fungsi LoG(y, x) berdasarkan Fisher, dkk. (2003)

Gambar 10.21 Contoh operator LoG

Contoh penggunaan LoG:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

>> H = [ 0 0 -1 0 0

0 -1 -2 -1 0

-1 -2 16 -2 -1

0 -1 -2 -1 0

0 0 -1 0 0];

>> G = deteksi(Img, H); imshow(G)

>>

Hasil deteksi tepi pada citra mainan.png dapat dilihat pada Gambar 10.22.

0 0 -1 0 0

0 -1 -2 -1 0

-1 -2 16 -2 -1

0 -1 -2 -1 0

0 0 -1 0 0

Page 30: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

430 Pengolahan Citra : Teori dan Aplikasi

Gambar 10.22 Contoh hasil deteksi tepi dengan LoG

Nixon & Aguado (2002) memberikan cara yang dapat digunakan untuk

memperoleh cadar LoG berdasarkan nilai dan ukuran. Cara tersebut tertuang

dalam algoritma berikut.

ALGORITMA 10.1 – Memperoleh cadar LoG

Masukan:

Ukuran : ukuran cadar

: Deviasi standar

Keluaran:

h (M, N): Cadar LoG

cadarLoG(ukuran, ):

1. cx floor((ukuran-1) / 2)

2. cy cx

3. jum 0

4. FOR y 0 TO ukuran -1

FOR x 0 TO ukuran -1

nx x – cx

ny y – cy

Page 31: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 431

nilai 1

𝜎2 [𝑛𝑥2+ 𝑛𝑦2

𝜎2 −2] 𝑒−(𝑛𝑥2+ 𝑛𝑦2 )

2𝜎2

h(y+1, x+1) nilai

jum jum + nilai END-FOR

END-FOR 5. // Lakukan normalisasi

FOR y 1 TO ukuran

FOR y 1 TO ukuran

h(y, x) h(y, x) / jum END-FOR

END-FOR 6. RETURN h

Pada algoritma di atas, normalisasi dilakukan agar jumlah koefisien pada cadar

bernilai 1. Implementasi perolehan cadar LoG dapat dilihat pada cadarLoG.m.

Program : cadarLoG.m

function [H] = cadarLoG(ukuran, sigma)

% CADARLOG Menghasilkan cadar LoG berdasarkan

% Nixon dan Aguido (2002)

% Masukan:

% ukuran : ukuran cadar

% sigma : Deviasi standar

% Keluaran : H = cadar LoG

cx = floor((ukuran-1) / 2);

cy = cx;

jum = 0;

H = zeros(ukuran, ukuran);

for y=0 : ukuran-1

for x=0 : ukuran -1

nx = x - cx;

ny = y - cy;

nilai = 1 / (sigma ^ 2) * ...

((nx^2 + ny^2)/(sigma^2)-2) * ...

exp((-nx^2 - ny^2) / (2 * sigma^2));

H(y+1, x+1) = nilai;

jum = jum + nilai;

end

end

% Lakukan normalisasi

for y=1 : ukuran

Page 32: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

432 Pengolahan Citra : Teori dan Aplikasi

for x=1 : ukuran

H(y,x) = H(y,x) / jum;

end

end

Akhir Program

Contoh penggunaan cadarLoG untuk memperoleh cadar LoG berukuran

7 x 7 dengan = 0,6 :

>> cadarLoG(7, 0.6)

ans =

-0.0000 -0.0000 -0.0002 -0.0008 -0.0002 -0.0000 -0.0000

-0.0000 -0.0029 -0.1085 -0.3335 -0.1085 -0.0029 -0.0000

-0.0002 -0.1085 -2.0930 -1.8361 -2.0930 -0.1085 -0.0002

-0.0008 -0.3335 -1.8361 18.9348 -1.8361 -0.3335 -0.0008

-0.0002 -0.1085 -2.0930 -1.8361 -2.0930 -0.1085 -0.0002

-0.0000 -0.0029 -0.1085 -0.3335 -0.1085 -0.0029 -0.0000

-0.0000 -0.0000 -0.0002 -0.0008 -0.0002 -0.0000 -0.0000

>>

Adapun contoh berikut untuk memperoleh cadar LoG berukuran 7 x 7 dengan =

1 :

>> cadarLoG(7, 1)

ans =

-0.0385 -0.3221 -1.0499 -1.5146 -1.0499 -0.3221 -0.0385

-0.3221 -2.1404 -4.7962 -5.2717 -4.7962 -2.1404 -0.3221

-1.0499 -4.7962 0 11.8132 0 -4.7962 -1.0499

-1.5146 -5.2717 11.8132 38.9532 11.8132 -5.2717 -1.5146

Page 33: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 433

-1.0499 -4.7962 0 11.8132 0 -4.7962 -1.0499

-0.3221 -2.1404 -4.7962 -5.2717 -4.7962 -2.1404 -0.3221

-0.0385 -0.3221 -1.0499 -1.5146 -1.0499 -0.3221 -0.0385

>>

Cadar LoG akan bermanfaat untuk kepentingan pemrosesan dengan operator

Marr-Hildreth, yang dibahas pada Bagian 10.4.10.

10.3.7 Operator Difference of Gaussian

Mengingat LoG memerlukan komputasi yang besar, Difference of Gaussian

(DoG) biasa digunakan sebagai hampiran terhadap LoG. Fungsi DoG berupa

𝐷𝑜𝐺(𝑦. 𝑥) =𝑒

−(𝑥2+𝑦2)

2𝜎12

2𝜎12 −

𝑒

−(𝑥2+𝑦2)

2𝜎22

2𝜎22 (10.9)

Terlihat bahwa DoG dilaksanakan dengan melakukan konvolusi citra dengan

sebuah cadar yang merupakan hasil pengurangan dua buah cadar Gaussian

dengan nilai yang berbeda. Gambar 10.23 menunjukkan dua cadar yang dapat

digunakan untuk melaksanakan DoG (Crane, 1997).

Page 34: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

434 Pengolahan Citra : Teori dan Aplikasi

(a) Cadar berukuran 7 x 7

0 0 0 -1 -1 -1 0 0 0

0 -2 -3 -3 -3 -3 -3 -2 0

0 -3 -2 -1 -1 -1 -2 -3 0

-1 -3 -1 9 9 9 -1 -3 -1

-1 -3 -1 9 9 9 -1 -3 -1

-1 -3 -1 9 9 9 -1 -3 -1

0 -3 -2 -1 -1 -1 -2 -3 0

0 -2 -3 -3 -3 -3 -3 -2 0

0 0 0 -1 -1 -1 0 0 0

(b) Cadar berukuran 9 x 9

0 0 -1 -1 -1 0 0

0 -2 -3 -3 -3 -2 0

-1 -3 5 5 5 -3 -1

-1 -3 5 16 5 -3 -1

-1 -3 5 5 5 -3 -1

0 -2 -3 -3 -3 -2 0

0 0 -1 -1 -1 0 0

Gambar 10.23 Contoh cadar DoG

Contoh penggunaan DoG:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

>> H = [ 0 0 -1 -1 -1 0 0

0 -2 -3 -3 -3 -2 0

-1 -3 5 5 5 -3 -1

-1 -3 5 16 5 -3 -1

-1 -3 5 5 5 -3 -1

0 -2 -3 -3 -3 -2 0

0 0 -1 -1 -1 0 0 ];

>> G = deteksi(Img, H); imshow(G)

>>

Hasil deteksi tepi pada citra mainan.png dapat dilihat pada Gambar 10.24.

Page 35: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 435

Gambar 10.24 Hasil deteksi tepi menggunakan DoG

10.3.9 Operator Canny

Operator Canny, yang dikemukakan oleh John Canny pada tahun 1986,

terkenal sebagai operator deteksi tepi yang optimal. Algoritma ini memberikan

tingkat kesalahan yang rendah, melokalisasi titik-titik tepi (jarak piksel-piksel tepi

yang ditemukan deteksi dan tepi yang sesungguhnya sangat pendek), dan hanya

memberikan satu tanggapan untuk satu tepi.

Terdapat enam langkah yang dilakukan untuk mengimplementasikan

deteksi tepi Canny (Green, 2002). Keenam langkah tersebut dijabarkan berikut

ini.

Langkah 1:

Pertama-tama dilakukan penapisan terhadap citra dengan tujuan untuk

menghilangkan derau. Hal ini dapat dilakukan dengan menggunakan filter

Gaussian dengan cadar sederhana. Cadar yang digunakan berukuran jauh lebih

kecil daripada ukuran citra. Contoh ditunjukkan pada Gambar 10.25.

Page 36: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

436 Pengolahan Citra : Teori dan Aplikasi

Gambar 10.25 Contoh cadar Gaussian dengan theta = 1,4

Langkah 2:

Setelah penghalusan gambar terhadap derau dilakukan, dilakukan proses

untuk mendapatkan kekuatan tepi (edge strength). Hal ini dilakukan dengan

menggunakan operator Gaussian.

Selanjutnya, gradien citra dapat dihitung melalui rumus:

yx GGG (10.10)

Langkah 3:

Langkah ketiga berupa penghitungan arah tepi. Rumus yang digunakan

untuk keperluan ini:

theta = tan-1(Gy, Gx) (10.11)

Langkah 4:

Setelah arah tepi diperoleh, perlu menghubungkan antara arah tepi dengan

sebuah arah yang dapat dilacak dari citra. Sebagai contoh, terdapat susunan piksel

berukuran 5 x 5 seperti terlihat pada Gambar 10.26. Dengan melihat piksel “a”

tampak bahwa a hanya memiliki 4 arah berupa 0o, 45o, 90o, dan 135o.

2 4 5 4 2

4 9 12 9 4

5 12 15 12 5

4 9 12 9 4

2 4 5 4 2

1 / 115

Page 37: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 437

X X X X X

X X X X X

X X a X X

X X X X X

X X X X X

Gambar 10.26 Matriks piksel berukuran 5x5

Selanjutnya, arah tepi yang diperoleh akan dimasukkan ke dalam salah satu

kategori dari keempat arah tadi berdasarkan area yang tertera pada Gambar 10.27.

Berikut adalah aturan konversi yang berlaku:

135

90

45

0

arah

j

Hj

THij

Ti

jj

HIij

HHi

ywfy

xwfy

)()()(

)()()(

(10.12)

45o 135

o

90o

Gambar 10.27 Area untuk mengonversi arah tepi ke dalam

kategori salah satu dari arah 0o, 45o, 90o, dan 135o

Semua arah tepi yang berkisar antara 0 dan 22,5 serta 157,5 dan 180 derajat

(warna biru) diubah menjadi 0 derajat. Semua arah tepi yang berkisar antara 22,5

dan 67,5 derajat (warna kuning) diubah menjadi 45 derajat. Semua arah tepi yang

Page 38: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

438 Pengolahan Citra : Teori dan Aplikasi

berkisar antara 67,5 dan 112,5 derajat (warna merah) diubah menjadi 90 derajat.

Semua arah tepi yang berkisar antara 112,5 dan 157,5 derajat (warna hijau) diubah

menjadi 135 derajat.

Langkah 5

Setelah arah tepi diperoleh, penghilangan non-maksimum dilaksanakan.

Penghilangan non-maksimum dilakukan di sepanjang tepi pada arah tepi dan

menghilangkan piksel-piksel (piksel diatur menjadi 0) yang tidak dianggap

sebagai tepi. Dengan cara seperti itu, diperoleh tepi yang tipis.

Langkah 6:

Langkah keenam berupa proses yang disebut hysteresis. Proses ini

menghilangkan garis-garis yang seperti terputus-putus pada tepi objek. Caranya

adalah dengan menggunakan dua ambang T1 dan T2. Lalu, semua piksel citra

yang bernilai lebih besar daripada T1 dianggap sebagai piksel tepi. Selanjutnya,

semua piksel yang terhubung dengan piksel tersebut dan memiliki nilai lebih

besar dari T2 juga dianggap sebagai piksel tepi.

Bagian penting yang perlu dijelaskan adalah penghilangan non-maksimum

dan peng-ambangan histeresis. Penghilangan non-maksimum dilakukan dengan

mula-mula menyalin isi larik Grad (yang berisi besaran gradien) ke Non_max.

Selanjutnya, penghilangan non-maksimum dilaksanakan dengan memperhatikan

dua titik tetangga yang terletak pada arah tepi (yang tersimpan dalam Theta).

Misalnya, arah tepi adalah 0. Apabila titik yang menjadi perhatian mempunyai

koordinat (r, c), dua titik tetangga berupa (r, c-1) dan (r, c+1). Apabila gradien titik

perhatian lebih besar daripada gradien kedua tetangga, nilainya akan

dipertahankan. Sebaliknya, jika nilai titik perhatian lebih kecil daripada nilai salah

satu atau kedua gradien tetangga, nilainya akan diabaikan (diubah menjadi nol).

Seluruh kemungkinan proses seperti itu dijabarkan dalam Gambar 10.28.

Page 39: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 439

Arah tepi 135o:

if (Grad(i,j) <= Grad(i+1,j+1)) || ... (Grad(i,j) <= Grad(i-1,j-1)) Non_max(i,j) = 0; end

Arah tepi 45o:

if (Grad(i,j) <= Grad(i-1,j+1)) || ... (Grad(i,j) <= Grad(i+1,j-1)) Non_max(i,j) = 0; end

i+1, j-1

i, j

i-1, j+1

i, j

i-1, j-1

i, j+1

Arah tepi 90o:

if (Grad(i,j) <= Grad(i+1,j) ) || ... (Grad(i,j) <= Grad(i-1,j)) Non_max(i,j) = 0;

end

i, j

i-1, j

i, j+1

Arah tepi 0o:

if (Grad(i,j) <= Grad(i,j+1)) || ... (Grad(i,j)<= Grad(i,j-1)) Non_max(i,j) = 0; end

i, j-1 i, j i, j+1

Gambar 10.28 Penghilangan non-maksimum

Peng-ambangan histeresis dilakukan dengan melibatkan dua ambang T1

(ambang bawah) dan ambang T2 (ambang atas). Nilai yang kurang dari T1 akan

diubah menjadi hitam (nilai 0) dan nilai yang lebih dari T2 diubah menjadi putih

(nilai 255). Lalu, bagaimana nilai yang lebih dari atau sama dengan T1 tetapi

kurang dari T2? Oleh karena itu, untuk sementara nilai pada posisi seperti itu

diberi nilai 128, yang menyatakan nilai abu-abu atau belum jelas, akan dijadikan 0

atau 255.

Selanjutnya, dilakukan pengujian untuk mendapatkan kondisi seperti

tercantum pada Gambar 10.29. Apabila kondisi seperti itu terpenuhi, angka 128

diubah menjadi 255. Proses pengujian seperti itu dilakukan sampai tidak ada lagi

perubahan dari nilai 128 menjadi 255. Tahap selanjutnya, semua piksel yang

bernilai 128 yang tersisa diubah menjadi nol.

Page 40: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

440 Pengolahan Citra : Teori dan Aplikasi

255 255

255 128

255

255

255 255 255

255 255

255 255

255

255

255 255 255

j-1 j j+1

i-1

i

i+1

Gambar 10.29 Pengujian untuk mengubah nilai 128 menjadi 255

Implementasi operator Canny dapat dilihat pada canny.m. Sejumlah

keterangan diberikan pada skrip, untuk menjelaskan kode.

Program : canny.m

function [K] = canny(F, ambang_bawah, ambang_atas)

% CANNY Pemerolehan tepi objek pada citra F

% melalui operator Canny

% Masukan:

% ambang_bawah = batas bawah untuk ambang histeresis

% Nilai bawaan 011

% ambang_atas = batas atas untuk ambang histeresis

% Nilai bawaan 0,3

% Hasil: citra G

% Menentukan nilai ambang bawaan

if nargin < 2

ambang_bawah = 0.1;

end

if nargin < 2

ambang_atas = 0.3;

end

% Kernel Gaussians

HG = [ 2 4 5 4 2

4 9 12 9 12

5 12 15 12 5

4 9 12 9 12

2 4 5 4 2 ] / 115.0;

[hHG, wHG] = size(HG);

h2 = floor(hHG / 2);

w2 = floor(wHG / 2);

% Kenakan operasi Gaussian

G = double(deteksi(F, HG, true));

% Pastikan hasilnya berada antara 0 sampai dengan 255

[m, n] = size(G);

Page 41: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 441

for i = 1 : m

for j = 1 : n

G(i, j) = round(G(i, j));

if G(i, j) > 255

G(i, j) = 255;

else

if G(i, j) < 0

G(i, j) = 0;

end

end

end

end

% Kenakan perhitungan gradien dan arah tepi

Theta = zeros(m, n);

Grad = zeros(m, n);

for i = 1 : m-1

for j = 1 : n-1

gx = (G(i,j+1)-G(i,j) + ...

G(i+1,j+1)-G(i+1,j)) / 2;

gy = (G(i,j)-G(i+1,j) + ...

G(i,j+1)-G(i+1,j+1)) / 2;

Grad(i, j) = sqrt(gx.^2 + gy.^2);

Theta(i,j) = atan2(gy, gx);

end

end

% Konversi arah tepi menjadi 0, 45, 90, atau 135 derajat

[r c] = size (Theta);

if Theta < 0

Theta = Theta + pi; % Jangkauan menjadi 0 s/d pi

end

for i = 1 : r

for j = 1 : c

if (Theta(i,j) < pi/8 || Theta(i,j) >= 7/8*pi)

Theta(i,j) = 0;

elseif (Theta(i,j)>=pi/8 && Theta(i,j) < 3*pi/8 )

Theta(i,j) = 45;

elseif (Theta(i,j) >=3*pi/8 && Theta(i,j) < 5*pi/8 )

Theta(i,j) = 90;

else

Theta(i,j) = 135;

end

end

end

% penghilangan non-maksimum

Non_max = Grad;

for i = 1+h2 : r-h2

for j = 1+w2 : c-h2

if Theta(i,j) == 0

if (Grad(i,j) <= Grad(i,j+1)) || ...

(Grad(i,j)<= Grad(i,j-1))

Non_max(i,j) = 0;

end

Page 42: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

442 Pengolahan Citra : Teori dan Aplikasi

elseif Theta(i,j) == 45

if (Grad(i,j) <= Grad(i-1,j+1)) || ...

(Grad(i,j) <= Grad(i+1,j-1))

Non_max(i,j) = 0;

end

elseif Theta(i,j) == 90

if (Grad(i,j) <= Grad(i+1,j) ) || ...

(Grad(i,j) <= Grad(i-1,j))

Non_max(i,j) = 0;

end

else

if (Grad(i,j) <= Grad(i+1,j+1)) || ...

(Grad(i,j) <= Grad(i-1,j-1))

Non_max(i,j) = 0;

end

end

end

end

% Pengambangan histeresis

ambang_bawah = ambang_bawah * max(max(Non_max));

ambang_atas = ambang_atas * max(max(Non_max));

Histeresis = Non_max;

% ----- Penentuan awal untuk memberikan nilai

% ----- 0, 128, dan 255

for i = 1+h2 : r-h2

for j = 1+w2 : c-w2

if (Histeresis(i,j) >= ambang_atas)

Histeresis(i,j) = 255;

end

if (Histeresis(i,j) < ambang_atas) && ...

(Histeresis(i,j) >= ambang_bawah)

Histeresis(i,j)= 128;

end

if (Histeresis(i,j) < ambang_bawah)

Histeresis(i,j) = 0;

end

end

end

% ----- Penggantian angka 128 menjadi 255

% ----- Berakhir kalau tidak ada lagi yang berubah

ulang = true;

while ulang

ulang = false;

for i = 1+h2 : r-h2

for j = 1+w2 : c-w2

if (Histeresis(i,j) == 128)

if (Histeresis(i-1, j-1) == 255) && ...

(Histeresis(i-1, j) == 255) && ...

(Histeresis(i, j+1) == 255) && ...

(Histeresis(i, j-1) == 255) && ...

(Histeresis(i, j+1) == 255) && ...

(Histeresis(i+1, j-1) == 255) && ...

(Histeresis(i+1, j) == 255) && ...

Page 43: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 443

(Histeresis(i+1, j+1) == 255)

Histeresis(i,j) = 255;

ulang = true; % Ulang pengujian

end

end

end

end

end

% ----- Penggantian angka 128 menjadi 0

% ----- untuk yang tersisa

for i = 1+h2 : r-h2

for j = 1+w2 : c-w2

if (Histeresis(i,j) == 128)

Histeresis(i,j) = 0;

end

end

end

% Buang tepi

for i = 1+h2 : r-h2

for j = 1+w2 : c-w2

K(i-1,j-1) = Histeresis(i,j);

end

end

Akhir Program

Contoh penggunaan fungsi canny:

>> Img = imread('C:\Image\lena256.png');

>> G = canny(Img, 0.05, 0.15); imshow(G)

>>

Contoh di atas menggunakan peng-ambangan berupa 0,05 untuk batas bawah dan

0,15 untuk batas atas. Hasilnya dapat dilihat pada Gambar 10.30.

Page 44: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

444 Pengolahan Citra : Teori dan Aplikasi

(b) Efek Gaussian

(a) Citra lena256.tif

(d) Penghilangan non-maksimum

(c) Besaran gradien

(e) Hasil operator Canny

Gambar 10.30 Contoh hasil antara hingga hasil akhir

pada pengenaan operator Canny

10.3.10 Operator Zero-Crossing

Operator zero-crossing atau dikenal dengan nama lain yaitu operator Marr-

Hildreth sebenarnya adalah operator LoG yang dilengkapi dengan upaya untuk

menemukan zero crossing. Zero-crossing menyatakan tanda perubahan pada tepi-

tepi dalam citra. Sebagaimana telah dibahas di depan, zero-crossing merupakan

perpotongan dengan sumbu X pada turunan kedua (Gambar 10.7). Operasi inilah

yang membuat operator Marr-Hildreth mampu menghasilkan kurva yang tertutup,

yang tidak dapat dipenuhi oleh operator Canny.

Ada beberapa teknik yang dapat digunakan untuk melakukan pemrosesan

zero-crossing, misalnya seperti yang dibahas pada Crane (1997) atau pada Nixon

dan Aguido (2002). Algoritma yang didasarkan pada Nixon dan Aguido dapat

dilihat berikut ini.

Page 45: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 445

ALGORITMA 10.2 – Memproses zero crossing

Masukan:

g: Citra hasil pemrosesan LoG, berukuran MxN

ukuran : Ukuran cadar

: Deviasi standar

Keluaran:

k: citra hasil pemrosesan operator Marr-Hildreth

zerocross(g, ukuran, ) : 1. // Bentuk larik k yang seluruhnya bernilai 0

FOR y 1 TO M

FOR y 1 TO M

k(y, x) 0

END END

2. FOR y 2 TO M-1

FOR kolom 2 TO N-1

bag1 rerata(g(x-1, y-1), g(x, y), g(x-1, y-1), g(x, y))

bag2 rerata(g(x, y-1), g(x+1, y), g(x, y-1), g(x+1, y))

bag3 rerata(g(x, y-1), g(x+1, y), g(x+1, y-1), g(x+1, y))

bag4 rerata(g(x, y), g(x+1, y+1), g(x, y), g(x+1, y+1))

terbesar max(bag)

terkecil min(bag)

IF (terbesar > 0) AND (terkecil < 0)

k(y,x) 255 END-IF

END-FOR END-FOR

3. RETURN k

Implementasi operator zero-crossing dapat dilihat pada zerocross.m.

Proses zero-crossing yang digunakan pada algoritma di depan

dilaksanakan dengan memanfaatkan jendela berukuran 3 x 3. Setiap piksel yang

diperoleh melalui operasi Laplacian dikenai jendela tersebut. Adapun perhitungan

yang dilakukan adalah dengan mula-mula menghitung nilai rerata dari empat

bagian (masing-masing berukuran 2 x 2) seperti yang diperlihatkan pada Gambar

10.31. Berdasarkan keempat bagian tersebut, nilai terbesar dan nilai terkecil

Page 46: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

446 Pengolahan Citra : Teori dan Aplikasi

diperoleh. Piksel yang nilai terbesarnya melebihi nol dan nilai terkecilnya kurang

dari nol akan dijadikan sebagai tepi (diberi nilai 255).

Bagian 2

Bagian 4

Bagian 3 Bagian 1

Piksel pusat dalam

jendela 3 x 3

Gambar 10.31 Area untuk deteksi zero-crossing

pada jendela berukuran 3 x 3

Implementasi operator Marr-Hilbreth ditunjukkan di bawah ini.

Program : zerocross.m

function [K] = zerocross(F, ukuran, sigma)

% ZEROCROSS Pemerolehan tepi objek pada citra F

% melalui operator Marr-Hildreth

% Hasil: citra K

H = cadarLoG(ukuran, sigma);

pembulatan = false;

potong = true;

G = deteksi(F, H, potong, pembulatan);

% Proses zero crossing

K = zeros(size(G));

[m, n] = size(K);

for y=2 : m-1

for x=2: n-1

jum = 0;

Page 47: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 447

for p = x-1 : x

for q = y-1 : y

jum = jum + G(q,p);

end

end

rerata0 = jum / 4;

jum = 0;

for p = x-1 : x

for q = y : y+1

jum = jum + G(q,p);

end

end

rerata1 = jum / 4;

jum = 0;

for p = x : x+1

for q = y-1 : y

jum = jum + G(q,p);

end

end

rerata2 = jum / 4;

jum = 0;

for p = x : x+1

for q = y : y+1

jum = jum + G(q,p);

end

end

rerata3 = jum / 4;

terbesar = max([rerata0 rerata1 rerata2 rerata3]);

terkecil = min([rerata0 rerata1 rerata2 rerata3]);

if (terbesar > 0) && (terkecil < 0)

K(y,x) = 255;

end

end

end

return

Akhir Program

Contoh penggunaan fungsi zerocross:

>> Img = imread('C:\Image\lena256.png');

>> G = zerocross(Img, 7,1); imshow(G)

>>

Page 48: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

448 Pengolahan Citra : Teori dan Aplikasi

Lima contoh hasil pemrosesan dengan operator Harr-Hildreth dengan nilai

berbeda dapat dilihat pada Gambar 10.32.

(b) Zero crossing 7 x 7, =1

(a) Citra lena256.tif

(d) Zero crossing 9 x 9, =1

(c) Zero crossing 7 x 7, =0.6

(e) Zero crossing 9 x 9, =0.6

(e) Zero crossing 9 x 9, =0.5

Gambar 10.32 Hasil penerapan operator Marr-Hilldreth pada lena256.png

Contoh berikut menunjukkan penggunaan fungsi zerocross pada citra

bangunan2.png:

>> Img = imread('C:\Image\bangunan2.png');

>> G = zerocross(Img,7,1); imshow(G)

>>

Hasilnya ditunjukkan pada Gambar 10.33.

Page 49: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 449

(a) Citra bangunan2.png

(b) Hasil operator Marr-Hilldreth

Gambar 10.33 Operator Marr-Hilldreth pada bangunan2.png

Apabila dikehendaki untuk menggunakan yang besar, ukuran

cadar juga perlu diperbesar. Sebagai pedoman kasar, ukuran cadar

yang diperlukan sebesar round(6 ) + 1 .

Page 50: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

450 Pengolahan Citra : Teori dan Aplikasi

10.3.11 Operator Gradien Kompas

Operator gradien kompas adalah jenis operator yang mencari tepi dengan

menggunakan delapan arah mata angin. Prosesnya adalah melakukan konvolusi

terhadap citra dengan menggunakan 8 cadar. Hasil operasinya berupa nilai

maksimum dari kedelapan konvolusi. Empat contoh operator beserta delapan

cadar masing-masing dapat dilihat pada Gambar 10.34 (Crane, 1997).

Prewitt Kirsch Robinson 3-level

Robinson 5-level

Timur H1

1 1 −11 −2 −11 1 −1

5 −3 −35 0 −35 −3 −3

1 0 −11 0 −11 0 −1

1 0 −12 0 −21 0 −1

Timur Laut H2

1 −1 −11 −2 −11 1 −1

−3 −3 −35 0 −35 5 −3

0 −1 −11 0 −11 1 0

0 −1 −21 0 −12 1 0

Utara H3

−1 −1 −11 −2 11 1 1

−3 −3 −3−3 0 −35 5 5

−1 −1 −10 0 01 1 0

−1 −2 −10 0 01 2 −1

Barat Laut H4

−1 −1 1−1 −2 11 1 1

−3 −3 −3−3 0 5−3 5 5

1 1 −11 −2 −11 1 −1

−2 −1 0−1 0 10 1 2

Barat H5

−1 1 1−1 −2 1−1 1 1

−3 −3 5−3 0 5−3 −3 −3

−1 0 1−1 0 1−1 0 1

−1 0 1−2 0 2−1 0 1

Barat Daya H6

1 1 1−1 −2 1−1 −1 1

−3 5 5−3 0 5−3 −3 −3

0 1 1−1 0 1−1 −1 0

0 1 2−1 0 1−2 −1 0

Selatan H7

1 1 11 −2 1−1 −1 −1

5 5 5−3 0 −3−3 −3 −3

1 1 10 0 0−1 −1 −1

1 2 10 0 0−1 −2 −1

Tenggara H8

1 1 1−1 −2 1−1 −1 1

5 5 −35 0 −3−3 −3 −3

1 1 01 0 −10 −1 −1

2 1 01 0 −10 −1 −2

Gambar 10.34 Operator gradien kompas

Fungsi kompas berikut berguna untuk melakukan pengujian operator

gradien kompas terhadap citra berskala keabuan dengan menggunakan cadar

yang tertera pada Gambar 10.35.

Page 51: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 451

Program : kompas.m

function [G] = kompas(F, jenis)

% KOMPAS Melakukan operasi dengan operator kompas

% Argumen F berupa citra berskala keabuan dan

% jenis berupa tipe operator

% 1 = Prewitt

% 2 = Kirsch

% 3 = Robinson 3-level

% 4 = Robinson 4-level

%

% Hasil: citra G

if nargin < 2

jenis = 1;

end

% Operator kompas

Prewitt1 = [1 1 -1;1 -2 -1;1 1 -1];

Prewitt2 = [1 -1 -1;1 -2 -1;1 1 -1];

Prewitt3 = [-1 -1 -1;1 -2 1;1 1 1];

Prewitt4 = [-1 -1 1;-1 -2 1;1 1 1];

Prewitt5 = [-1 1 1;-1 -2 1;-1 1 1];

Prewitt6 = [1 1 1;-1 -2 1;-1 -1 1];

Prewitt7 = [1 1 1;1 -2 1;-1 -1 -1];

Prewitt8 = [1 1 1;-1 -2 1;-1 -1 1];

Kirsch1 = [5 -3 -3;5 0 -3;5 -3 -3];

Kirsch2 = [-3 -3 -3;5 0 -3; 5 5 -3];

Kirsch3 = [-3 -3 -3;-3 0 -3;5 5 5];

Kirsch4 = [-3 -3 -3;-3 0 5;-3 5 5];

Kirsch5 = [-3 -3 5;-3 0 5;-3 -3 -3];

Kirsch6 = [-3 5 5;-3 0 5;-3 -3 -3];

Kirsch7 = [5 5 5;-3 0 -3;-3 -3 -3];

Kirsch8 = [5 5 -3;5 0 -3;-3 -3 -3];

Robinson3_1 = [1 0 -1;1 0 -1;1 0 -1];

Robinson3_2 = [0 -1 -1;1 0 -1;1 1 0];

Robinson3_3 = [-1 -1 -1;0 0 0;1 1 0];

Robinson3_4 = [1 1 -1;1 -2 -1;1 1 -1];

Robinson3_5 = [-1 0 1;-1 0 1;-1 0 1];

Robinson3_6 = [0 1 1;-1 0 1;-1 -1 0];

Robinson3_7 = [1 1 1;0 0 0;-1 -1 -1];

Robinson3_8 = [1 1 0;1 0 -1;0 -1 -1];

Robinson5_1 = [1 0 -1;2 0 -2;1 0 -1];

Robinson5_2 = [0 -1 -2;1 0 -1;2 1 0];

Robinson5_3 = [-1 -2 -1;0 0 0;1 2 -1];

Robinson5_4 = [-2 -1 0;-1 0 1;0 1 2];

Robinson5_5 = [-1 0 1;-2 0 2;-1 0 1];

Robinson5_6 = [0 1 2;-1 0 1;-2 -1 0];

Robinson5_7 = [1 2 1;0 0 0;-1 -2 -1];

Robinson5_8 = [2 1 0;1 0 -1;0 -1 -2];

Page 52: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

452 Pengolahan Citra : Teori dan Aplikasi

Prewitt(:,:,1) = Prewitt1;

Prewitt(:,:,2) = Prewitt2;

Prewitt(:,:,3) = Prewitt3;

Prewitt(:,:,4) = Prewitt4;

Prewitt(:,:,5) = Prewitt5;

Prewitt(:,:,6) = Prewitt6;

Prewitt(:,:,7) = Prewitt7;

Prewitt(:,:,8) = Prewitt8;

Kirsch(:,:,1) = Kirsch1;

Kirsch(:,:,2) = Kirsch2;

Kirsch(:,:,3) = Kirsch3;

Kirsch(:,:,4) = Kirsch4;

Kirsch(:,:,5) = Kirsch5;

Kirsch(:,:,6) = Kirsch6;

Kirsch(:,:,7) = Kirsch7;

Kirsch(:,:,8) = Kirsch8;

Robinson3(:,:,1) = Robinson3_1;

Robinson3(:,:,2) = Robinson3_2;

Robinson3(:,:,3) = Robinson3_3;

Robinson3(:,:,4) = Robinson3_4;

Robinson3(:,:,5) = Robinson3_5;

Robinson3(:,:,6) = Robinson3_6;

Robinson3(:,:,7) = Robinson3_7;

Robinson3(:,:,8) = Robinson3_8;

Robinson5(:,:,1) = Robinson5_1;

Robinson5(:,:,2) = Robinson5_2;

Robinson5(:,:,3) = Robinson5_3;

Robinson5(:,:,4) = Robinson5_4;

Robinson5(:,:,5) = Robinson5_5;

Robinson5(:,:,6) = Robinson5_6;

Robinson5(:,:,7) = Robinson5_7;

Robinson5(:,:,8) = Robinson5_8;

% Tentukan operator yang dipakai

if jenis == 1

Opr = Prewitt;

elseif jenis == 2

Opr = Kirsch;

elseif jenis == 3

Opr = Robinson3;

elseif jenis == 4

Opr = Robinson5;

else

error('Operator kedua: 1 s/d 4');

end

% Lakukan proses konvolusi

F = double(F);

[m, n] = size(F);

for y=2 : m-1

for x=2 : n-1

% Pelaksanaan konvolusi

for i=1 : 8

Grad(i) = Opr(1,1,i) * F(y+1, x+1) + ...

Opr(1,2,i) * F(y+1, x) + ...

Opr(1,3,i) * F(y+1, x-1) + ...

Page 53: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 453

Opr(2,1,i) * F(y, x+1) + ...

Opr(2,2,i) * F(y, x) + ...

Opr(2,3,i) * F(y, x-1) + ...

Opr(3,1,i) * F(y-1, x+1) + ...

Opr(3,2,i) * F(y-1, x) + ...

Opr(3,3,i) * F(y-1, x-1);

end

maks = max(Grad);

G(y-1, x-1) = maks;

end

end

G = uint8(G);

Akhir Program

Contoh penggunaan fungsi kompas:

>> Img = rgb2gray(imread('C:\Image\mainan.png'));

>> G = kompas(Img, 1);

>> imshow(G)

>>

Angka 1 pada pemanggilan fungsi kompas menyatakan bahwa operator yang

dipakai adalah Prewitt. Angka yang dapat digunakan pada argumen kedua berupa

1, 2 ,3, atau 4, dengan ketentuan sebagai berikut:

1 = Prewitt

2 = Kirsch

3 = Robinson 3-level

4 = Robinson 4-level

Gambar 10.35 memperlihatkan contoh hasil deteksi tepi dengan keempat operator

tersebut.

Page 54: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

454 Pengolahan Citra : Teori dan Aplikasi

(a) Prewitt

(b) Kirsch

(c) Robinson 3-level

(c) Robinson 5-level

Gambar 10.35 Hasil deteksi tepi dengan operator gradien kompas

10.4 Peng-ambangan Dwi-Aras

Segmentasi yang paling sederhana dilaksanakan dengan menggunakan

ambang intensitas. Nilai yang lebih kecil daripada nilai ambang diperlakukan

sebagai area pertama dan yang lebih besar daripada atau sama dengan nilai

ambang dikelompokkan sebagai area yang kedua. Dalam hal ini, salah satu area

tersebut berkedudukan sebagai latarbelakang. Cara seperti itulah yang disebut

peng-ambangan dwi-aras (bi-level thresholding) atau terkadang dinamakan peng-

ambangan intensitas. Secara matematis, hal itu dinyatakan dengan

𝑏(𝑦, 𝑥) = 𝑓(𝑥) = {1, 𝑢𝑛𝑡𝑢𝑘 (𝑦,𝑥) ≥ 𝑇0, 𝑢𝑛𝑡𝑢𝑘 (𝑦,𝑥) < 𝑇

(10.13)

Pada rumus di atas, T menyatakan ambang intensitas. Dalam praktik, nilai 1 atau 0

pada Persamaan 10.13 dapat dipertukarkan.

Peng-ambangan intensitas biasa digunakan untuk memisahkan tulisan

hitam yang berada di atas secarik kertas putih. Namun, perlu diketahui, peng-

ambangan ini mempunyai kelemahan, yaitu:

Page 55: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 455

1) tidak memperlihatkan hubungan spasial antarpiksel;

2) sensitif terhadap pencahayaan yang tidak seragam;

3) hanya berlaku untuk keadaan yang ideal (misalnya, latarbelakang

hitam dan objek berwarna putih).

(a) ipomoea.png (b) Histogram citra

Gambar 10.36 Citra daun dan histogramnya

Salah satu cara untuk menentukan nilai ambang adalah dengan

memperhatikan histogram citra. Sebagai contoh, perhatikan Gambar 10.36.

Berdasarkan histogram, pemisahan dapat dilakukan dengan memilih nilai ambang

pada bagian lembah. Sebagai contoh, nilai di sekitar 100 dapat digunakan sebagai

nilai ambang. Untuk mengujinya, mula-mula siapkan skrip berikut.

Program : ambang.m

function [G] = ambang(F, t)

% AMBANG Menentukan nilai ambang yang digunakan

% untuk melakukan pengambangan

% F = Citra berskala keabuan

% t = nilai ambang

%

% Keluaran: G = Citra biner

[m, n] = size(F);

for i=1 : m

for j=1:n

Page 56: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

456 Pengolahan Citra : Teori dan Aplikasi

if F(i,j) <= t

G(i,j) = 0;

else

G(i,j) = 1;

end

end

end

Akhir Program

Contoh peng-ambangan dengan nilai ambang sebesar 100:

>> Img = imread('C:\Image\ipomoea.png');

>> G = ambang(Img, 100);

>> imshow(1-G)

>>

Penggunaan 1-G dalam imshow ditujukan untuk membalik nilai 1 dan 0. Dengan

ungkapan tersebut, bagian daun akan diberi nilai 1 (putih). Contoh hasilnya dapat

dilihat pada Gambar 10.37.

(a) ipomoea.tif (b) Hasil pengambangan

Gambar 10.37 Hasil pembalikan latarbelakang dan objek

Persoalan utama dalam peng-ambangan intensitas terletak pada penentuan

nilai ambang (T) secara otomatis. Salah satu cara yang dilakukan adalah dengan

menentukan nilai ambang iteratif secara interaktif (Gonzalez & Woods, 2002;

Page 57: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 457

Acharya & Ray, 2005). Algoritma untuk menentukan T secara iteratif adalah

seperti berikut.

ALGORITMA 10.3 – Memperoleh nilai ambang secara iteratif

Masukan:

f (M,N): Citra berskala keabuan berukuran M baris dan N

kolom Keluaran:

nilai ambang T

ambang_adaptif(f):

1. Pilihlah satu nilai untuk menentukan nilai ambang (T To). 2. Bagilah citra menjadi dua bagian dengan menggunakan T

sebagai nilai ambang.

3. Hitunglah nilai rata-rata pada kedua area (1 dan 2).

4. Hitunglah nilai ambang: T 𝜇1+𝜇2

2

5. Ulangi langkah 2 sampai dengan 4 sampai tidak ada perubahan nilai T.

6. RETURN T

Peng-ambangan iteratif dikenal juga dengan sebutan peng-

ambangan optimal.

Algoritma peng-ambangan iteratif dituangkan dalam bentuk program seperti

berikut.

Program : titeratif.m

function [t1] = titeratif(F)

% TITERATIF Menentukan nilai ambang yang digunakan

% untuk melakukan pengambangan

% F = Citra berskala keabuan

%

Page 58: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

458 Pengolahan Citra : Teori dan Aplikasi

% Keluaran: G = Citra biner

[m, n] = size(F);

F = double(F);

t0 = 127;

while true

rata_kiri = 0;

rata_kanan = 0;

jum_kiri = 0;

jum_kanan = 0;

for i=1 : m

for j=1 : n

if F(i, j) <= 127

rata_kiri = rata_kiri + F(i,j);

jum_kiri = jum_kiri + 1;

else

rata_kanan = rata_kanan + F(i,j);

jum_kanan = jum_kanan + 1;

end

end

end

rata_kiri = rata_kiri / jum_kiri;

rata_kanan = rata_kanan / jum_kanan;

t1 = (rata_kiri + rata_kanan) / 2.0;

if (t0 - t1) < 1

break; % Keluar dari while

end

t0 = t1;

end

t1 = floor(t1);

Akhir Program

Pengujian fungsi titeratif dapat dilihat di bawah ini.

>> Img = imread('C:\Image\ipomoea.png');

>> t = titeratif(Img)

t = 130

>> G = ambang(Img, t);

>> imshow(1-G)

>>

Page 59: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 459

Hasil di atas menyatakan bahwa nilai ambang yang dihasilkan oleh fungsi titeratif

adalah 130. Penggunaan 1-G dalam imshow adalah untuk membalik nilai 1 dan 0.

Nilai 1 menjadi 0 dan nilai 0 menjadi 1. Dengan ungkapan tersebut, bagian daun

akan diberi nilai 1 (putih). Contoh hasilnya dapat dilihat pada Gambar 10.38.

(a) ipomoea.tif (b) Hasil peng-ambangan

Gambar 10.38 Contoh hasil peng-ambangan secara iteratif

10.5 Peng-ambangan Global Vs. Lokal

Terkait dengan nilai ambang yang digunakan pada segmentasi citra,

terdapat istilah peng-ambangan global dan peng-ambangan lokal. Pengertiannya

sebagai berikut.

Apabila nilai ambang t bergantung hanya pada satu nilai aras keabuan f(y,

x), peng-ambangan disebut sebagai global. Dalam hal ini, semua piksel

dalam citra akan ditentukan oleh satu nilai ambang t.

Peng-ambangan disebut lokal kalau nilai ambang t bergantung pada f(y, x)

dan g(y, x) dengan g(y,x) menyatakan properti citra lokal pada titik (y, x).

Dalam hal ini, properti citra lokal dapat diperoleh melalui statisti

(misalnya rerata tetangga di sekitar titik (y, x) ). Dengan kata lain, nilai

ambang untuk setiap piksel ditentukan oleh nilai piksel tetangga. Dengan

demikian, nilai ambang untuk piksel masing-masing belum tentu sama.

Page 60: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

460 Pengolahan Citra : Teori dan Aplikasi

10.6 Peng-ambangan Aras-jamak

Pada peng-ambangan beraras-jamak (multilevel thresholding), citra dibagi

menjadi beberapa bagian dengan menggunakan beberapa nilai ambang, Cara

seperti itu dilakukan kalau pada histogram terdapat puncak-puncak yang

membedakan antara satu objek terhadap yang lain. Sebagai contoh, perhatikan

Gambar 10.39(a) dan kemudian lihatlah pada histogram yang terdapat pada

Gambar 10.39(b).

(a) benda.png (b) Histogram

T1 T2

Objek

lingkaran

Objek kotak

Gambar 10.39 Contoh citra dengan beberapa puncak dan

lembah yang terpisah

Contoh berikut menunjukkan algoritma yang digunakan pada peng-ambangan

aras-jamak yang menggunakan dua buah nilai ambang.

ALGORITMA 10.3 – Segmentasi dengan peng-ambangan aras-

jamak

Masukan:

f (MxN): Citra berskala keabuan (berukuran MxN)

Keluaran:

g (M, N): Citra biner

ambang_aras_jamak(ukuran, ):

FOR y 1 TO ukuran -1

FOR x 1 TO ukuran -1

nx x – cx

ny y – cy

Page 61: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 461

nilai 1

𝜎2 [𝑛𝑥2+ 𝑛𝑦2

𝜎2 −2] 𝑒−(𝑛𝑥2+ 𝑛𝑦2 )

2𝜎2

h(y+1, x+1) nilai

jum jum + nilai END-FOR

END-FOR 7. RETURN g

Implementasi berdasarkan algoritma di atas dapat dilihat di bawah ini.

Program : arasjamak.m

function [G] = arasjamak(F, t1, t2)

% Pengambanan dengan dua nilai ambang

% F = Citra berskala keabuan

% t1 = nilai ambang bawah

% t2 = nilai ambang atas

%

% Keluaran: G = Citra biner

[m, n] = size(F);

for i=1 : m

for j=1:n

if F(i,j) <= t1 || F(i,j) >= t2

G(i,j) = 0;

else

G(i,j) = 1;

end

end

end

Akhir Program

Contoh penggunaan fungsi arasjamak:

>> Img = imread('C:\Image\benda.png');

>> G = arasjamak(Img, 50, 100); imshow(G);

>>

Page 62: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

462 Pengolahan Citra : Teori dan Aplikasi

Hasilnya dapat dilihat pada Gambar 10.40(b). beberapa contoh penggunaan nilai

ambang yang lain dapat dilihat pada Gambar 10.40(c) hingga 10.40(f).

(a) benda.png (b) Nilai ambang t1=50 dan t2=100

(c) Nilai ambang t1=175 dan t2=200 (d) Nilai ambang t1=220 dan t2=230

(e) Nilai ambang t1=235 dan t2=250 (f) Nilai ambang t1=220 dan t2=250

Gambar 10.40 Hasil penerapan nilai ambang jamak

Contoh lain dapat dilihat di bawah ini:

>> Img = imread('C:\Image\ipomoea.png');

>> G = arasjamak(Img, 50, 100); imshow(G);

>>

Page 63: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 463

Hasilnya dapat dilihat pada Gambar 10.41(b). Terlihat bahwa dengan cara seperti

itu, bayangan daun dapat dihilangkan.

(a) ipomoea.png (b) Pengambangan t1=50, t2=100

Gambar 10.41 Contoh peng-ambangan aras jamak pada ipomoea.png

10.7 Peng-ambangan dengan Metode Otsu

Metode Otsu dipublikasikan oleh Nobuyuki Otsu pada tahun 1979. Metode

ini menentukan nilai ambang dengan cara membedakan dua kelompok, yaitu

objek dan latarbelakang, yang memiliki bagian yang saling bertumpukan,

berdasarkan histogram (lihat Gambar 10.42).

Nilai ambang (t)

Kelas 1 Kelas 2

Gambar 10.42 Penentuan nilai ambang

untuk memperoleh hasil yang optimal

Prinsip metode Otsu dijelaskan berikut ini. Pertama-tama, probabilitas nilai

intensitas i dalam histogram dihitung melalui

Page 64: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

464 Pengolahan Citra : Teori dan Aplikasi

𝑝(𝑖) =𝑛𝑖

𝑁, 𝑝(𝑖) ≥ 0, ∑ 𝑝(𝑖) = 1256

1 (10.14)

dengan ni menyatakan jumlah piksel berintensitas i dan N menyatakan jumlah

semua piksel dalam citra. Jika histogram dibagi menjadi dua kelas (objek dan

latarbelakang), pembobotan pada kedua kelas dinyatakan sebagai berikut:

𝑤1(𝑡) = ∑ 𝑝(𝑖)𝑡𝑖=1 (10.15)

𝑤2(𝑡) = ∑ 𝑝(𝑖)𝐿𝑖=𝑡+1 = 1 −𝑤1(𝑡) (10.16)

Dalam hal ini, L menyatakan jumlah aras keabuan. Rerata kedua kelas dihitung

melalui:

𝑚1(𝑡) = ∑ 𝑖. 𝑝(𝑖)𝑡𝑖=1 /𝑊1(𝑡) (10.17)

𝑚2(𝑡) = ∑ 𝑖. 𝑝(𝑖)𝑡𝑖=1 /𝑊2(𝑡) (10.18)

Varians kedua kelas dinyatakan dengan rumus:

𝜎12(𝑡) = ∑ (1 − 𝑚1)

2.𝑝(𝑖)

𝑊1(𝑡)

𝑡𝑖=1 (10.19)

𝜎22(𝑡) = ∑ (1 − 𝑚2)

2.𝑝(𝑖)

𝑊2(𝑡)

𝐿𝑖=𝑡+1 (10.20)

Varians total dapat dinyatakan dengan

𝜎2(𝑡) = 𝜎𝑊2(𝑡) + 𝜎𝐵

2(𝑡) (10.21)

Dalam hal ini, 𝜎𝑊2 dinamakan sebagai within-class variance (WCV) dan 𝜎𝐵

2

disebut sebagai between-class variance (BCV). WCV dapat dinyatakan dengan

𝜎𝑊2(𝑡) = 𝑊1(𝑡). 𝜎1(𝑡)

2 + 𝑊2(𝑡). 𝜎2(𝑡)2 (10.22)

Rumus di atas menunjukkan bahwa WCV adalah jumlah varians kelas secara

individual yang telah diboboti dengan probabilitas kelas masing-masing. Adapun

BCV dinyatakan dengan

Page 65: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 465

𝜎𝐵2(𝑡) = 𝑊1 . [𝑚1(𝑡) −𝑚𝑇]

2+ 𝑊2 . [𝑚2(𝑡) − 𝑚𝑇]2 (10.23)

Dalam hal ini, mT adalah rerata total (𝑚𝑇 = ∑ 𝑖. 𝑝(𝑖)𝑁𝑖=1 ).

Nilai ambang optimum dapat diperoleh dengan dua cara. Cara pertama

dilaksanakan dengan meminimumkan WCV. Cara kedua dilaksanakan dengan

memaksimumkan BCV. Namun, berdasarkan kedua cara tersebut, cara yang kedua

lebih menghemat komputasi.

Implementasi berikut didasarkan pada Persamaan 10.23. Skrip ditulis tanpa

memperhatikan optimasi komputasi. Pendekatan lain, yang memperhatikan

kecepatan komputasi, dapat dilihat pada Demirkaya, dkk. (2009).

Program : otsu.m

function [ambang] = otsu(F)

% OTSU Memperoleh nilai ambang menggunakan metode Otsu

% F = Citra berskala keabuan

[m, n] = size(F);

jum_piksel = m * n;

% Kosongkan histogram

for i=1 : 256

h(i) = 0;

end

% Hitung histogram

for i=1 : m

for j=1 : n

intensitas = F(i,j);

h(intensitas+1) = h(intensitas+1) + 1;

end

end

% Hitung p(i)

for i=1 : 256

p(i) = h(i) / jum_piksel;

end

% Hitung rerata total

mT = 0;

for i=1 : 256

mT = mT + i * p(i);

end

Page 66: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

466 Pengolahan Citra : Teori dan Aplikasi

% Hitung t optimal

ambang = 0;

varMaks = 0;

for t=0 : 255

% Hitung w1(t)

w1 = 0.0;

for i=1 : t

w1 = w1 + p(i+1);

end

% Hitung w2(t)

w2 = 0.0;

for i=t+1 : 255

w2 = w2 + p(i+1);

end

% Hitung m1

m1 = 0;

for i=0 : t

if w1 > 0

m1 = m1 + i * p(i+1)/w1;

end

end

% Hitung m2

m2 = 0;

for i=t+1 : 255

if w2 > 0

m2 = m2 + i * p(i+1)/w2;

end

end

% Hitung BCV

bcv = w1 * (m1 - mT)^2 + w2 * (m2 - mT)^2;

if bcv > varMaks

varMaks = bcv;

ambang = t;

end

end

Akhir Program

Contoh:

>> Img = imread('C:\Image\ipomoea.png');

>> t = otsu(Img)

t = 130

>>

Page 67: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 467

Hasil dengan menggunakan pendekatan Otsu tidak berbeda dengan hasil yang

menggunakan peng-ambangan iteratif.

Octave menyediakan fungsi bawaan bernama graythresh, yang

diimplementasikan dengan menggunakan metode Otsu.

10.8 Peng-ambangan Adaptif

Peng-ambangan adaptif (adaptive thresholding) merupakan peng-ambangan

yang menggunakan nilai ambang lokal, yang dihitung secara adaptif berdasarkan

statistika piksel-piksel tetangga. Hal ini didasarkan kenyataan bahwa bagian-

bagian kecil dalam citra mempunyai iluminasi yang sama, sehingga lebih tepat

kalau nilai ambang dihitung berdasarkan bagian-bagian kecil dalam citra dan

bukan berdasarkan seluruh piksel dalam citra.

Ada tiga pendekatan yang biasa digunakan untuk mewujudkan peng-

ambangan ini. Pendekatan pertama menggunakan statistika rerata terhadap

intensitas lokal. Terkadang, nilai yang konstan ikut dilibatkan. Rumusnya sebagai

berikut.

𝑇 =∑ 𝑓(𝑖,𝑗)(𝑦,𝑥)∈𝑊

𝑁𝑤− 𝐶 (10.24)

Dalam hal ini, W menyatakan jendela pada citra, NW menyatakan jumlah piksel

dalam jendela, dan C menyatakan suatu konstanta.

Contoh fungsi yang menggunakan pendekatan rerata dapat dilihat berikut

ini.

Page 68: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

468 Pengolahan Citra : Teori dan Aplikasi

Program : adapmean.m

function [G] = adapmean(F, w, c)

% ADAPMEAN Melakukan pengambangan adaptif dengan menggunakan

% mean.

% F = Citra berskala keabuan

% w = ukura jendela

% c = nilai konstan

%

% Hasil: citra G

if nargin == 0

disp('Penggunaan adapmean(Citra, ukuran, konstanta');

return;

end

if nargin == 1

w = 2;

c = 0;

end

if nargin == 2

c = 0;

end

% Lakukan pemrosesan citra

[m, n] = size(F);

delta = floor(w/2);

if c < 0

G = zeros(m, n); % Diasumsikan berlatarbelakang 0

else

G = ones(m, n); % Diasumsikan berlatarbelakang 1

end

F=double(F);

for y=1+delta : m-delta

for x=1+delta : n-delta

rerata = 0.0;

jum = w * w;

for p=1 : w

for q=1 : w

rerata = rerata + F(y-round(w/2)+p, ...

x-round(w/2)+q);

end

end

rerata = floor(rerata / jum) - c;

if F(y,x) >= rerata

G(y, x) = 1;

else

Page 69: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 469

G(y, x) = 0;

end

end

end

Akhir Program

Contoh penggunaan fungsi adapmeaan:

>> Img = imread('C:\Image\ipomoea.png');

>> G = adapmean(Img, 3, -4); imshow(G)

>>

Berbagai contoh pengaturan argumen kedua (w) dan argumen ketiga (c)

ditunjukkan pada Gambar 10.43.

Page 70: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

470 Pengolahan Citra : Teori dan Aplikasi

(c) w = 2, c = -2 (d) w = 3, c = -4

(a) Citra ipomoea.tif (b) w = 2, c = 0

(f) w = 7, c = -5 (e) w = 10, c = 5

Gambar 10.43 Efek peng-ambangan adaptif dengan

menggunakan nilai mean dengan berbagai ukuran jendela w dan

nilai ambang c

Pendekatan peng-ambangan adaptif yang kedua menggunakan statistika

median. Secara matematis, pendekatan ini dapat ditulis menjadi

𝑇 = 𝑚𝑒𝑑𝑖𝑎𝑛(𝑓(𝑦, 𝑥),(𝑦, 𝑥) ∈ 𝑊) − 𝐶 (10.25)

Page 71: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 471

Dalam hal ini, W menyatakan jendela pada citra, NW menyatakan jumlah citra

dalam jendela, dan C menyatakan suatu nilai yang konstan. Implementasinya

dapat dilihat pada kode berikut.

Program : adapmedian.m

function [G] = adapmedian(F, w, c)

% ADAPMEDIAN Melakukan pengambangan adaptif dengan menggunakan

% median.

% F = Citra berskala keabuan

% w = ukura jendela

% c = nilai konstan

%

% Hasil: citra G

if nargin == 0

disp('Penggunaan adapmean(Citra, ukuran, konstanta');

return;

end

if nargin == 1

w = 2;

c = 0;

end

if nargin == 2

c = 0;

end

% Lakukan pemrosesan citra

[m, n] = size(F);

delta = floor(w/2);

if c < 0

G = zeros(m, n); % Diasumsikan berlatarbelakang 0

else

G = ones(m, n); % Diasumsikan berlatarbelakang 1

end

Nilai = []; % Kosongkan array untuk median

for y=1+delta : m-delta

for x=1+delta : n-delta

rerata = 0.0;

jum = w * w;

pencacah = 0;

for p=1 : w

for q=1 : w

Page 72: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

472 Pengolahan Citra : Teori dan Aplikasi

pencacah = pencacah + 1;

Nilai(pencacah) = F(y-round(w/2)+p, ...

x-round(w/2)+q);

end

end

% Urutkan hasil

Urut = sort(Nilai);

median = Urut(floor(pencacah/2)) - c;

if F(y,x) >= median

G(y, x) = 1;

else

G(y, x) = 0;

end

end

end

Akhir Program

Contoh penggunaan fungsi adapmedian:

>> Img = imread('C:\Image\ipomoea.png');

>> G = adapmedian(Img, 10, 5); imshow(G)

>>

Efek berbagai pengaturan terhadap w dan c dapat dilihat pada Gambar 10.44.

Page 73: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 473

(c) w = 13, c = 2 (d) w = 3, c = -4

(a) Citra ipomoea.tif (b) w = 4, c = 0

(f) w = 7, c = -5 (e) w = 10, c = 5

Gambar 10.44 Efek peng-ambangan adaptif dengan

menggunakan nilai median dengan berbagai ukuran jendela dan

konstanta yang berbeda

Pendekatan peng-ambangan adaptif yang ketiga menggunakan statistika

maksimum dan minimum, yang dinyatakan dengan rumus

𝑇 =𝑚𝑎𝑥(𝑓(𝑦,𝑥),(𝑦,𝑥)∈𝑊) + 𝑚𝑖𝑛(𝑓(𝑦,𝑥),(𝑦,𝑥)∈𝑊)

2 (10.26)

Page 74: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

474 Pengolahan Citra : Teori dan Aplikasi

Dalam hal ini, W menyatakan jendela pada citra, NW menyatakan jumlah piksel

dalam jendela. Implementasinya sebagai berikut.

Program : adapmaxmin.m

function [G] = adapmaxmin(F, w, c)

% ADAPMAXMIN Melakukan pengambangan adaptif dengan menggunakan

% maximum dan minumum.

% F = Citra berskala keabuan

% w = ukura jendela

% c = nilai konstan

%

% Hasil: citra G

if nargin == 0

disp('Penggunaan adapmean(Citra, ukuran, konstanta');

return;

end

if nargin == 1

w = 2;

c = 0;

end

if nargin == 2

c = 0;

end

% Lakukan pemrosesan citra

[m, n] = size(F);

delta = floor(w/2);

if c < 0

G = zeros(m, n); % Diasumsikan berlatarbelakang 0

else

G = ones(m, n); % Diasumsikan berlatarbelakang 1

end

for y=1+delta : m-delta

for x=1+delta : n-delta

rerata = 0.0;

terbesar = 0.0;

terkecil = 0.0;

jum = w * w;

pencacah = 0;

for p=1 : w

for q=1 : w

pencacah = pencacah + 1;

Page 75: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 475

nilai= F(y-round(w/2)+p, ...

x-round(w/2)+q);

if nilai > terbesar

terbesar = nilai;

end

if nilai < terkecil

terkecil = nilai;

end

end

end

rerata = floor((terbesar - terkecil) / 2) - c;

if F(y,x) >= rerata

G(y, x) = 1;

else

G(y, x) = 0;

end

end

end

Akhir Program

Contoh penggunaan fungsi adapmaxmin:

>> Img = imread('C:\Image\ipomoea.png');

>> G = adapmaxmin(Img, 10, -30); imshow(G)

>>

Gambar 10.45 memperlihatkan berbagai efek nilai w (ukuran jendela) dan c

(konstanta pengurang).

Page 76: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

476 Pengolahan Citra : Teori dan Aplikasi

(c) w = 4, c = -25 (d) w = 4, c = -25

(a) Citra ipomoea.tif (b) w = 2, c = -50

(f) w = 10, c = -10 (e) w = 10, c = -30

Gambar 10.45 Efek peng-ambangan adaptif dengan

menggunakan nilai maksimum dan minimum dengan berbagai ukuran

jendela dan konstanta yang berbeda

Penggunaan peng-ambangan adaptif pada citra berisi teks dapat dilihat di

bawah ini.

>> Img = imread('C:\Image\maryamah.png');

>> G = adapmean(Img, 13, 15); imshow(G);

Page 77: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 477

>>

Seperti terlihat pada Gambar 10.46(a), pencahayaan pada citra berisi teks tidak

merata. Akibatnya, terdapat teks yang mengandung latarbelakang lebih gelap

daripada bagian yang lain. Beberapa contoh penggunaan parameter berbeda dan

hasil masing-masing dapat dilihat pada Gambar 10.46(b), 10.46(c), dan 10.46(d).

Sebagai perbandingan, apabila peng-ambangan aras-jamak digunakan, diperoleh

hasil seperti terlihat pada Gambar 10.47.

(b) w = 13, c = 15 (a) Citra maryamah.png

(c) w = 3, c = 5 (d) w = 7, c = 10

Gambar 10.46 Contoh penerapan peng-ambangan adaptif

menggunakan rerata pada citra teks

dengan latar belakang tidak merata

Page 78: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

478 Pengolahan Citra : Teori dan Aplikasi

(b) Pengambangan aras-jamak

dengan t1=140, t2=220

(a) Citra maryamah.png

(a) Pengambangan aras-jamak

dengan t1=140, t2=200

Gambar 10.47 Hasil peng-ambangan aras-jamak

terhadap citra maryamah.png

10.9 Peng-ambangan Berdasarkan Entropi

Entropi adalah istilah yang diperkenalkan oleh Shannon, yang menyatakan

sebuah ukuran informasi yang terkandung di dalam citra. Entropi telah digunakan

dalam peng-ambangan untuk memperoleh nilai ambang yang optimal. Kapur,

Sahoo, dan Wang memperkenalkan penggunaan entropi dalam peng-ambangan di

tahun 1985 (Acharya dan Ray, 2005). Namun, sesungguhnya Kapur dkk.

mengemukan metode yang diusulkan tersebut sebagai koreksi terhadap artikel

yang ditulis oleh peneliti bernama Pun, yang dipublikasikan pada tahun 1980

(Demirkaya, 2009).

Metode peng-ambangan berbasis entropi yang dikemukakan oleh Kapur dkk.

dapat dijelaskan sebagai berikut. Misalkan, f1, f2, …, fn adalah frekuensi pada citra

beraras keabuan. Maka,

𝑝(𝑖) =𝑓𝑖

𝑁, ∑ 𝑓𝑖 = 1𝐿−1

𝑖=0 𝑖 = 0,1,2, … , 𝐿 − 1 (10.27)

Dalam hal ini, N adalah jumlah piksel citra, dan L menyatakan jumlah aras

keabuan. Selanjutnya, apabila t adalah nilai ambang, entropi latarbelakang adalah:

Page 79: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 479

𝐻𝑏(𝑡) = −∑ 𝑝(𝑖)

𝑃𝑏(𝑡). ln

𝑝(𝑖)

𝑃𝑏(𝑡)

𝑡𝑖=0 (10.28)

dan entropi objek adalah:

𝐻𝑜(𝑡) = −∑ 𝑝(𝑖)

𝑃𝑜(𝑡). ln

𝑝(𝑖)

𝑃𝑜(𝑡)𝐿−1𝑖=𝑡+1 (10.29)

Dalam hal ini,

𝑃𝑏(𝑡) = ∑ 𝑝(𝑖)𝑡𝑖=0 , 𝑃𝑜(𝑡) = ∑ 𝑝(𝑖)𝐿−1

𝑖=𝑡+1

(10.30)

Jumlah Hb dan Ho dinyatakan dengan (t). Jadi,

(t) = −∑ 𝑝(𝑖)

𝑃𝑏(𝑡)𝑙𝑛

𝑝(𝑖)

𝑃𝑏 (𝑡)𝑡𝑖=0 − ∑ 𝑝(𝑖)

𝑃𝑜(𝑡)𝑙𝑛

𝑝(𝑖)

𝑃𝑜(𝑡)𝐿−1𝑖=𝑡+1 (10.31)

Optimalisasi dilakukan dengan memaksimalkan fungsi (t).

Implementasi peng-ambangan berbasis entropi Kapur dapat dilihat berikut

ini.

Program : kapur.m

function [ambang] = tentropi(F)

% TENTROPI Memperoleh nilai ambang menggunakan

% metode entropi Kapur

% berdasarkan rumus pada Acharya dan Ray (2005)

% F = Citra berskala keabuan

F = double(F);

[m, n] = size(F);

jum_piksel = m * n;

% Kosongkan histogram

for i=1 : 256

h(i) = 0.0;

end

Page 80: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

480 Pengolahan Citra : Teori dan Aplikasi

% Hitung histogram

for i=1 : m

for j=1 : n

intensitas = F(i,j);

h(intensitas+1) = h(intensitas+1) + 1;

end

end

% Hitung p(i)

for i=1 : 256

p(i) = h(i) / jum_piksel;

end

% Hitung t optimal

ambang = 0;

varMaks = 0;

for t=0 : 255

% Hitung Pb(t)

pbt = 0.0;

for i=0 : t

pbt = pbt + p(i+1);

end

% Hitung Po(t)

pot = 0;

for i=t+1 : 255

pot = pot + p(i+1);

end

% Hitung Hb(t)

hbt = 0;

for i = 0 : t

if p(i+1) ~= 0

hbt = hbt + p(i+1) / pbt * log(p(i+1) / pbt);

end

end

hbt = -hbt;

% Hitung Hb(t)

hot = 0;

for i = t+1 : 255

if p(i+1) ~= 0

hot = hot + p(i+1) / pot * log(p(i+1) / pot);

end

end

hot = -hot;

% Hitung w(t)

wt = hot + hbt;

if wt > varMaks

varMaks = wt;

ambang = t;

end

end

Page 81: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 481

Akhir Program

Contoh penggunaan fungsi kapur:

>> Img = imread('C:\Image\ipomoea.png');

>> t = kapur(Img); G = ambang(Img, t); imshow(G)

>>

Gambar 10.48(c) menunjukkan hasil perintah di atas. Pada gambar tersebut,

terlihat perbedaan empat citra setelah mengalami peng-ambangan dengan Otsu

dan Kapur.

Page 82: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

482 Pengolahan Citra : Teori dan Aplikasi

(a) benda.png (b) Otsu (c) Entropy (Kapur)

(d) benda.png (e) Otsu (f) Entropy (Kapur)

(g) sidikjari.png (h) Otsu (i) Entropy (Kapur)

(j) gedung.tif (k) Otsu (l) Entropy (Kapur)

Gambar 10.48 Perbandingan peng-ambangan dengan Otsu dan Kapur

Peng-ambangan berbasis entropi yang lain dikemukakan oleh Renyi

(Acharya dan Ray, 2005). Rumus yang digunakan seperti berikut:

𝐻𝑏(𝑡) =1

1−𝜌𝑙𝑛 [∑ (

𝑝(𝑖)

𝑃𝑏(𝑡))𝜌

𝑡𝑖=0 ] (10.32)

Page 83: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 483

𝐻𝑜(𝑡) =1

1−𝜌𝑙𝑛 [∑ (

𝑝(𝑖)

1−𝑃𝑜(𝑡))𝜌

𝐿−1𝑖=𝑡+1 ] (10.33)

Notasi yang digunakan pada Persamaan 10.32 dan 10.33 sama seperti rumus yang

digunakan pada entropi Kapur. Parameter berguna untuk memperoleh nilai

ambang terbaik.

Implementasi peng-ambangan yang didasarkan Renyi dapat dilihat di

bawah ini.

Program : renyi.m

function [ambang] = renyi(F, rho)

% RENYI Memperoleh nilai ambang menggunakan metode entropi Renyi

% berdasarkan rumus pada Acharya dan Ray (2005)

% F = Citra berskala keabuan

F = double(F);

[m, n] = size(F);

jum_piksel = m * n;

% Kosongkan histogram

for i=1 : 256

h(i) = 0.0;

end

% Hitung histogram

for i=1 : m

for j=1 : n

intensitas = F(i,j);

h(intensitas+1) = h(intensitas+1) + 1;

end

end

% Hitung p(i)

for i=1 : 256

p(i) = h(i) / jum_piksel;

end

% Hitung t optimal

ambang = 0;

varMaks = 0;

for t=0 : 255

% Hitung Pb(t)

pbt = 0.0;

for i=0 : t

pbt = pbt + p(i+1);

end

% Hitung Hb(t)

Page 84: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

484 Pengolahan Citra : Teori dan Aplikasi

hbt = 0;

for i = 0 : t

if pbt ~= 0

hbt = hbt + (p(i+1) / pbt) ^ rho;

end

end

if hbt == 0

hbt = 0;

else

hbt = 1 / (1 - rho) * log(hbt);

end

% Hitung Ho(t)

hot = 0;

for i = t+1 : 255

hot = hot + (p(i+1) / 1-pbt) ^ rho;

end

if hot == 0

hot = 0;

else

hot = 1 / (1 - rho) * log(hot);

end

% Hitung w(t)

wt = hot + hbt;

if wt > varMaks

varMaks = wt;

ambang = t;

end

end

Akhir Program

Contoh penggunaan fungsi renyi:

>> Img = imread('C:\Image\ipomoea.png');

>> t = renyi(Img, 0.05); G = ambang(Img, t);

>> imshow(G)

>>

Contoh hasil penerapan berbagai parameter ditunjukkan pada Gambar 10.49.

Page 85: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 485

(c) = 0,5 (d) = 0,6

(a) Citra ipomoea.tif (b) = 0,05

Gambar 10.49 Peng-ambangan dengan entropi Renyi

10.10 Segmentasi Warna

Segmentasi warna dapat dilakukan pada ruang warna HLS. Kemudian,

dengan berpedoman pada susunan warna sesuai dengan Gambar 9.12, dilakukan

pengubahan warna Hue yang berdekatan dengan warna yang menjadi pusat dalam

fungsi keanggotaan fuzzy. Sebagai contoh, warna hijau dengan H = 80 akan

diubah menjadi 85 dan warna kuning dengan H = 40 diubah menjadi 45. Adapun

nilai pada komponen L dan S disederhanakan menjadi tiga nilai, yaitu 0, 128, dan

255. Warna yang mungkin timbul ada dua belas buah, yaitu merah, jingga, kuning,

hijau, cyan, biru, ungu, magenta, merah muda, hitam, putih, dan abu-abu.

Selanjutnya, warna HLS diubah kembali ke RGB. Implementasinya seperti

berikut.

Page 86: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

486 Pengolahan Citra : Teori dan Aplikasi

Program : segwarna.m

function [RGB] = segwarna(nama_file)

% SEGWARNA Digunakan untuk melakukan segmentasi citra

% berdasarkan warna

% F = citra berwarna

% Keluaran:

% G = citra berwarna yang telah disegmentasi

Img = imread(nama_file);

[tinggi, lebar, dim] = size(Img);

if dim < 3

error('Masukan harus berupa citra berwarna');

end

% Konversi ke HVS

[H,S,L] = RGBkeHSL(Img(:,:,1),Img(:,:,2),Img(:,:,3));

for y=1: tinggi

for x=1: lebar

h = H(y,x);

% Ubah warna

if h < 11

h = 0;

elseif h < 32

h = 21;

elseif h < 54

h = 43;

elseif h < 116

h = 85;

elseif h < 141

h = 128;

elseif h < 185

h = 170;

elseif h < 202

h = 191;

elseif h < 223

h = 213;

elseif h < 244

h = 234;

else

h = 0;

end

% Ubah komponen H

H(y,x) = h;

% Ubah komponen S

if S(y,x) >= 200

S(y,x) = 255;

elseif S(y,x) <= 20

S(y,x) = 0;

Page 87: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 487

else

S(y,x) = 128;

end

% Ubah komponen L

if L(y,x) >= 200

L(y,x) = 255;

elseif L(y,x) <= 20

L(y,x) = 0;

else

L(y,x) = 128;

end

end

end

[R, G, B] = HSLkeRGB(H, S, L);

RGB(:,:,1) = R;

RGB(:,:,2) = G;

RGB(:,:,3) = B;

return

Akhir Program

Contoh penggunaan fungsi segwarna:

>> G = segwarna('C:\Image\bangunan.png'); imshow(G)

>>

Hasilnya dapat dilihat pada Gambar 10.50. Dua contoh lain hasil pemrosesan

dengan segwarna dapat dilihat pada Gambar 10.51.

Page 88: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

488 Pengolahan Citra : Teori dan Aplikasi

Gambar 10.50 Hasil segmentasi warna terhadap citra bangunan.png

Page 89: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 489

(a) Citra lapangan.png (b) Hasil segmentasi lapangan.png

(c) Citra mainan.png (d) Hasil segmentasi mainan.png

(e) Citra inns.png (f) Hasil segmentasi inns.png

Gambar 10.51 Contoh lain hasil segmentasi warna dengan segwarna

Page 90: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

490 Pengolahan Citra : Teori dan Aplikasi

Contoh aplikasi segmentasi warna dengan menggunakan segwarna dapat

dilihat pada skrip segdaun.m. Suatu daun dipotret dengan latarbelakang putih

(Gambar 10.52(a)). Hasilnya, latarbelakang tidak putih diakibatkan pencahayaan

yang tidak baik. Selanjutnya, citra disegmentasi dengan fungsi segwarna.

Hasilnya ditunjukkan pada Gambar 10.52(b). Terlihat bahwa latarbelakang ada

yang berwarna hitam, abu-abu, dan putih. Nah, selanjutnya dengan membuat

warna abu-abu dan hitam menjadi putih maka bagian daun diperoleh (Gambar

10.52(c)).

Program : segdaun.m

% SEGDAUN Contoh eksperimen untuk memisahkan daun

% yang dipotret dengan latarbelakang putih

% tetapi pencahayaan tidak sempurna

close all;

berkas = 'C:\Image\ficus.png';

G = imread(berkas);

figure(1); imshow(G)

G = segwarna(berkas);

figure(2); imshow(G)

H = G;

[m, n, dim] = size(H);

for i=1: m

for j=1:n

% Buang warna abu-abu

if H(i,j,1) == 128 && H(i,j,2) == 128 && H(i,j,3) == 128

H(i,j,1) = 255;

H(i,j,2) = 255;

H(i,j,3) = 255;

end

% Buang warna hitam

if H(i,j,1) == 0 && H(i,j,2) == 0 && H(i,j,3) == 0

H(i,j,1) = 255;

H(i,j,2) = 255;

H(i,j,3) = 255;

end

end

end

Page 91: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 491

figure(3); imshow(H)

clear G H;

Akhir Program

Apabila skrip di atas dijalankan akan muncul tiga jendela. Jendela pertama berisi

citra asli. Jendela kedua berisi hasil pemrosesan dengan segwarna. Jendela ketiga

berisi hasil setelah warna abu-abu dan hitam diubah menjadi putih.

(b) Hasil segwarna (c) Warna abu-abu dan

hitam diubah menjadi putih

(a) Citra ficus.png

Gambar 10.52 Segmentasi daun

Segmentasi juga dapat dilakukan melalui perantaraan citra biner. Contoh

ditunjukkan pada skrip segdaun2.m.

Program : segdaun2.m

% SEGDAUN2 Contoh segmentasi daun melalui citra biner

RGB = imread('C:\Image\ficus.png');

[m,n,dim] = size(RGB);

% Konversi ke citra berskala keabuan

for baris=1 : m

for kolom=1 : n

r = RGB(baris,kolom,1);

Page 92: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

492 Pengolahan Citra : Teori dan Aplikasi

g = RGB(baris,kolom,2);

b = RGB(baris,kolom,3);

kelabu = r * 0.2989 + g * 0.5870 + b * 0.1140;

A(baris,kolom) = kelabu;

end

end

figure(1); imshow(A);

A = double(A);

% Lakukan penghalusan dengan rerata

for baris=2 : m-1

for kolom=2 : n-1

jum = A(baris-1, kolom-1)+ ...

A(baris-1, kolom) + ...

A(baris-1, kolom-1) + ...

A(baris, kolom-1) + ...

A(baris, kolom) + ...

A(baris, kolom+1) + ...

A(baris+1, kolom-1) + ...

A(baris+1, kolom) + ...

A(baris+1, kolom+1);

B(baris, kolom) = jum/9;

end

end

B = uint8(B);

% Gunakan pengambangan otsu

t = otsu(B);

t = t + 13; % Koreksi ambang. Sesuaikan dengan kebutuhan

C = ambang(B, t);

% Lakukan operasi morfologi opening

H = ones(3);

D = opening(C, H);

figure(2); imshow(C);

% Atur bagian tepi berwarna putih

% sebagai kompnesasi bagian

% yang tidak diproses sewaktu

% melakukan pemerataan nilai

for baris=1 : m

D(baris,1) = 1;

D(baris,n) = 1;

end

for kolom=1 : n

D(1,kolom) = 1;

D(m,kolom) = 1;

end

figure(3); imshow(D);

% Kosongkan bagian latarbelakang

% untuk mendapatkan bagian daun

E = RGB;

Page 93: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 493

for baris=1 : m

for kolom=1 : n

if D(baris, kolom) == 1

E(baris,kolom,1) = 255;

E(baris,kolom,2) = 255;

E(baris,kolom,3) = 255;

end

end

end

figure(4); imshow(E);

clear RGB A B C D E H;

Akhir Program

Proses untuk mendapatkan daun ditunjukkan pada gambar berikut.

(a) Citra ficus.png (b) Konversi ke abu-abu

(d) Morfologi opening (e) Hasil segmentasi

(c) citra biner

Gambar 10.53 Urutan segmentasi daun melalui citra biner

Page 94: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

494 Pengolahan Citra : Teori dan Aplikasi

1. Apa yang disebut dengan segementasi?

2. Apa hubungan tool seperti ‘Magic Wand’ dengan segmentasi?

3. Berdasarkan teknik yang digunakan, segmentasi dapat dibagi menjadi empat

kategori. Apa saja dan berikan penjelasan secara singkat.

4. Apa yang dimaksud dengan deteksi tepi? Sebutkan paling tidak empat

operator yang terkait dengan deteksi tepi.

5. Jelaskan pengertian gradien.

6. Sebutkan contoh deteksi tepi orde kedua. Apa kelebihan deteksi tepi orde

kedua dibandingkan dengan orde pertama?

7. Apa kegunaan operator Canny?

8. Apa keunikan operator zero-crossing dibandingkan dengan operator seperti

Sobel dan Prewitt?

9. Apa yang dimaksud dengan operator Kompas?

10. Jelaskan istilah- istilah berikut.

(a) Peng-ambangan dwi-aras

(b) Peng-ambangan aras-jamak

(c) Peng-ambangan optimal

(d) Peng-ambangan iteratif

(e) Peng-ambangan global

(f) Peng-ambangan lokal

(g) Peng-ambangan adaptif

11. Berikan contoh yang tergolong sebagai peng-ambangan secara entropi.

12. Pada file yang disediakan untuk buku ini, terdapat file bernama

empatbola.png, yang isinya seperti berikut.

Latihan

Page 95: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

Segmentasi Citra 495

Tugas Anda adalah membuat suatu fungsi yang menerima masukan berupa

sebuah warna. Sebagai contoh, apabila Anda menyertakan warna “biru”

sebagai argumen, citra hanya akan menampilkan bola yang berwarna biru.

Page 96: BAB 10 - rizafennisya.files.wordpress.com · Definisi tepi di sini adalah “himpunan piksel yang terhubung yang terletak pada batas dua area” (Gonzalez & Woods, 2002). ... menggunakan

496 Pengolahan Citra : Teori dan Aplikasi