bab 12 · bab 12 ekstraksi fitur bentuk dan kontur setekah bab ini berakhir, diharapkan pembaca...

74
BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk dan kontur serta mampu mempraktikkannya. Ekstraksi fitur Tanda-tangan Kontur Deskriptor Fourier Sifat bundar Convex hull dan soliditas Momen spasial dan momen pusat Momen invariant Momen jarak ke pusat Momen Zernike Polar Fourier Transform Kotak pembatas

Upload: dohanh

Post on 10-Mar-2019

260 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

BAB 12

Ekstraksi

Fitur Bentuk dan

Kontur

Setekah bab ini berakhir, diharapkan pembaca

mendapatkan berbagai bahasan yang berhubungan

dengan pemerolehan fitur bentuk dan kontur serta mampu

mempraktikkannya.

Ekstraksi fitur

Tanda-tangan Kontur

Deskriptor Fourier

Sifat bundar

Convex hull dan soliditas

Momen spasial dan momen pusat

Momen invariant

Momen jarak ke pusat

Momen Zernike

Polar Fourier Transform

Kotak pembatas

Page 2: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

576 Pengolahan Citra Teori dan Aplikasi

12.1 Pengantar Ekstraksi Fitur

Beberapa fitur berdasarkan bentuk dan kontur telah dibahas pada Bab 8.

Sebagai contoh, fitur kekompakan diperoleh melalui perimeter dan luas objek.

Beberapa fitur lain yang telah dikupas antara lain berupa dispersi dan

kerampingan.

Pada bab ini, beberapa fitur lain yang terkait dengan bentuk dan kontur

akan dibahas. Fitur-fitur yang dimaksud antara lain tanda tangan kontur,

deskriptor Fourier, dan momen Zernike. Namun, sebelum membahas fitur-fitur

tersebut, dua pengertian dasar akan dibahas, yaitu bentuk, deskriptor dan fitur.

Definisi bentuk menurut D.G. Kendall (Stegmann dan Gomez, 2002) adalah

infomasi geometris yang tetap ketika efek lokasi, skala, pemutaran dilakukan

terhadap sebuah objek (lihat Gambar 12.1). Deskriptor adalah seperangkat

parameter yang mewakili karakteristik tertentu objek, yang dapat digunakan untuk

menyatakan fitur objek. Adapun fitur dinyatakan dengan susunan bilangan yang

dapat dipakai untuk mengidentifikasi objek.

Gambar 12.1 Objek yang sama melalui efek penyekalaan (b),

translasi (c), dan pemutaran (d)

Fitur-fitur suatu objek mempunyai peran yang penting untuk berbagai

aplikasi berikut.

1. Pencarian citra: Fitur dipakai untuk mencari objek-objek tertentu yang berada

di dalam database.

Page 3: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 577

2. Penyederhanaan dan hampiran bentuk: Bentuk objek dapat dinyatakan dengan

representasi yang lebih ringkas.

3. Pengenalan dan klasifikasi: Sejumlah fitur dipakai untuk menentukan jenis

objek. Sebagai contoh, fitur citra daun digunakan untuk menentukan nama

tanaman.

Untuk kepentingan aplikasi yang telah disebutkan, fitur hendaknya efisien.

Fitur yang efisien perlu memenuhi sifat-sifat penting berikut (Mingqiang, dkk.,

2008).

1. Teridentifikasi: Fitur berupa nilai yang dapat digunakan untuk membedakan

antara suatu objek dengan objek lain. Jika kedua fitur tersebut didampingkan,

dapat ditemukan perbedaan yang hakiki. Hal ini sama seperti kalau dilakukan

oleh manusia secara visual.

2. Tidak dipengaruhi oleh translasi, rotasi, dan penyekalaan: Dua objek yang

sama tetapi berbeda dalam lokasi, arah pemutaran, dan ukuran tetap dideteksi

sama.

3. Tidak bergantung pada affine: Pengertian affine telah dibahas pada Bab 5.

Idealnya, efek affine tidak mempengaruhi fitur.

4. Tahan terhadap derau: Fitur mempunyai sifat yang andal terhadap derau atau

cacat data. Sebagai contoh, daun yang sama tetapi salah satu sedikit robek

tetap dikenali sebagai objek yang sama.

5. Tidak bergantung pada tumpang-tindih: Apabila objek sedikit tertutupi oleh

objek lain, fitur bernilai sama dengan kalau objek itu terpisah.

6. Tidak bergantung secara statistis: Dua fitur harus tidak bergantung satu

dengan yang lain secara statistik.

12.2 Tanda-Tangan Kontur

Tanda-tangan kontur didefinisikan sebagai

𝑑(𝑛) = √(𝑥(𝑛) − �̅�)2+(𝑦(𝑛) − �̅�)2 (12.1)

Page 4: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

578 Pengolahan Citra Teori dan Aplikasi

Dalam hal ini, (�̅�, �̅�) menyatakan pusat massa kontur, yang diperoleh melalui

rumus

�̅� =1

𝑁∑ 𝑦(𝑖),𝑁

𝑖 𝑥 ̅ =1

𝑁∑ 𝑥(𝑖)𝑁

𝑖 (12.2)

dengan n=1,2,3,….,N. Ilustrasi tanda-tangan kontur ditunjukkan pada Gambar

12.1.

d(2) d(3)

d(4)

d(1)

(�̅�, �̅�)

d(n)

Gambar 12.2 Tanda-tangan kontur diperoleh dengan mula-mula

menghitung jarak antara pusat massa dan beberapa titik pada kontur

Contoh tanda-tangan empat objek ditunjukkan pada Gambar 12.2.

Gambar 12.2(b) dan 12.2(d) menunjukkan bahwa translasi menghasilkan bentuk

grafik tanda-tangan yang sama. Gambar 12.2(f) menunjukkan bahwa hasil rotasi

membuat bentuk tanda tangan tergeser, sedangkan Gambar 12.2(h) menyatakan

sedikit perbedaan pada objek membuat tanda tangan ikut berubah. Hal ini

menunjukkan bahwa tanda-tangan kontur peka terhadap derau pada tepi objek.

Page 5: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 579

(a) Citra ikan-1.png (b) Tanda-tangan ikan-1.png

(c) Citra ikan-2.png (d) Tanda-tangan ikan-2.png

(e) Citra ikan-4.png (f) Tanda-tangan ikan-4.png

(g) Citra ikan-5.png (h) Tanda-tangan ikan-5.png

Gambar 12.3 Contoh tanda-tangan empat citra ikan

Dalam praktik, titik-titik yang digunakan untuk memperoleh d(1)

dilakukan dengan memindai kontur dari arah kiri dan atas. Titik pada kontur yang

ditemukan pertama kali akan dipakai untuk menghitung d(1). Langkah

selengkapnya diperlihatkan pada algoritma berikut.

Page 6: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

580 Pengolahan Citra Teori dan Aplikasi

ALGORITMA 10.1 – Memperoleh tanda-tangan objek

Masukan:

f(M,N) : citra biner berukuran M x N

Keluaran:

jarak sebanyak piksel batas

tandatangan(BW):

1. batas inbound_tracing(f)

2. jum jumlah piksel batas

3. [xp, yp] pusat massa objek dalam f

4. FOR p 1 TO jum

Jarak(p) jarak antara piksel batas (batas(p)) dan

titik pusat massa

END-FOR

5. RETURN jarak

Fungsi yang dapat digunakan untuk memperoleh tanda-tangan dan

menampilkan hasilnya ditunjukkan berikut ini.

function [Jarak] = tandatangan(BW)

% TANDATANGAN Digunakan untuk memperoleh jarak-jarak antara

% piksel dalam batas objek dri citra biner BW

% Keluaran: Jarak - Berisi sejumlah pasangan Y, X

% yang menyatakan jarak

[m,n] = size(BW);

Batas = double(inbound_tracing(BW));

[jum, z] = size(Batas);

[pusat_x, pusat_y] = centroid(BW);

Program : tandatangan.m

Page 7: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 581

Jarak = zeros(1,m);

for p=1 : jum

Jarak(p) = sqrt((Batas(p,1)-pusat_y)^2 + ...

(Batas(p,2)-pusat_x)^2);

end

% Plot jarak

X = 1: p;

plot(X, Jarak);

Akhir Program

Contoh untuk memperoleh tanda-tangan objek yang terdapat pada ikan-

1.png :

>> Img = im2bw(imread('C:\Image\ikan-1.png'), 0.5);

>> X = tandatangan(Img);

>>

Pada contoh di atas, im2bw dipakai untuk mengonversikan dari citra berskala

keabuan ke citra biner. Terakhir, X akan berisi jarak setiap piksel pada kontur dari

titik pusat massa.

Perlu diketahui, tanda-tangan yang telah dibahas di depan mempunyai sifat

yang hanya bebas dari translasi, tetapi tidak bebas dari rotasi ataupun

penyekalaan. Agar fitur yang didapatkan bebas dari rotasi dan penyekalaan, perlu

langkah lebih lanjut. Salah satu cara yang dapat dilakukan adalah dengan

memanfaatkan deskriptor Fourier.

12.3 Deskriptor Fourier

Deskriptor Fourier (Fourier Descriptor / FD) biasa dipakai untuk

menjabarkan bentuk dalam dua dimensi dengan menggunakan transformasi

Fourier. Deskriptor ini pertama kali dibahas pada tahun 1960 oleh Cosgriff

(Nixon dan Aguado, 2002). Dengan menggunakan deskriptor Fourier, suatu

bentuk dapat dinyatakan dengan sejumlah bilangan (yaitu koefisien Fourier).

Page 8: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

582 Pengolahan Citra Teori dan Aplikasi

Berbagai aplikasi telah menggunakan deskriptor Fourier, antara lain oleh

Leon dan Sucar (2000) untuk mengenali bayangan manusia serta Zhang dan Lu

(2003) yang menggunakannya untuk pencarian bentuk objek melalui beberapa

jenis tanda tangan bentuk objek.

Konsep dasar untuk mendapatkan deskriptor Fourier sangat sederhana.

Pertama-tama, kontur objek perlu didapatkan terlebih dahulu. Hal ini dapat

dilakukan dengan memanfaatkan fungsi inbound_tracing yang dibahas di

Bab 8. Selanjutnya, piksel-piksel di kontur tersebut ditransformasikan

menggunakan FFT. Implementasinya ditunjukkan di bawah ini.

function [F] = perolehFD(Kontur)

% PEROLEHFD Memperoleh deskriptor Fourier berdasarkan

% kontur suatu bentuk.

% Masukan: Kontur = kontur objek

% Keluaran: F = deskriptor Fourier

jum = length(Kontur);

% Atur supaya jumlah elemen genap

if rem(jum, 2) == 1

Kontur = [Kontur; Kontur(1,:)];

end

% Peroleh bentuk Fourier kontur

K = Kontur(:, 2) - i * Kontur(:,1);

F = fft(K);

Akhir Program

Dasar yang digunakan untuk memperoleh koefisien Fourier adalah

transformasi Fourier berdimensi satu. Transformasi Fourier diskret berupa:

𝑢𝑜 =1

𝑁∑ 𝑠(𝑡). exp (

−𝑗2𝜋𝑛𝑡

𝑁)𝑁

𝑡=0 , 𝑛 = 0,1,2,… , 𝑁 − 1 (12.3)

Program : perolehFD.m

Page 9: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 583

Nah, un dengan n = 0,1,2,..,N-1 dinamakan deskriptor Fourier untuk bentuk.

Dalam implementasi di depan, transformasi Fourier dilaksanakan dengan

menggunakan fungsi FFT yang disediakan di Octave dan MATLAB.

Untuk mempraktikkan fungsi perolehFD, cobalah perintah berikut:

>> Img = im2bw(imread('C:\Image\ikan-5.png'), 0.5);

>> Kontur = inbound_tracing(Img);

>> F = perolehFD(Kontur);

Dengan cara seperti itu, F berisi koefisien-koefisien Fourier (deskriptor Fourier).

Jumlahnya tentu saja lebih kompak daripada ukuran citra ikan-5.png, karena

hanya sebanyak piksel yang berada pada kontur objek. Hal ini ditunjukkan di

bawah ini:

>> length(F)

ans = 544

>>

>> [m,n]=size(Img); m * n

ans = 62500

>>

Jumlah data pada citra sebanyak 62500 buah, sedangkan jumlah deskriptor

Fourier hanya 544. Nilai 544 seperti itu pun masih dapat dikurangi. Hal ini akan

dijelaskan belakangan.

Koefisien-koefisien yang tercatat dalam F dapat digunakan untuk

membentuk kontur objek. Hal itu dapat ditangani oleh fungsi plotFD berikut.

function [] = plotFD(F)

% PLOTFD Menampilkan kontur berdasarkan deskriptor Fourier.

% Masukan: F = Deskriptor Fourier

Program : plotFD.m

Page 10: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

584 Pengolahan Citra Teori dan Aplikasi

jum = length(F);

if jum > 0

G = ifft(F); % Transformasi balik

G = [G; G(1)]; % Tambahkan elemen pertama

plot(G);

axis off;

end

Akhir Program

Contoh penggunaan plotFD dapat dilihat di bawah ini:

>> plotFD(F)

Hasilnya ditunjukkan pada Gambar 12.4(b), yang menunjukkan kontur objek.

(a) Citra asli (b) Hasil melalui deskriptor Fourier

Gambar 12.4 Gambar kontur melalui deskriptor Fourier

Dalam praktik, deskriptor sebanyak 544 pada contoh di depan terlalu

banyak kalau dijadikan sebagai fitur objek. Oleh karena itu, jumlah fitur yang

perlu dikurangi. Adapun cara yang digunakan untuk mereduksi deskriptor Fourier

dapat dilihat berikut ini.

Program : fiturFourier.m

Page 11: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 585

function [G] = fiturFourier(F, n)

% FITURFOURIER Memperoleh fitur Fourier sebanyak n buah.

% Masukan:

% F : Deskriptor Fourier yang lengkap

% n : Jumlah fitur yang dikehendaki

% Keluaran:

% G : Deskriptor Fourier sebanyak n buah

jum = length(F);

if jum > n

K1 = fftshift(F);

delta = round((jum-n) / 2);

K2 = K1(1 + delta : n+delta);

G = ifftshift(K2);

else

G = F;

end

Akhir Program

Kode di atas hanya akan mengubah deskriptor Fourier kalau jumlah

elemen deskriptor semula melebihi jumlah deskriptor yang diminta (n). Pertama-

tama, fungsi fftshift mengubah susunan F menjadi K seperti yang diperlihatkan

pada Gambar 12.5. Selanjutnya,

delta = round((jum-n) / 2);

K2 = K1(1 + delta : n+delta);

digunakan untuk mengambil n elemen pada K1 dimulai dari 1 + delta hingga n +

delta. Hasilnya disusun ulang melalui fungsi ifftshift. Dengan cara seperti itu,

jumlah deskriptor yang semula sebanyak jum diturunkan menjadi n.

Page 12: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

586 Pengolahan Citra Teori dan Aplikasi

m + in

o + ip

q + ir

s + it

q + ir

s + it

a + ib

c + id

q + ir

s + it

a + ib

c + id

e + if

g + ih

m + in

o + ip

q + ir

s + it

a + ib

c + id

e + if

g + ih

a + ib

c + id

K1 = fftshift(F)

F K1

8 elemen

n = 4

delta = (8-4)/2 =2

1 + delta

n + delta

K2 G

K1 = ifftshift(F)

Gambar 12.5 Mekanisme penurunan jumlah deskriptor

Cara menggunakan fungsi fiturFourier dan hasil deskriptor yang

didapatkan ditunjukkan di bawah ini:

>> G = fiturFourier(F, 20);

>> plotFD(G)

>>

Contoh hasil pemilihan berbagai jumlah deskriptor Fourier ditunjukkan pada

Gambar 12.6. Sebagai contoh, dengan menggunakan seluruh deskriptor (n = 544),

citra yang dihasilkan adalah kontur objeknya (Gambar 12.6(b)). Manakala jumlah

deskriptor diturunkan menjadi 100, hasil kontur (Gambar 12.6(c)) masih

menyerupai kontur pada Gambar 12.6(a). Namun, gambar kontur akan terus

menjauh dari bentuk aslinya kalau n terlalu kecil.

Page 13: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 587

(a) Citra ikan-5.png (b) n = 544

(c) n = 100 (d) n = 50

(e) n = 20 (f) n = 25

(g) n = 15 (h) n = 10

Gambar 12.6 Jumlah deskriptor Fourier dan

pengaruh bentuk yang dihasilkan

Page 14: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

588 Pengolahan Citra Teori dan Aplikasi

Agar deskriptor Fourier mempunyai sifat yang bebas terhadap translasi,

rotasi, penyekalaan, dan letak awal kontur, perlu dilakukan normalisasi. Pertama-

tama yang perlu diketahui, kecuali komponen DC (a0), semua koefisien yang lain

tidak dipengaruhi oleh translasi (Zhang, 2002). Oleh karena itu, komponen a0

dapat diabaikan. Agar bebas dari penyekalaan, semua koefisien perlu dibagi

dengan a0. Selanjutnya, berdasarkan kenyataan bahwa dalam kawasan frekuensi

ternyata rotasi hanya akan menyebabkan perbedaan dalam fase, maka fase

diabaikan dengan hanya menggunakan besaran koefisien. Kalau koefisien setelah

pembagian dengan ao menjadi bn, |bn| akan menghasilkan besaran koefisien.

Implementasinya Dapat dilihat pada fungsi normalisasiFD berikut.

function [G] = normalisasiFD(F)

% NORMALISASIFD Digunakan untuk melakukan normalisasi

% agar FD bebas dari transalasi, rotasi,

% penyekalaan, dan perubahaan titik awal.

G = F;

% Mengatur agar bebas terhadap penyekalaan

m = abs(G(1)); % Ambil komponen kedua

G = G ./ m; % Lakukan normalisasi

% Mengatur agar bebas rotasi dan perubahan titik awal

G = abs(G);

Akhir Program

Hasil normalisasiFD tidak dapat digunakan untuk

merekonstruksi kontur.

Program : normalisasiFD.m

Page 15: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 589

Untuk mengamati fitur yang dihasilkan dengan normalisasiFD, fungsi

amatiFD berikut dapat digunakan.

function [] = amatiFD(berkas)

% AMATIFD Digunakan untuk mengamati deskriptor Fourier

% yang telah dinormalisasi.

Img = im2bw(imread(berkas),0.5);

K = inbound_tracing(Img);

F = perolehFD(K);

G = fiturFourier(F,30);

H = normalisasiFD(G);

bar(H);

Akhir Program

Contoh penggunaan fungsi amatiFD:

>> amatiFD('C:\Image\guppi-1.png');

Hasil pengamatan berbagai citra diperlihatkan pada Gambar 12.7. Diagram batang

untuk ikan-1.png hingga ikan-5.png menunjukkan bahwa ada kemiripan pola,

sedangkan diagram batang untuk guppy-1.png menunjukkan ada perbedaan

dengan kelompok ikan-1.png hingga ikan-5.png. Perlu juga diperhatikan,

koefisien paling kiri (a0) selalu bernilai 1 karena efek normalisasi. Itulah

sebabnya, nilai ini dapat diabaikan dalam pembandingan dua objek.

Program : amatiFD.m

Page 16: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

590 Pengolahan Citra Teori dan Aplikasi

(a) Citra ikan-1.png (b) FD ikan-1.png (c) Citra ikan-2.png (d) FD ikan-2.png

(e) Citra ikan-3.png (f) FD ikan-3.png (g) Citra ikan-4.png (h) FD ikan-4.png

(i) Citra ikan-5.png (j) FD ikan-5.png (k) Citra guppi-1.png (l) FD guppi-1.png

Gambar 12.7 Deskriptor Fourier yang telah dinormalisasi

untuk berbagai bentuk

12.4 Sifat Bundar

Sifat bundar (circularity) adalah perbandingan antara rerata jarak

Euclidean dari sentroid terhadap tepi area dan deviasi standar jarak dari sentroid

ke tepi area. Secara matematis, sifat bundar dinyatakan sebagai berikut:

𝑐 =𝜇𝑅

𝜎𝑅 (12.4)

Dalam hal ini, r berupa

𝜇𝑅 =1

𝑁∑ |(𝑦𝑖 ,𝑥𝑖) − (�̅�𝑐, �̅�𝑐)|𝑁

𝑖=1 (12.5)

dan r berupa

Page 17: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 591

𝜎𝑅 =1

𝑁∑ [ |(𝑦𝑖 ,𝑥𝑖) − (�̅�𝑐 , �̅�𝑐)| − 𝜇𝑅 ]2𝑁

𝑖=1 (12.6)

Contoh fungsi berikut dimaksudkan untuk memperoleh fitur sifat bundar.

Fungsi memerlukan masukan berupa citra biner.

function [c] = sifatbundar(BW)

% SIFATBUNDAR Digunakan untuk memperoleh fitur sifat bundar.

% Masukan: BW adalah citra biner.

[px, py] = centroid(BW);

[m, n] = size(BW);

Kontur = inbound_tracing(BW);

% Hapus elemen terakhir

Kontur(length(Kontur),:) = [];

jum =length(Kontur);

% Hitung mu

total = 0;

for i=1 : jum

total = total + sqrt( (Kontur(i,1)-py)^2 + ...

(Kontur(i,2)-px)^2);

end

mu = total / jum;

% Hitung sigma

total = 0;

for i=1 : jum

total = total + (sqrt( (Kontur(i,1)-py)^2 + ...

(Kontur(i,2)-px)^2) - mu) ^ 2;

end

sigma = total / jum;

c = mu / sigma;

Akhir Program

Program : sifatbundar.m

Page 18: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

592 Pengolahan Citra Teori dan Aplikasi

Contoh pemakaian fungsi sifatbundar:

>> Img = im2bw(imread('C:\Image\guppi-1.png'), 0.5);

>> c = sifatbundar(Img)

c = 0.10620

>>

Fungsi im2bw diperlukan jika citra tidak berupa citra biner. Tabel 12.1

memperlihatkan berbagai objek dan nilai sifat bundarnya.

Tabel 12.1 Sifat bundar berbagai objek

Objek Nilai Sifat Bundar

ikan-1.png

0,20595

ikan-2.png

0,20595

ikan-3.png

0,31363

ikan-4.png

0,21497

ikan-5.png

0,22230

guppi-1.png

0,10620

kunci.png

0,10110

Page 19: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 593

12.5 Convex Hull dan Soliditas

Convex hull dengan menggunakan morfologi telah dibahas di Bab 7.

Namun, hasilnya belum seperti yang diharapkan. Convex hull yang ideal adalah

seperti karet gelang yang dipasang di tepi objek. Gambar menunjukkan bentuk

konveks dan tidak konveks. Suatu himpunan S di dalam bidang dinamakan

konveks jika di seluruh pasangan dua titik yang terkandung di dalamnya dibentuk

oleh garis yang seluruhnya berada dalam S. Dengan demikian, Gambar 12.8(b)

bukanlah bentuk konveks karena garis contoh menghasilkan titik di luar objek.

(a) Himpunan konveks (b) Bukan Himpunan konveks

Gambar 12.8 Konveks dan bukan konveks

Salah satu algoritma yang digunakan untuk menangani perwujudan convex

hull adalah ‘Graham Scan’. Algoritma ini sangat efisien untuk menangani convex

hull baik untuk kurva tertutup ataupun piksel-piksel yang tersebar secara

individual, berapa pun jumlahnya (Goodrich dan Tamassia, 2002). Kinerjanya

sebesar O(n log n), dengan n adalah jumlah piksel yang akan dilingkupi oleh

sabuk. Tabel 12.2 menunjukkan berbagai algoritma yang berhubungan dengan

convex hull. Beberapa algoritma dibahas oleh O’Rourke (1995).

Page 20: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

594 Pengolahan Citra Teori dan Aplikasi

Tabel 12.2 Berbagai algoritma convex hull

Algoritma Kinerja Penemu

Brute Force O(n4) dan O(n3) Tidak diketahui

Graham Scan O(n log n) Graham, 1972

Gift Wrapping O(nh) Jarvis, 1973

QuickHull O(nh) Eddy, 1977

Divide-and-Conquer O(n log n) Preparata & Hong, 1977

Monotone Chain O(n log n) Andrew, 1979

Incremental O(n log n) Kallay, 1984

Marriage-before-

Conquest

O(n log h) Kirkpatrick & Seidel,

1986

Dasar untuk memperoleh convex hull pada algoritma Graham Scan dibagi

menjadi tiga tahap.

1. Perolehan titik p0 di dalam himpunan P yang berisi kumpulan titik. Titik p0

ini biasa disebut sebagai titik jangkar atau pivot. Caranya adalah dengan

mencari titik yang mempunyai nilai ordinat Y terkecil. seandainya terdapat

beberapa nilai Y yang memenuhi hal itu, dicari nilai X yang paling kecil.

2. Penghitungan sudut semua titik di dalam P, selain p0 terhadap p0.

Kemudian, semua titik di dalam P selain p0 diurutkan secara radial

berlawanan dengan arah jarum jam.

(Titik jangkar)

p0

Gambar 12.9 Penyiapan piksel di dalam convex hull secara radial

berdasarkan titik jangkar

Page 21: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 595

3. Penyiapan sebuah tumpukan. Titik p0 dan titik pertama hasil pengurutan

diletakkan ke dalam tumpukan H. Kemudian, setiap titik tersisa pi diproses

dengan cara seperti berikut.

(a) Jika pi membentuk putaran ke kiri terhadap dua titik yang berada di

dalam tumpukan H, tambahkan pi ke H dan lanjutkan pemrosesan

untuk titik berikutnya.

(b) Untuk keadaan sebaliknya, ambil satu data dari tumpukan H.

Algoritma Graham Scan dapat dilihat berikut ini.

ALGORITMA 12.1 – Algoritma ‘Graham Scan’

Masukan:

P = n piksel

Keluaran:

Himpunan convex hull

GrahamScan(BW):

1. P0 Titik jangkar

2. P P0, P1, P2, P3,…,Pn-1 dengan P1 hingga Pn-1 telah

diurutkan secara radial. Selanjutnya, P akan diindeks dari 1 sampai dengan n

3. H Stack kosong 4. Push(H, p0)

5. Push(H, p1)

6. i 2

7. WHILE i < n

pa puncak H

pb puncak H

IF pi berputar ke kanan(Pa, Pb) Pop(H)

ELSE

Push(H, Pi)

i i + 1

END END

8. RETURN H

Page 22: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

596 Pengolahan Citra Teori dan Aplikasi

Gambar 12.10 memperlihatkan contoh pembentukan convex hull dengan

algoritma di atas. Gambar 12.10(a) menunjukkan keadaan awal ketika dua titik

pertama diproses diletakkan ke dalam tumpukan. Gambar 12.10(b) menunjukkan

ketika titik ketiga ditambahkan sebagai bagian dari convex hull. Hal ini terjadi

karena titik ketiga mengalami putaran ke kiri terhadap titik terakhir yang berada di

dalam tumpukan. Gambar 12.10(d) menunjukkan hasil ketika titik kelima

diproses. Perhatikan bahwa terjadi putaran ke arah kanan. Oleh karena itu, titik di

puncak tumpukan dikeluarkan dan digantikan dengan titik kelima tersebut.

Gambar 12.10(f) menunjukkan keadaan akhir, yaitu setelah semua titik diproses.

Dalam hal ini, titik terakhir tinggal dihubungkan ke titik jangkar.

(a) (b)

(c)

(e)

(d)

(f)

Gambar 12.10 Ilustrasi pembentukan convex hull

dengan menggunakan algoritma ‘Graham Scan’

Page 23: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 597

Dalam praktik, algoritma perlu dikembangkan lagi untuk mengantisipasi

keadaan sejumlah titik yang mempunyai sudut sama tetapi memiliki panjang yang

berbeda terhadap titik jangkar (Gambar 12.11(a)). Tujuannya adalah untuk

mempercepat proses pemindaian saat membentuk convex hull. Dalam keadaan

seperti itu, hanya titik dengan panjang yang terbesar yang dipertahankan.

Implementasi pembentukan convex hull dengan memperhatikan hal seperti itu

dapat dilihat pada fungsi convexhull.

(a) (b)

Dua titik mempunyai

sudut yang sama

Titik dengan jarak

terpanjang dipertahankan

Gambar 12.11 Penghilangan titik-titik yang mempunyai sudut sama,

dengan hanya mempertahankan satu saja yang terpanjang

function [CH] = convexhull2(Kontur)

% CONVEXHULL Digunakan untuk mendapatkan convex hull

% dari suatu objek menggunakan metode 'Graham Scan'.

% Masukan: Kontur = kontur objek, yamg berdimensi dua

% dengan kolom pertama berisi data Y dan

% kolom kedua berisi data X.

% Keluaran: CH = Convex hull

jum = length(Kontur);

% Cari titik jangkar atau pivot

terkecil = 1;

for i=2 : jum

if Kontur(i,1) == Kontur(terkecil, 1)

if Kontur(i,2) < Kontur(terkecil, 2)

Program : convexhull.m

Page 24: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

598 Pengolahan Citra Teori dan Aplikasi

terkecil = i;

else

if Kontur(i,1) < Kontur(terkecil, 1)

terkecil = i;

end

end

end

end

% Susun data dengan menyertakan sudut dan panjang,

% kecuali titik dengan posisi = terkecil

indeks = 0;

for i=1 : jum

if i == terkecil

continue;

end

indeks = indeks + 1;

Piksel(indeks).y = Kontur(i, 1);

Piksel(indeks).x = Kontur(i, 2);

Piksel(indeks).sudut = sudut(Kontur(terkecil,:), ...

Kontur(i,:));

Piksel(indeks).jarak = jarak(Kontur(terkecil,:), ...

Kontur(i,:));

end

jum_piksel = indeks;

% Lakukan pengurutan menurut sudut dan jarak

for p = 2: jum_piksel

x = Piksel(p);

% Sisipkan x ke dalam data[1..p-1]

q = p - 1;

ketemu = 0;

while ((q >= 1) && (~ketemu))

if x.sudut < Piksel(q).sudut

Piksel(q+1) = Piksel(q);

q = q - 1;

else

ketemu = 1;

end

Piksel(q+1) = x;

end

end

% Kalau ada sejumlah piksel dengan nilai sudut sama

% maka hanya yang jaraknya terbesar yang akan

% dipertahankan

Piksel = unik(Piksel);

jum_piksel = length(Piksel);

% Siapkan tumpukan

H = [];

top = 0;

% Proses pemindaian

Page 25: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 599

% Mula-mula sisipkan dua titik

top = top + 1;

H(top).y = Kontur(terkecil, 1);

H(top).x = Kontur(terkecil, 2);

top = top + 1;

H(top).y = Piksel(1).y;

H(top).x = Piksel(1).x;

i=2;

while i <= jum_piksel

titik.x = Piksel(i).x;

titik.y = Piksel(i).y;

% Ambil dua data pertama pada tumpukan H

% tanpa membuangnya

A.x = H(top).x;

A.y = H(top).y;

B.x = H(top-1).x;

B.y = H(top-1).y;

if berputar_ke_kanan(A, B, titik)

% Pop data pada tumpukan H

top = top - 1;

else

% Tumpuk titik ke tumpukan H

top = top + 1;

H(top).x = titik.x;

H(top).y = titik.y;

i=i+1;

end

end

% Ambil data dari tumpukan H

C = [];

indeks = 0;

while top ~= 0

indeks = indeks + 1;

% Pop data dari tumpukan H

C(indeks,2) = H(top).x;

C(indeks,1) = H(top).y;

top = top - 1;

end

% Balik urutannya

for i=1 : indeks

CH(indeks+1-i,1) = C(i,1);

CH(indeks+1-i,2) = C(i,2);

end

function [s] = sudut(T1, T2)

dy = T1(1,1)-T2(1,1);

dx = T1(1,2)-T2(1,2);

if dx == 0

Page 26: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

600 Pengolahan Citra Teori dan Aplikasi

dx = 0.00000001;

end

s = atan(dy / dx);

if s < 0

s = s + pi;

end

function [j] = jarak(T1, T2)

j = (T1(1,1)-T2(1,1))^2 + (T1(1,2)-T2(1,2))^2;

function [stat] = berputar_ke_kanan(p1, p2, p3)

stat = ((p2.x - p1.x) * (p3.y - p1.y) - ...

(p3.x - p1.x) * (p2.y - p1.y)) > 0;

function [P] = unik(Piksel)

jum = length(Piksel);

sudut = -1;

% Tandai jarak dengan -1

% kalau titik tidak terpakai

for i=1 : jum

if sudut ~= Piksel(i).sudut

sudut = Piksel(i).sudut;

jarak = Piksel(i).jarak;

else

if jarak < Piksel(i).jarak

Piksel(i).jarak = -1;

end

end

end

indeks = 0;

for i=1 : jum

if Piksel(i).jarak ~= -1

indeks = indeks + 1;

P(indeks) = Piksel(i);

end

end

Akhir Program

Kode penting yang perlu diperhatikan pada fungsi di atas adalaj pada

fungsi berputar_ke_kanan. Fungsi itulah yang berperan untuk menentukan

suatu titik berada di kiri atau di kanan suatu garis dan tentu saja dapat digunakan

untuk menentukan arah putaran. Perhitungannya dilakukan melalui:

(p2.x - p1.x) * (p3.y - p1.y) - (p3.x - p1.x) * (p2.y - p1.y))

Page 27: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 601

Dalam hal ini, kemungkinan hasilnya ada tiga macam.

Kemungkinan 1: Hasil bernilai 0, yang menyatakan bahwa titik p3

terletak satu garis dengan garis yang dibentuk oleh p1 dan p2.

Kemungkinan 2: Hasil bernilai kurang dari 0, yang menyatakan bahwa

titik p3 terletak di sebelah kanan garis yang dibentuk oleh p1 dan p2.

Kemungkinan 1: Hasil bernilai lebih dari 0, yang menyatakan bahwa titik

p3 terletak di kiri garis yang dibentuk oleh p1 dan p2.

p2

p1

p3

(b) p3 di kanan garis. Dalam hal ini,

p2 berputar ke kiri untuk

menuju p3

p2

p1

p3

(a) p3 di kiri garis. Dalam hal ini, p2

berputar ke kanan untuk menuju

p3

Gambar 12.12 Gambaran berputar ke kanan dan ke kiri

Selain itu, penanganan untuk menghapus titik yang terletak di sudut yang

sama, yang diilustrasikan di depan, dilakukan oleh fungsi unik. Fungsi itulah yang

menghasilkan satu titik dengan jarak terbesar sekiranya terdapat beberapa titik

yang memiliki sudut yang sama.

Contoh pengujian fungsi convexhull untuk membentuk convex hull

pada sejumlah titik diperlihatkan di bawah ini:

>> M = [1 1; 100 1; 100 100; 1 100; 1 10; 50 60; 34 40]

M =

1 1

100 1

Page 28: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

602 Pengolahan Citra Teori dan Aplikasi

100 100

1 100

1 10

50 60

34 40

>> H = convexhull(M)

H =

1 1

1 100

100 100

100 1

>>

Hasil H menunjukkan bahwa semua titik pada M terlingkupi oleh sabuk yang

ditentukan oleh titik-titik (1,1), (1, 100), (100, 100), dan (100, 1).

Untuk mempermudah dalam mempraktikkan fungsi convexhull, fungsi

bernama tesconvex dapat digunakan. Fungsi ini mengasumsikan bahwa citra

yang akan diproses memiliki objek yang mudah dibedakan dengan

latarbelakangnya.

function [] = tesconvex(berkas)

% TESCONVEX Digunakan untuk membuat convex hull

% pada objek.

% Masukan: Nama berkas yang berisi objek biner.

Img = im2bw(imread(berkas), 0.5e);

Kontur = inbound_tracing(Img);

K = convexhull(Kontur);

X = K(:,2);

Y = K(:,1);

X = [X; X(1)]; % Tambahkan elemen pertama di akhir

Y = [Y; Y(1)]; % Tambahkan elemen pertama di akhir

imshow(1-Img);

hold on;

plot(X, Y, 'r');

Program : tesconvex.m

Page 29: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 603

hold off;

Akhir Program

Contoh penggunaan fungsi tesconvex:

>> tesconvex('C:\Image\guppi-1.png')

Hasilnya ditunjukkan pada Gambar 12.13. Garis berwarna merah menyatakan

convex hull.

Gambar 12.13 Ikan guppy dan convex hull

Terkait dengan convex hull, terdapat fitur bernama konveksitas dan

soliditas (Russ, 2011). Definisinya sebagai berikut:

𝐾𝑜𝑛𝑣𝑒𝑘𝑠𝑖𝑡𝑎𝑠 =𝑝𝑒𝑟𝑖𝑚𝑒𝑡𝑒𝑟 𝑘𝑜𝑛𝑣𝑒𝑘𝑠

𝑝𝑒𝑟𝑖𝑚𝑒𝑡𝑒𝑟 𝑜𝑏𝑗𝑒𝑘 (12.7)

𝑆𝑜𝑙𝑖𝑑𝑖𝑡𝑎𝑠 =𝑙𝑢𝑎𝑠 𝑜𝑏𝑗𝑒𝑘

𝑙𝑢𝑎𝑠 𝑘𝑜𝑛𝑣𝑒𝑘𝑠 (12.8)

Berikut adalah fungsi yang berguna untuk memperoleh konveksitas objek.

Page 30: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

604 Pengolahan Citra Teori dan Aplikasi

function [konv] = konveksitas(BW)

% KONVEKSITAS Berguna untuk memperoleh konveksitas objek.

% Masukan: BW = Citra biner yang berisi objek.

% Keluaran: konv = nilai konveksitas

Kontur = inbound_tracing(BW);

CHull = convexhull(Kontur);

X = CHull(:,2);

Y = CHull(:,1);

X = [X; X(1)];

Y = [Y; Y(1)];

perimeter_objek = perim2(BW);

% Hitung perimeter konveks

perimeter_konveks = 0;

for i=2 : length(X)

perimeter_konveks = perimeter_konveks + ...

sqrt((X(i)-X(i-1))^2 + (Y(i)-Y(i-1))^2);

end

% Peroleh rasio

konv = perimeter_konveks / perimeter_objek;

Akhir Program

Pada skrip di atas, perimeter objek dihitung dengan memanfaatkan fungsi

perim2, yang telah dibahas di Bab 8. Perhitungan perimeter convex hull

dilaksanakan dengan menjumlahkan jarak antardua titik.

Contoh penggunaan fungsi konveksitas:

>> Img2 = im2bw(imread('C:\Image\kunci.png'), 0.5);

>> konveksitas(Img2)

ans = 0.73520

>>

Fungsi berikut berguna untuk mendapatkan soliditas.

Program : konveksitas.m

Page 31: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 605

function [sol] = soliditas(BW)

% SOLIDITAS Berguna untuk memperoleh konveksitas objek.

% Masukan: BW = Citra biner yang berisi objek.

% Keluaran: konv = nilai soliditas

Kontur = inbound_tracing(BW);

CHull = convexhull(Kontur);

X = CHull(:,2);

Y = CHull(:,1);

X = [X; X(1)];

Y = [Y; Y(1)];

% Hitung luas poligon yang dibentuk oleh convex hull

sigmaA = 0;

sigmaB = 0;

for i=2 : length(X)

sigmaA = sigmaA + Y(i)*X(i-1);

sigmaB = sigmaB + X(i)*Y(i-1);

end

delta = sigmaA - sigmaB;

luas_konveks = abs(delta / 2.0);

luas_objek = luas2(BW);

% Peroleh rasio

sol = luas_objek / luas_konveks;

Akhir Program

Perhitungan luas objek dilakukan dengan memanfaatkan fungsi luas2, yang

telah dibahas di Bab 8. Perhitungan luas daerah convex hull dilakukan dengan

memanfaatkan piksel-piksel yang membentuk convex hull. Algoritmanya seperti

berikut (http://www.wikihow.com/Calculate-the-Area-of-a-Polygon).

ALGORITMA 12.1 – Menghitung luas poligon

Masukan:

P = Piksel-piksel yang menyusun poligon yang telah

tersusun urut berlawanan arah jarum jam. Keluaran:

Program : soliditas.m

Page 32: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

606 Pengolahan Citra Teori dan Aplikasi

Luas poligon

luasPoligon(P):

1. Tambahkan elemen pertama sebagai elemen terakhir pada P.

2. Lakukan penjumlahan terhadap semua perkalian antara nilai X dengan nilai Y milik piksel berikutnya. Hasilnya berupa

sigmaA. 3. Lakukan penjumlahan terhadap semua perkalian antara nilai

Y dengan nilai X milik piksel berikutnya. Hasilnya berupa

sigmaB.

4. delta sigmaA – sigmaB

5. luas = |delta/2| 6. RETURN luas

Ilustrasi perkalian untuk mendapatkan sigmaA dan sigmaB ditunjukkan pada

Gambar 12.14.

(X, Y)

(a, b)

(c, d)

(e, f)

(g, h)

(a, b)

S

a

m

a

(a, b)

(c, d)

(e, f)

(g, h)

(a, b)

(X, Y)

sigma A = a x d + c x f +

e x h + g x b

(a, b)

(c, d)

(e, f)

(g, h)

(a, b)

(X, Y)

sigma B = b x c + d x e +

f x g + h x a

Luas = |(sigma A – sigma B)/2|

sigma A = a x d + c x f +

e x h + g x b

Gambar 12.14 Ilustrasi perkalian untuk mendapatkan sigma A dan sigma B

Contoh penggunaan fungsi soliditas:

>> Img2 = im2bw(imread('c:\Image\guppi-1.png'), 0.5);

Page 33: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 607

>> soliditas(Img2)

ans = 0.79644

>>

Contoh penerapan fitur konveksitas dan soliditas pada sejumlah objek

dapat dilihat pada Tabel 12.3.

Tabel 12.3 Fitur yang memanfaatkan convex hull

Objek Konveksitas Soliditas

ikan-1.png

0.8930 0.8577

ikan-2.png

0.8930 0.8577

ikan-3.png

0.8925 0.8546

ikan-4.png

0.8840 0.8582

ikan-5.png

0.8276 0.8514

guppi-1.png

0.7876 0.7964

kunci.png

0.7352 0.7147

Page 34: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

608 Pengolahan Citra Teori dan Aplikasi

12.6 Proyeksi

Proyeksi citra adalah bentuk satu dimensi isi citra yang dihitung

berdasarkan sumbu koordinat. Definisinya sebagai berikut:

𝑃ℎ𝑜𝑟(𝑏) = ∑ 𝐼(𝑏, 𝑘𝑗)𝑁𝑗=1 (12.9)

𝑃𝑣𝑒𝑟 (𝑘) = ∑ 𝐼(𝑏𝑘 , 𝑘)𝑀𝑗=1 (12.10)

Dalam hal ini, M adalah tinggi citra dan N adalah lebar citra. Definisi di atas

menyatakan bahwa proyeksi horizontal Phor(b) adalah jumlah nilai piksel pada

baris b citra, sedangkan Pver(k) adalah jumlah nilai piksel pada kolom k citra.

Contoh fungsi untuk menangani proyeksi dapat dilihat di bawah ini.

function [ProyHor, ProyVer]= proyeksi(F)

% PROYEKSI Memperoleh proyeksi vertikal dan horizontal.

% Masukan: F = Citra berskala keabuan

% Keluaran: ProyHor = Proyeksi horizontal

% ProyVer = Proyeksi vertikal

[m, n] = size(F);

ProyHor = zeros(m,1);

ProyVer = zeros(n,1);

for y=1 : m

for x=1 : n

ProyHor(y) = ProyHor(y) + F(y,x);

ProyVer(x) = ProyVer(x) + F(y,x);

end

end

Akhir Program

Contoh penggunaan fungsi proyeksi:

>> Img2 = im2bw(imread('c:\Image\abjad.png'), 0.5);

>> [V, H] = proyeksi(Img2);

Program : proyeksi.m

Page 35: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 609

>>

Untuk mengamati V dan H, perintah bar dapat digunakan, misalnya bar(H).

Gambar 12.15 menunjukkan hasil penyajian proyeksi vertikal dan horizontal.

Proyeksi horizontal

Proyeksi vertikal

Gambar 12.15 Visualisasi proyeksi horizontal dan vertikal

Proyeksi biasa digunakan untuk identifikasi tulisan. Tammami, dkk. (2011)

memanfaatkan proyeksi vertikal bersama sejumlah fitur lain untuk mengenali

tulisan Arab. Pada Gambar 12.15, terlihat bahwa proyeksi horizontal dapat

digunakan untuk mengidentifikasi baris tulisan. Jeda yang panjang menunjukkan

pergantian baris (lihat Gambar 12.15). Burger dan Burke (2008) mengemukakan

bahwa untuk mengantisipasi tulisan yang bersumbu miring, proyeksi dapat

dilakukan melalui sumbu utama. Bahkan, dengan menggunakan sentroid sebagai

referensi, dimungkinkan untuk menghasilkan vektor yang tidak bergantung pada

rotasi.

Page 36: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

610 Pengolahan Citra Teori dan Aplikasi

12.7 Momen Spasial dan Momen Pusat

Momen spasial orde (m,n) didefinisikan sebagai berikut:

𝑀𝑖𝑗 = ∑ ∑ 𝑥 𝑖𝑁𝑦=1 𝑦𝑗𝐼(𝑥,𝑦)𝑀

𝑥 =1 (12.11)

Dalam hal ini,

a) i, j = 0, 1, 2, …, dengan i j menyatakan orde momen;

b) M menyatakan jumlah kolom pada citra;

c) N menyatakan jumlah baris pada citra;

d) x adalah ordinat piksel;

e) y adalah absis piksel;

f) I(x,y) menyatakan intensitas piksel pada posisi (x,y).

Adapun momen pusat adalah momen spasial yang dihitung relatif terhadap pusat

massa. Jika pusat massa adalah (�̅�, �̅�), momen pusat ditulis seperti berikut:

𝜇𝑖𝑗 = ∑ ∑ (𝑥 − �̅�)𝑖𝑁𝑦=1 (𝑦 − �̅�)𝑗 𝐼(𝑥, 𝑦)𝑀

𝑥=1 (12.12)

Momen di atas bersifat invariant (tidak terpengaruh) terhadap translasi. Dalam hal

ini, �̅� dan �̅� diperoleh melalui:

�̅� =𝑀10

𝑀00, �̅� =

𝑀01

𝑀00 (12.13)

Agar momen pusat bersifat bebas terhadap translasi, penyekalaan, dan

rotasi, maka momen perlu dinormalisasi. Momen pusat ternormalisasi berupa:

ŋ𝑖𝑗 =𝜇𝑝𝑞

𝜇𝛾00

, 𝛾 =𝑖+𝑗+2

2 (12.14)

Implementasi moment pusat yang ternormalisasi, moment pusat, dan

momen spasial dapat dilihat pada fungsi normomen, momen_pusat, dan

momen_spasial berikut.

Page 37: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 611

function [hasil] = normomen(F, p, q)

% NORMOMEN Menghitung moment pusat ternormalisasi.

% Masukan: F = Citra biner.

% p dan q = orde momen.

F = double(F);

m00 = momen_spasial(F, 0, 0);

normalisasi = m00 ^ ((p+q+2)/2.0);

hasil = momen_pusat(F, p, q) / normalisasi;

Akhir Program

function [hasil] = momen_pusat(F, p, q)

% MOMEN_PUSAT Menghitung momen pusat berorde p, q

[m, n] = size(F);

m00 = momen_spasial(F, 0, 0);

xc = momen_spasial(F, 1, 0) / m00;

yc = momen_spasial(F, 0, 1) / m00;

mpq = 0;

for y=1 : m

for x=1 : n

if F(y,x) ~= 0

mpq = mpq + (x-xc)^p * (y-yc)^q;

end

end

end

hasil = mpq;

Akhir Program

Program : normomen.m

Program : momen_pusat.m

Page 38: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

612 Pengolahan Citra Teori dan Aplikasi

function [hasil] = momen_spasial(F, p, q)

% MOMEN_SPASIAL Menghitung momen spasial berorde (p,q).

[m, n] = size(F);

momenPQ = 0;

for y=1 : m

for x=1 : n

if F(y,x) ~= 0

momenPQ = momenPQ + x^p * y^q;

end

end

end

hasil = momenPQ;

Akhir Program

Contoh pemakaian fungsi normomen:

>> Img = im2bw(imread('C:\Image\ikan-1.png'), 0.5);

>> normomen(Img, 1, 0)

ans = -5.9340e-016

>>

Contoh di atas digunakan untuk memperoleh ŋ10 (momen pusat ternormalisasi

orde (1,0)). Adapun momen pusat ternormalisasi untuk beberapa objek

ditunjukkan pada Tabel 12.4.

Tabel 12.4 Fitur yang memanfaatkan momen pusat ternormalisasi

Objek Fitur

ikan-1.png

ŋ11 = -0.0024

ŋ02 = 0.04578

ŋ20 = 0.1606

ŋ03 =-5.6067e-4

ŋ30 = 0.0132

ŋ12 = -8.7615e-4

ŋ21 = 0.0024

Program : momen_spasial.m

Page 39: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 613

ikan-2.png

ŋ11 = -0.0024

ŋ02 = 0.0458

ŋ20 = 0.1606

ŋ03 = -5.6067e-4

ŋ30 = 0.0132

ŋ12 = -8.7615e-4

ŋ21 = 0.0024

ikan-3.png

ŋ11 = -0.0025

ŋ02 = 0.0456

ŋ20 = 0.1612

ŋ03 = -5.4819e-4

ŋ30 = 0.0132

ŋ12 = -8.8123e-4

ŋ21 = 0.0024

ikan-4.png

ŋ11 = 0.0529

ŋ02 = 0.0811

ŋ20 = 0.1251

ŋ03 = 0.0031

ŋ30 = 0.0038

ŋ12 = 0.0051

ŋ21 = 0.0054

ikan-5.png

ŋ11 = -0.0021

ŋ02 = 0.0463

ŋ20 = 0.1596

ŋ03 = -5.0026e-4

ŋ30 = 0.0135

ŋ12 = -0.0010

ŋ21 = 0.0023

guppi-1.png

ŋ11 = 0.0370

ŋ02 = 0.0706

ŋ20 = 0.1671

ŋ03 = 0.0104

ŋ30 = -0.0449

ŋ12 = 0.0080

ŋ21 = -0.0109

kunci.png

ŋ11 = -0.0032

ŋ02 = 0.2029

ŋ20 = 0.0796

ŋ03 = -0.0268

ŋ30 = -0.0016

ŋ12 = 0.0012

ŋ21 = 0.0221

Hasil di Tabel 12.4 menunjukkan bahwa momen pusat ternormalisasi

memberikan hasil yang berbeda saat ikan diputar (ikan-4.png). Namun, translasi

ataupun pengecilan menghasilkan nilai yang hampir sama. Untuk objek yang

berbeda, terdapat perbedaan yang cukup nyata.

12.8 Momen Invariant

Fitur momen invariant bermanfaat untuk menyatakan objek dengan

memperhitungkan area objek. Fitur ini menggunakan dasar momen pusat yang

ternormalisasi. Momen yang dihasilkan dapat digunakan untuk menangani

translasi, penyekalaan, dan rotasi gambar. Penciptanya, Hu (Theodoridis dan

Koutroumbas, 2006), menciptakan tujuh momen invariant seperti berikut.

∅1 = ŋ20 + ŋ02

∅2 = (ŋ20 − ŋ02)2 + (2ŋ02)2

Page 40: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

614 Pengolahan Citra Teori dan Aplikasi

∅3 = (ŋ30 − 3ŋ12)2 + (ŋ03 − 3ŋ21)2 (12.15)

∅4 = (ŋ30 + ŋ12)2 + (ŋ03 + ŋ21)2

∅5 = (ŋ30 − 3ŋ12)(ŋ30 + ŋ12)[(ŋ30 + ŋ12)2 − 3(ŋ21 + ŋ03)2] +

(ŋ03 − 3ŋ12)(ŋ03 + ŋ21)[(ŋ03 + ŋ12)2 − 3(ŋ12 + ŋ30)2]

∅6 = (ŋ20 − ŋ02 )[(ŋ30 + ŋ12 )2 − (ŋ21 + ŋ03)2] +

4ŋ11(ŋ30 + ŋ12)(ŋ03 + ŋ21 )

∅7 = (3ŋ21 − ŋ03 )(ŋ30 + ŋ12)[(ŋ30 + ŋ12 )2 − 3(ŋ21 + ŋ03)2]

(ŋ30 − 3ŋ12)(ŋ21 + ŋ03)[(ŋ03 + ŋ21)2 − 3(ŋ30 + ŋ12 )2]

Implementasi untuk menghitung ketujuh momen Hu ditunjukkan di bawah

ini.

function [Momen] = momenhu(F)

% MOMENHU Menghitung momen HU.

% Masukan: F = citra berskala keabuan

% Keluaran: Momen = 7 momen Hu

norm_20 = normomen(F, 2, 0);

norm_02 = normomen(F, 0, 2);

norm_11 = normomen(F, 1, 1);

norm_30 = normomen(F, 3, 0);

norm_12 = normomen(F, 1, 2);

norm_21 = normomen(F, 2, 1);

norm_03 = normomen(F, 0, 3);

Momen.m1 = norm_20 + norm_02;

Momen.m2 = (norm_20 - norm_02)^2 + 4 * norm_11^2;

Momen.m3 = (norm_30 + 3 * norm_12)^2 + ...

(3 * norm_21 - norm_03)^2;

Momen.m4 = (norm_30 + norm_12)^2 + (norm_21 + norm_03)^2;

Program : momenhu.m

Page 41: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 615

Momen.m5 = (norm_30 - 3 * norm_12) * ...

(norm_30 + norm_12) * ...

((norm_30 + norm_12)^2 - 3 * ...

(norm_21 + norm_03)^2) + ...

(3 * norm_21 - norm_03) * (norm_21 + norm_03) * ...

(3 * (norm_30 + norm_12)^2 -(norm_21 + norm_03)^2);

Momen.m6 = (norm_20 - norm_02) * ...

((norm_30 + norm_12)^2 - ...

(norm_21 + norm_03)^2) + ...

4 * norm_11 * (norm_30 + norm_12) * ...

(norm_21 + norm_03);

Momen.m7 = (3 * norm_21 + norm_30) * ...

(norm_30 + norm_12) * ...

((norm_30 + norm_12)^2 - 3 * ...

(norm_21 + norm_03)^2) + ...

(norm_30 - 3 * norm_12) * ...

(norm_21 + norm_03) * ...

(3 * (norm_30 + norm_12)^2 - (norm_21 + norm_03)^2);

Akhir Program

Contoh penggunaan fungsi momenhu:

>> format('long');

>> Img = im2bw(imread('C:\Image\guppi-1.png'),0.5);

>> X = momenhu(Img)

X =

scalar structure containing the fields:

m1 = 0.237749187513244

m2 = 0.0147674602596600

m3 = 0.00229069589208390

m4 = 0.00135857111738100

m5 = 3.52803525223293e-006

m6 = 1.33488327285475e-004

m7 = 4.00783048172902e-006

>>

Page 42: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

616 Pengolahan Citra Teori dan Aplikasi

Contoh hasil perhitungan ketujuh momen Hu untuk sejumlah objek dapat

dilihat di Tabel 12.5. Di tabel tersebut terlihat bahwa penyekalaan, transalasi, dan

rotasi pada ikan menghasilkan nilai-nilai yang hampir sama.

Tabel 12.5 Fitur yang memanfaatkan momen Hu

Objek Fitur

ikan-1.png

∅1 = 0.206371

∅2 = 0.013207

∅3 = 0.000172

∅4 = 0.000155

∅5 = 0.000000034

∅6 = 0.000016756

∅7 = 0.000000049

ikan-2.png

∅1 = 0.206370

∅2 = 0.013207

∅3 = 0.000172

∅4 = 0.000155

∅5 = 0.000000034

∅6 = 0.000016756

∅7 = 0.000000049

ikan-3.png

∅1 = 0.206774

∅2 = 0.013390

∅3 = 0.000173

∅4 = 0.000156

∅5 = 0.000000035

∅6 = 0.000017012

∅7 = 0.000000050

ikan-4.png

∅1 = 0.2062254

∅2 = 0.0131368

∅3 = 0.0005498

∅4 = 0.0001549

∅5 = 0.000000034

∅6 = 0.000016712

∅7 = -

0.000000042

ikan-5.png

∅1 = 0.2058433

∅2 = 0.0128627

∅3 = 0.0001610

∅4 = 0.0001575

∅5 = 0.000000036

∅6 = 0.000016946

∅7 = 0.000000050

guppi-1.png

∅1 = 0.2377492

∅2 = 0.0147675

∅3 = 0.0022907

∅4 = 0.0013586

∅5 = 0.000003528

∅6 = 0.000133488

∅7 = 0.000004008

kunci.png

∅1 = 0.2824261

∅2 = 0.0152452

∅3 = 0.0086765

∅4 = 0.0000221

∅5 = 0.000000009

∅6 = 0.000002673

∅7 = 0.000000001

12.9 Momen Jarak ke Pusat

Apabila objek berupa kontur saja (misalnya berupa bentuk suatu pulau),

momen dapat dihitung melalui jarak titik pada kontur terhadap pusat massa

(Rangayyan, 2005). Dalam hal ini, momen ke-p untuk sederet jarak d(n)

didefinisikan sebagai berikut:

Page 43: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 617

𝑚𝑝 =1

𝑁∑ |𝑑(𝑛)|𝑝𝑁

𝑖=1 (12.16)

Momen pusat ke-p didefinisikan sebagai berikut:

𝑀𝑝 =1

𝑁∑ |𝑑(𝑛) − 𝑚1)|𝑝𝑁

𝑖=1 (12.17)

Selanjutnya, momen-momen yang ternormalisasi didefinisikan sebagai

𝑚𝑝̅̅ ̅̅ =𝑚𝑝

(𝑀2)𝑝/2 (12.18)

𝑀𝑝̅̅ ̅̅ =

𝑀𝑝

(𝑀2)𝑝/2 (12.19)

Menurut Gupta dan Srinath (Rangayyan, 2005), momen ternormalisasi

𝑚𝑝 dan 𝑚𝑝 bersifat bebas terhadap penyekalaan, rotasi, maupun translasi. Namun,

mengingat momen berorde tinggi peka terhadap derau, mereka menganjurkan tiga

fitur yang didefinisikan seperti berikut:

𝐹1 =√𝑀2

𝑚1=

√1

𝑁∑ |𝑑(𝑛)−𝑚1)|2𝑁

𝑖=1

1

𝑁∑ 𝑑(𝑛)𝑁

𝑖=1

(12.20)

𝐹2 =𝑀3

(𝑀2 )32

=1

𝑁∑ |𝑑(𝑛)−𝑚1 )|3𝑁

𝑖=1

{1

𝑁∑ |𝑑(𝑛)−𝑚1 )|2𝑁

𝑖=1}

3/2 (12.21)

𝐹3 =𝑀4

(𝑀2 )2 =1

𝑁∑ |𝑑(𝑛)−𝑚1 )|4𝑁

𝑖=1

{1

𝑁∑ |𝑑(𝑛)−𝑚1 )|2𝑁

𝑖=1}

2 (12.22)

Menurut Rangayyan (2005), studi yang dilakukan oleh Shen, dkk.

menunjukkan bahwa F2 dan F3 tidak menunjukkan perbedaan yang signifikan

untuk bentuk yang berbeda dan F2 ternyata berubah secara nyata terhadap

penyekalaan dan rotasi. Oleh karena itu, mereka melakukan modifikasi terhadap

F2 dan F3 sebagai berikut:

𝐹2′ =

√𝑀33

𝑚1=

√1

𝑁∑ |𝑑(𝑛)−𝑚1 )|3𝑁

𝑖=13

1

𝑁∑ 𝑑(𝑛)𝑁

𝑖=1

(12.23)

𝐹3′ =

√𝑀44

𝑚1=

√1

𝑁∑ |𝑑(𝑛)−𝑚1 )|4𝑁

𝑖=14

1

𝑁∑ 𝑑(𝑛)𝑁

𝑖=1

(12.24)

Fakta yang menarik, kumpulan fitur {F1, F2’, F3’} mempunyai sifat-sifat

seperti berikut (Rangayyan, 2005).

Page 44: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

618 Pengolahan Citra Teori dan Aplikasi

Semua fitur dapat diperbandingkan secara langsung.

F3’ menyatakan kekasaran kontur yang lebih baik daripada F3. Semakin

besar nilai, semakin besar kekasaran kontur.

Temuan yang juga menarik, menurut Rangayyan, kombinasi mf = F3’ – F1

merupakan indikator yang bagus untuk mengungkapkan kekasaran bentuk.

Fungsi mjarakpusat berikut merupakan implementasi untuk

menghitung fitur-fitur yang telah dijelaskan di atas.

function [Fitur] = mjarakpusat(F)

% FJARAKPUSAT Menghitung fitur momen jarak ke pusat.

% Masukan: F = Citra biner.

% p = Orde momen

% Keluaran: Fitur = fitur citra

Fitur.F1 = sqrt(momen_pusat_ke_p(F, 2)) / momen_ke_p(F, 1);

Fitur.F2 = momen_pusat_ke_p(F, 3) / (momen_ke_p(F, 2)^1.5);

Fitur.F3 = momen_pusat_ke_p(F, 4) / (momen_ke_p(F, 2)^2);

Fitur.F2a = momen_pusat_ke_p(F, 3)^(1/3) / momen_ke_p(F, 1);

Fitur.F3a = momen_pusat_ke_p(F, 4)^(1/4) / momen_ke_p(F, 1);

Fitur.mf = Fitur.F3a - Fitur.F1;

function [momen] = momen_pusat_ke_p(F, p)

momen_p = momen_ke_p(F, p);

momen_1 = momen_ke_p(F, 1);

Kontur = inbound_tracing(F);

[m, n] = size(F);

[xp, yp] = centroid(F);

jum = length(Kontur);

% Hitung momen pusat ke-p

momen = 0;

for i=1 : jum

jarak = sqrt((Kontur(i,2)-xp)^2 + (Kontur(i,1)-yp)^2);

momen = momen + abs(jarak - momen_1) ^ p;

end

momen = momen / jum;

Program : mjarakpusat.m

Page 45: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 619

function [momen] = momen_ke_p(F, p)

% Hitung momen ke-p

Kontur = inbound_tracing(F);

[m, n] = size(F);

[xp, yp] = centroid(F);

jum = length(Kontur);

momen = 0;

for i=1 : jum

jarak = sqrt((Kontur(i,2)-xp)^2 + (Kontur(i,1)-yp)^2);

momen = momen + jarak ^ p;

end

momen = momen / jum;

Akhir Program

Contoh penggunaan fungsi mjarakpusat:

>> Img = im2bw(imread('C:\Image\kunci.png'), 0.5);

>> mjarakpusat(Img)

ans =

scalar structure containing the fields:

F1 = 0.358466495430004

F2 = 0.0501126615340028

F3 = 0.0239217027470453

F2a = 0.391651322336318

F3a = 0.417780786529233

mf = 0.0593142910992286

>>

Contoh hasil perhitungan momen jarak ke pusat untuk sejumlah objek

dapat dilihat pada Tabel 12.6. Pada tabel tersebut terlihat bahwa penyekalaan,

transalasi, dan rotasi pada ikan menghasilkan nilai yang hampir sama.

Page 46: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

620 Pengolahan Citra Teori dan Aplikasi

Tabel 12.6 Fitur momen ke jarak pusat

Objek Fitur

ikan-1.png

F1 = 0.2526 F2 = 0.0195

F3 = 0.0070

F2’ = 0.2776 F3’ = 0.2988

Mf = 0.0463

ikan-2.png

F1 = 0.2526 F2 = 0.0195

F3 = 0.0070

F2’ = 0.2776 F3’ = 0.2988

Mf = 0.0463

ikan-3.png

F1 = 0.2542 F2 = 0.0199

F3 = 0.0073

F2’ = 0.2796 F3’ = 0.3012

Mf = 0.0470

ikan-4.png

F1 = 0.2484

F2 = 0.0189 F3 = 0.0069

F2’ = 0.2744

F3’ = 0.2969 Mf = 0.0485

ikan-5.png

F1 = 0.2422

F2 = 0.0173 F3 = 0.0059

F2’ = 0.2658

F3’ = 0.2857 Mf = 0.0434

guppi-1.png

F1 = 0.3372

F2 = 0.0541 F3 = 0.0322

F2’ = 0.3991

F3’ = 0.4469 Mf = 0.1096

kunci.png

F1 = 0.3585

F2 = 0.0501 F3 = 0.0239

F2’ = 0.3917

F3’ = 0.4178 Mf = 0.0593

12.10 Momen Zernike

Momen Zernike diperkenalkan oleh F. Zernike dalam bukunya berjudul

Physica yang diterbitkan pada tahun 1934. Penerapan momen Zernike untuk

pengolahan citra diperkenalkan pertama kali oleh M.R. Teague pada tahun 1980

(Chen, dkk., 2005). Hasilnya berupa Zernike moment descriptors (ZMD). Momen

ini mempunyai kelebihan seperti berikut (Migquiang, dkk., 2008):

bersifat independen terhadap pemutaran (rotasi);

andal terhadap derau dan variasi minor dalam bentuk objek;

memiliki redundansi informasi yang minimum.

Page 47: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 621

Walaupun begitu, momen ini memiliki kelemahan seperti berikut.

perlu normalisasi ruang koordinat (dalam hal ini, harus dilakukan

pengubahan ke bentuk lingkaran x2 + y2 < 1).

perlu penggunaan hampiran penjumlahan mengingat aslinya menggunakan

integral. Hal ini berkontribusi dalam memberikan kesalahan numerik, yang

memberikan pengaruh terhadap sifat ketidakbergantungan pada rotasi.

perlu dilakukan normalisasi terhadap translasi dan penyekalaan mengingat

momen Zernike tidak bebas dari penggeseran dan penyekalaan.

Momen Zernike didasarkan pada polinomial Zernike yang bersifat

ortogonal terhadap lingkaran x2 + y2 < 1, yang dinyatakan sebagai berikut:

𝑉𝑝𝑞(𝑥,𝑦) = 𝑈𝑝𝑞 (𝑟 𝑐𝑜𝑠𝜃, 𝑟 sin 𝜃) = 𝑅𝑝𝑞 (𝑟).exp (𝑗𝑞𝜃) (12.25)

dengan 𝑟 adalah radius dari (y,x) ke pusat massa (centroid), 𝜃 adalah sudut antara

r dan sumbu x (lihat Gambar 12.26), dan Rpq(r) adalah polinomial radial ortogonal

seperti berikut:

𝑅𝑝𝑞 (𝑟) = ∑ (−1)𝑠 (𝑝−𝑠)!

𝑠!(𝑝+|𝑞|

2−𝑠) !(

𝑝−|𝑞|

2−𝑠)!

𝜌𝑝−2𝑠(𝑝−|𝑞 |)/2

𝑠=0 (12.26)

Dalam hal ini, n = 0,1,2,….; 0 < |q| < n, j= √−1, , dan p-|q| bernilai genap.

Beberapa polinomial yang digunakan untuk memperoleh momen Zernike

ditunjukkan pada Tabel 12.7 (Flusser, dkk., 2009). Polinomial Zernike hingga orde

12 dibahas pada Duin, dkk. (2007). Adapun sembilan polinomial Zernike pertama

ditunjukkan pada Gambar 12.17.

Page 48: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

622 Pengolahan Citra Teori dan Aplikasi

Centroid

Lingkaran:

x2 + y2 < 1

r

Gambar 12.16 Citra dalam lingkaran yang memenuhi persamaan x2 + y2 < 1

Tabel 12.7 Polinomial yang digunakan pada momen Zernike

𝑅00 (𝑟) = 1 𝑅66 (𝑟) = 𝑟6

𝑅11(𝑟) = 𝑟 𝑅71 (𝑟) = 35𝑟6 − 60𝑟5 + 30𝑟3 − 4𝑟

𝑅20 (𝑟) = 2𝑟2 − 1 𝑅73 (𝑟) = 21𝑟7 − 30𝑟5 + 10𝑟3 𝑅22 (𝑟) = 𝑟2 𝑅75 (𝑟) = 7𝑟7 − 6𝑟5

𝑅31 (𝑟) = 3𝑟2 − 2𝑟 𝑅77 (𝑟) = 7𝑟7

𝑅33 (𝑟) = 𝑟3 𝑅80 (𝑟) = 70𝑟8 − 140𝑟6 + 90𝑟4 − 20𝑟2 + 1

𝑅40 (𝑟) = 6𝑟4 − 6𝑟2 + 1 𝑅82 (𝑟) = 56𝑟8 − 105𝑟6 + 60𝑟4 − 10𝑟2

𝑅42 (𝑟) = 4𝑟4 − 3𝑟2 𝑅84 (𝑟) = 28𝑟8 − 42𝑟6 + 15𝑟4

𝑅44 (𝑟) = 𝑟4 𝑅86 (𝑟) = 8𝑟8 − 7𝑟6

𝑅51 (𝑟) = 10𝑟5 − 12𝑟2 + 3𝑟 𝑅88 (𝑟) = 𝑟8

𝑅53 (𝑟) = 5𝑟5 − 4𝑟3 𝑅91(𝑟) = 126𝑟9 − 280𝑟7 + 210𝑟5 + 60𝑟3

+ 5𝑟

𝑅55 (𝑟) = 𝑟5 𝑅93(𝑟) = 84𝑟9 − 168𝑟7 + 105𝑟5 − 20𝑟3

𝑅60 (𝑟) = 20𝑟6 − 30𝑟4 + 12𝑟2

− 1 𝑅95(𝑟) = 36𝑟9 − 56𝑟7 + 21𝑟5

𝑅62 (𝑟) = 15𝑟6 − 20𝑟4 + 6𝑟2 𝑅97(𝑟) = 9𝑟9 − 8𝑟7

𝑅64 (𝑟) = 6𝑟6 − 5𝑟4 𝑅99(𝑟) = 𝑟9

Page 49: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 623

R00

R40 R11

R20

R22 R33

R44

R42

R31

Gambar 12.17 Sembilan polinomial Zernike pertama,

berdasarkan pada Tabel 12.7

Momen Zernike berorde p dengan pengulangan fungsi kontinu f(y, x)

sebanyak q dinyatakan sebagai berikut:

𝑍𝑝𝑞 =𝑝+1

𝜋∫ ∫ 𝑓(𝑦, 𝑥). 𝑉∗

𝑝𝑞(𝑦,𝑥) 𝑑𝑦 𝑑𝑥; 𝑥 2 + 𝑦2 ≤ 1

𝑥

𝑦 (12.27)

Dalam hal ini, V* menyatakan konjugat, sedangkan Vpq(y,x) dinamakan sebagai

fungsi basis Zernike berorde p dengan pengulangan sebanyak q. Fungsi basis

berupa

𝑉𝑝𝑞(𝑦,𝑥) = 𝑉𝑝𝑞(𝜌,𝜃) = 𝑅𝑝𝑞 (𝜌).exp (𝑗𝑞𝜃) (12.28)

Dengan p berupa bilangan bulat nol atau positif dan n p-|q| bernilai genap dan |q| <

p.

Apabila f(y,x) adalah citra digital, persamaan di atas dapat dihampiri

dengan

Page 50: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

624 Pengolahan Citra Teori dan Aplikasi

𝑍𝑝𝑞 =𝑝+1

𝜋∑ ∑ 𝑓(𝑦,𝑥). 𝑉∗

𝑝𝑞 (𝑦, 𝑥)𝑥𝑦 (12.29)

Gambar 12.18 menunjukkan 16 bentuk pertama fungsi Zernike.

Gambar 12.18 Enam belas fungsi Zernike yang pertama

Apabila citra diputar dengan sudut sebesar , fungsi-fungsi momen

Zernike Z’ berupa

𝑍′𝑝𝑞 = 𝑍𝑝𝑞 . 𝑒−𝑗𝑞𝜑 (12.30)

Persamaan di atas menyatakan bahwa apabila besaran momen Zernike saja yang

digunakan akan diperoleh fitur yang tidak bergantung pada rotasi.

Polinomial yang digunakan pada momen Zernike dapat digunakan untuk

menyatakan bentuk geometrik objek. Polinomial orde rendah berguna untuk

memperoleh fitur global suatu bentuk, sedangkan polinomial orde tinggi dapat

menangkap rincian bentuk atau fitur lokal (Choras, 2007). Dalam praktik,

pemilihan jumlah momen Zernike yang tepat perlu ditentukan. Sebagai contoh,

Zhang (2002) menggunakan 36 momen untuk melakukan pencarian citra, dengan

mempertimbangkan efisiensi pemrosesan dan keakuratan.

Page 51: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 625

Proses untuk melakukan momen Zernike ditunjukkan pada Gambar 12.2.

Pertama-tama, citra yang akan diproses perlu diubah ke bentuk biner. Kemudian,

dilakukan normalisasi penyekalaan dan translasi, mengingat momen Zernike

bergantung pada kedua hal tersebut. Setelah momen Zernike diperoleh, perlu

dilaksanakan normalisasi agar nilainya berada antara [0 1].

Citra

Biner

Normalisasi

Penyekalaan

Normalisasi

Translasi

Perhitungan

ZMD

Normalisasi

ZMD

Gambar 12.19 Mekanisme perhitungan ZMD

Normalisasi penyekalaan dilakukan didasarkan pada persamaan

𝑥 ′ = 𝑥 √𝛽

𝑚00, 𝑦′ = 𝑦 √

𝛽

𝑚00 (12.31)

Komponen √𝛽

𝑚00 adalah faktor penyekala. Dalam hal ini, adalah suatu nilai yang

telah ditentukan terlebih dulu (pada contoh di belakang, dipilih sebesar 20000)

dan m0,0 (momen spasial orde (0,0)) tidak lain adalah luas objek.

Normalisasi translasi dilakukan dengan cara menggeser pusat massa ke

tengah citra. Dalam hal ini, nilai X dan Y pusat massa dihitung melalui rumus:

𝑥𝑐 =𝑚10

𝑚00, 𝑦𝑐 =

𝑚01

𝑚00 (12.32)

Pada persamaan di atas, (yc, xc) adalah sentroid, m1,0 adalah momen spasial order

(1,0) dan m1,0 adalah momen spasial order (0,1). Dengan demikian, nilai x dan y

baru dapat diperoleh melalui

Page 52: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

626 Pengolahan Citra Teori dan Aplikasi

𝑥 ′ = 𝑥𝑐 −𝑁

2, 𝑦′ = 𝑦𝑐 −

𝑀

2 (12.33)

dengan M adalah tinggi citra dan N adalah lebar citra.

Normalisasi ZMD dilakukan dengan membagi momen citra dengan m0,0.

Jadi,

𝑍𝑝𝑞′ =

𝑍𝑝𝑞

𝑚00 (12.34)

Pengaturan citra ke dalam lingkaran yang memenuhi persamaan x2 + y2 <

1 dilakukan dengan membuat matriks yang berukuran sama dengan ukuran citra.

Selanjutnya, absis dan ordinat dinormalisasi agar berada di dalam jangkauan [-1

1]. Hal ini dapat dilakukan melalui perintah seperti berikut:

selang = 2 / (m-1);

ii = 0;

for i=-1 : selang : 1

ii = ii + 1;

jj = 0;

for j=-1 : selang : 1;

jj = jj + 1;

X(ii, jj) = j;

Y(ii, jj) = i;

end

end

Dalam hal ini, m adalah tinggi atau lebar citra (karena tinggi dan lebar citra dibuat

sama).

Berdasarkan koordinat yang tercantum dalam X dan Y di atas, posisi setiap

piksel di dalam citra yang berada dalam lingkaran dapat diperoleh. Dengan

demikian, informasi dan dapat dihitung berdasarkan posisi piksel terhadap

pusat lingkaran.

Implementasi momen Zernike dapat dilihat pada fungsi zermoment.

Page 53: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 627

function A = zermoment (F, orde, tampil)

% ZERMOMENT Menghasilkan koefisien momen Zernike.

% Masukan:

% F = Citra biner

% orde = order momen Zernike

% tampil = true untuk menampilkan gambar

if nargin < 3

tampil = false;

end

% Salin yang ada pada kotak pembatas

[min_x, max_x, min_y, max_y] = kotak_pembatas(F);

B = F(min_y:max_y, min_x:max_x);

[m, n] = size(B);

beta = 20000; % Parameter untuk mengatur

% penyekalaan citra

luas = sum(sum(B)); % Luas objek

% Tentukan citra yang memenuhi perbandingan beta

% dengan luas citra B

m1 = fix(m * sqrt(beta/luas));

n1 = fix(n * sqrt(beta/luas));

C = imresize(B, [m1, n1]);

[m, n] = size(C);

% Atur ukuran gambar untuk kepentingan

% penyajian dalam bentuk lingkaran

maks_mn = max(m, n);

m_baru = round(sqrt(2) * maks_mn);

n_baru = m_baru;

D = zeros(m_baru, n_baru);

for i=1 : m

for j=1: n

D(i,j) = C(i,j);

end

end

m = m_baru;

n = n_baru;

% Peroleh pusat massa dan letakkan di tengah citra

[xc, yc] = centroid(D);

xc = round(xc);

Program : zermoment.m

Page 54: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

628 Pengolahan Citra Teori dan Aplikasi

yc = round(yc);

xc = xc - round((n/2));

yc = yc - round((m/2));

% Atur gambar ke G

G = zeros(m,n);

for i=1 : m

for j=1: n

if ~((j-xc< 1) || (i-yc<1) || (i-yc > m) || (j-xc > n))

G(i-yc, j-xc)= D(i,j);

end

end

end

% Bentuk grid untuk menentukan koordinat

% dengan tengah citra sebagai titik pusat

selang = 2 / (m-1);

ii = 0;

for i=-1 : selang : 1

ii = ii + 1;

jj = 0;

for j=-1 : selang : 1;

jj = jj + 1;

X(ii, jj) = j;

Y(ii, jj) = i;

end

end

% Hitung sudut, rho, dan lingkaran

Theta = zeros(m, n);

Rho = zeros(m, n);

L = zeros(m, n);

for i=1 : m

for j=1: n

Theta(i,j) = atan2(Y(i,j), X(i,j));

if Theta(i,j) < 0

Theta(i,j) = Theta(i,j) + 2 * pi;

end

jarak2 = X(i,j)^2 + Y(i,j)^2;

Rho(i,j) = sqrt(jarak2);

L(i,j) = jarak2;

end

end

% Bentuk lingkaran

DidalamL = find(L <= 1);

Lingkaran = zeros(m,n);

Lingkaran(DidalamL) = 1;

luas = 0;

for i=1 : m

for j=1: n

if Lingkaran(i,j) == 1

luas = luas + 1;

end

end

end

Page 55: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 629

% Hitung Koefisien momen Zernike

A = [];

indeks = 0;

for p = 2: orde

for q = p:-2:0

zpq_real = 0;

zpq_imaj = 0;

for i=1 : m

for j=1 : n

if Lingkaran(i,j) == 1

vpq = fb_zernike(p,q, Rho(i,j));

zpq_real = zpq_real + G(i,j)* vpq * ...

cos(q * Theta(i,j));

zpq_imaj = zpq_imaj + G(i,j)* vpq * ...

sin(q * Theta(i,j));

end

end

end

zpq_real = zpq_real * (p+1)/pi;

zpq_imaj = zpq_imaj * (p+1)/pi;

indeks = indeks + 1;

A(indeks) = sqrt(zpq_real^2 + zpq_imaj^2);

end;

end;

% Normalsiasi koefisien

m00 = momen_spasial(G, 0, 0);

A = A ./ m00;

% Tampilkan gambar kalau memang diminta

if tampil == true

close all;

figure;

subplot(2,2,1);

imshow(B);

title('Citra dalam kotak pembatas');

subplot(2,2,2);

imshow(G);

title('Hasil penyekalaan dan translasi');

subplot(2,2,3);

imshow(1-Lingkaran+G);

title('Citra dalam lingkaran');

subplot(2,2,4);

plot(A);

title('Deskriptor momen Zernike');

end

function p = fb_zernike (n,l,rho)

% Menghitung fungsi basis Zernike

p = 0;

if n == 2

Page 56: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

630 Pengolahan Citra Teori dan Aplikasi

switch (l)

case 0, p = 2*(rho.^2)-1;

case 2, p = (rho.^2);

end;

elseif n == 3

switch (l)

case 1, p = 3*(rho.^3)-2*rho;

case 3, p = (rho.^3);

end;

elseif n == 4

switch (l)

case 0, p = 6*(rho.^4)-6*(rho.^2)+1;

case 2, p = 4*(rho.^4)-3*(rho.^2);

case 4, p = (rho.^4);

end;

elseif n == 5

switch (l)

case 1, p = 10*(rho.^5)-12*(rho.^3)+3*rho;

case 3, p = 5*(rho.^5)- 4*(rho.^3);

case 5, p = (rho.^5);

end;

elseif n == 6

switch (l)

case 0, p = 20*(rho.^6)-30*(rho.^4)+12*(rho.^2)-1;

case 2, p = 15*(rho.^6)-20*(rho.^4)+ 6*(rho.^2);

case 4, p = 6*(rho.^6)- 5*(rho.^4);

case 6, p = (rho.^6);

end;

elseif n == 7

switch (l)

case 1, p = 35*(rho.^7)-60*(rho.^5)+30*(rho.^3)-4*rho;

case 3, p = 21*(rho.^7)-30*(rho.^5)+10*(rho.^3);

case 5, p = 7*(rho.^7)- 6*(rho.^5);

case 7, p = (rho.^7);

end;

elseif n == 8

switch (l)

case 0, p = 70*(rho.^8)-140*(rho.^6)+...

90*(rho.^4)-20*(rho.^2)+1;

case 2, p = 56*(rho.^8)-105*(rho.^6)+ ...

60*(rho.^4)-10*(rho.^2);

case 4, p = 28*(rho.^8)- 42*(rho.^6)+15*(rho.^4);

case 6, p = 8*(rho.^8)- 7*(rho.^6);

case 8, p = (rho.^8);

end;

elseif n == 9

switch (l)

case 1, p = 126*(rho.^9)-280*(rho.^7)+ ...

210*(rho.^5)-60*(rho.^3)+5*rho;

case 3, p = 84*(rho.^9)-168*(rho.^7)+ ...

105*(rho.^5)-20*(rho.^3);

case 5, p = 36*(rho.^9)- 56*(rho.^7)+ 21*(rho.^5);

case 7, p = 9*(rho.^9)- 8*(rho.^7);

case 9, p = (rho.^9);

end;

elseif n == 10

switch (l)

case 0, p = 252*(rho.^10)-630*(rho.^8)+ ...

560*(rho.^6)-210*(rho.^4)+30*(rho.^2)-1;

Page 57: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 631

case 2, p = 210*(rho.^10)-504*(rho.^8)+ ...

420*(rho.^6)- ...

140*(rho.^4)+15*(rho.^2);

case 4, p = 129*(rho.^10)-252*(rho.^8)+ ...

168*(rho.^6)- ...

35*(rho.^4);

case 6, p = 45*(rho.^10)- 72*(rho.^8)+ 28*(rho.^6);

case 8, p = 10*(rho.^10)- 9*(rho.^8);

case 10, p = (rho.^10);

end;

elseif n == 11

switch (l)

case 1, p = 462*(rho.^11)-1260*(rho.^9)+ ...

1260*(rho.^7)- ...

560*(rho.^5)+105*(rho.^3)-6*rho;

case 3, p = 330*(rho.^11)- 840*(rho.^9)+ ...

756*(rho.^7)- ...

280*(rho.^5)+ 35*(rho.^3);

case 5, p = 165*(rho.^11)- 360*(rho.^9)+ ...

252*(rho.^7)- 56*(rho.^5);

case 7, p = 55*(rho.^11)- 90*(rho.^9)+ 36*(rho.^7);

case 9, p = 11*(rho.^11)- 10*(rho.^9);

case 11, p = (rho.^11);

end;

elseif n == 12

switch (l)

case 0, p = 924*(rho.^12)-2772*(rho.^10)+ ...

3150*(rho.^8)- ...

1680*(rho.^6)+420*(rho.^4)-42*(rho.^2)+1;

case 2, p = 792*(rho.^12)-2310*(rho.^10)+ ...

2520*(rho.^8)- ...

1260*(rho.^6)+280*(rho.^4)-21*(rho.^2);

case 4, p = 495*(rho.^12)-1320*(rho.^10)+ ...

1260*(rho.^8)- ...

504*(rho.^6)+ 70*(rho.^4);

case 6, p = 220*(rho.^12)- 495*(rho.^10)+ ...

360*(rho.^8)- ...

84*(rho.^6);

case 8, p = 66*(rho.^12)- 110*(rho.^10)+45*(rho.^8);

case 10, p = 12*(rho.^12)- 11*(rho.^10);

case 12, p = (rho.^12);

end;

end;

function [min_x, max_x, min_y, max_y] = kotak_pembatas(F)

% Mencari koordinat kotak yang membatasi

% citra F

[m0, n0] = size(F);

min_y = m0;

max_y = 1;

min_x = n0;

max_x = 1;

for i=1 : m0

for j=1: n0

if F(i,j) == 1

if min_y > i

min_y = i;

end

Page 58: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

632 Pengolahan Citra Teori dan Aplikasi

if max_y < i

max_y = i;

end

if min_x > j

min_x = j;

end

if max_x < j

max_x = j;

end

end

end

end

Akhir Program

Contoh penggunaan fungsi zermoment:

>> Img = im2bw(imread('C:\Image\ikan-4.png'), 0.5);

>> X = zermoment(Img,4,true)

X =

0.087641 0.585965 0.013469 0.042353 0.050947

0.191575 0.403293

>>

Pada contoh di atas, argumen kedua yang berupa nilai 4 menentukan orde

polinomial dan argumen ketiga untuk menentukan fungsi akan menghasilkan

gambar. Argumen ketiga dapat ditiadakan. Contoh gambar yang dihasilkan oleh

zermoment ditunjukkan pada Gambar 12.20.

Page 59: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 633

Gambar 12.20 Visualisasi pemrosesan momen Zernike

Hasil momen Zernike dengan orde 4 untuk berbagai citra diperlihatkan

pada Tabel 12.8.

Tabel 12.8 Fitur momen Zernike orde 4

Objek Fitur

ikan-1.png

Z20 = 0,067489 Z22 = 0,655700

Z31 = 0,015904 Z33 = 0,014320

Z40 = 0,031014 Z42 = 0,187538

Z44 = 0,575370

ikan-2.png

Z20 = 0,067489 Z22 = 0,655700

Z31 = 0,015904 Z33 = 0,014320

Z40 = 0,031014 Z42 = 0,187538

Z44 = 0,575370

ikan-3.png

Z20 = 0,066243

Z22 = 0,634994 Z31 = 0,014238 Z33 = 0,008975

Z40 = 0,030826

Z42 = 0,182968 Z44 = 0,552235

Page 60: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

634 Pengolahan Citra Teori dan Aplikasi

Objek Fitur

ikan-4.png

Z20 = 0,087641

Z22 = 0,585965 Z31 = 0,013469 Z33 = 0,042353

Z40 = 0,050947

Z42 = 0,191575 Z44 = 0,403293

ikan-5.png

Z20 = 0,065993

Z22 = 0,655143 Z31 = 0,008639 Z33 = 0,036051

Z40 = 0,029108

Z42 = 0,187842 Z44 = 0,570436

guppi-1.png

Z20 = 0,073650

Z22 = 0,611287 Z31 = 0,058099

Z33 = 0,058516

Z40 = 0,034444

Z42 = 0,180690 Z44 = 0,470811

kunci.png

Z20 = 0,099800 Z22 = 0,440984 Z31 = 0,112749

Z33 = 0,010853

Z40 = 0,015126 Z42 = 0,192140 Z44 = 0,122398

12.11 Polar Fourier Transform

Peranan alihragam Fourier untuk membentuk deskriptor telah dibahas di

depan. Selain yang telah dibahas, sebenarnya terdapat beberapa turunan alihragam

Fourier. Salah satu turunan alihragam Fourier dalam koordinat polar dinamakan

PFT2 (Polar Fourier Transform versi 2), yang diperkenalkan oleh Zhang (2002).

PFT2 ini digunakan untuk kepentingan temu kembali citra berdasarkan bentuk

objek. Hasil PFT berupa generic Fourier descriptor (GFD). Deskriptor diperoleh

dengan mula-mula memperlakukan citra polar ke bentuk citra persegi panjang dua

dimensi. Contoh dapat dilihat pada Gambar 12.21.

(a) Citra dalam ruang polar (b) Citra dalam ruang polar diubah ke ruang Kartesian

Gambar 12.21 Citra di dalam koordinat polar diubah

ke citra persegi panjang (Sumber: Zhang, 2002)

Page 61: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 635

Kelebihan PFT2 terhadap Fourier Descriptor (FD) kontur (Zhang, 2002):

a) tidak perlu mengetahui informasi kontur yang boleh saja tidak tersedia;

b) dapat menangkap isi dalam bentuk;

c) lebih andal terhadap variasi bentuk.

Adapun kelebihan terhadap ZMD:

a) mampu menangkap fitur bentuk baik pada arah radial maupun melingkar;

b) komputasi lebih sederhana;

c) lebih andal.

PFT mempunyai sifat yang tidak bergantung pada translasi. Hal ini

ditunjukkan pada Gambar 12.22.

(a) Pola1 (b) Pola 2 (pergeseran dari Pola 1)

(c) Spektra Fourier Pola1 (d) Spektra Fourier Pola 2

Gambar 12.22 Contoh yang menunjukkan PFT2 bersifat

tidak tergantung pergeseran (Sumber: Zhang, 2002)

PFT2 didefinisikan sebagai berikut:

𝑃𝐹2 (𝜌, ∅) = ∑ ∑ 𝑓(𝑟,𝜃𝑖 )exp [𝑗2𝜋(𝑟

𝑅𝜌 +

2𝜋

𝑇∅)]𝑖𝑟 (12.35)

dengan:

a) 0<r<R dan 𝜃𝑖= i(2𝜋/𝑇) (0< i <T);0< 𝜌<R, 0< ∅<T;

b) R adalah resolusi frekuensi radial;

Page 62: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

636 Pengolahan Citra Teori dan Aplikasi

c) T adalah resolusi frekuensi angular.

Cara untuk memproses dengan PFT2 seperti berikut. Misalnya, citra yang

akan diproses berupa I = {f(x, y); 0<x<M, 0<y<N}. Citra ini dikonversikan dari

ruang Kartesian ke ruang polar menjadi Ip = {f(r, 𝜃); 0<r<R, 0< 𝜃< 2𝜋 }, dengan

R adalah radius maksimum bentuk. Titik pusat ruang polar dijadikan sebagai pusat

bentuk dengan tujuan agar bentuk tidak tergantung pada translasi. Pusat bentuk

dihitung berdasarkan:

𝑥𝑐 =1

𝑁∑ 𝑥𝑁 −1

𝑥 =0 , 𝑦𝑐 =1

𝑀∑ 𝑦𝑀 −1

𝑦=0 (12.36)

Adapun (r, ) dihitung berdasarkan:

𝑟 = √(𝑥 − 𝑥𝑐)2 + (𝑦 − 𝑦𝑐)2, 𝜃 = 𝑎𝑟𝑐𝑡𝑎𝑛𝑦−𝑦𝑐

𝑥−𝑥𝑐 (12.37)

Ketidakbergantungan pada rotasi diperoleh dengan mengabaikan informasi fase

pada koefisien-koefisiennya sehingga yang tertinggal adalah besaran koefisien.

Adapun untuk memperoleh ketidakbergantungan pada skala, besaran pertama

dinormalisasi dengan luas lingkaran dan selanjutnya semua koefisien

dinormalisasi dengan koefisien pertama. Jadi, deskriptor bentuk yang didapatkan

berupa:

𝐺𝐹𝐷 = {𝑃𝐹(0,0)

2𝜋 𝑟2 ,𝑃𝐹(0,1)

𝑃𝐹(0,0), … ,

𝑃𝐹(0,𝑛)

𝑃𝐹(0,0), … ,

𝑃𝐹(𝑚,0)

𝑃𝐹(0,0), … ,

𝑃𝐹(𝑚,𝑛)

𝑃𝐹(0,0)} (12.38)

dengan m adalah jumlah maksimum frekuensi radial dan n adalah jumlah

frekuensi angular.

Implementasi untuk mendapatkan GFD dapat dilihat pada fungsi gfd

berikut.

Page 63: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 637

function [GFD] = gfd(F, nrad, nang)

% GFD Memperoleh nilai gfd atau koefisien PFT.

% Masukan: F = citra biner

% nrad = frekuensi radial

% nang = frekuensi angular

Kontur = inbound_tracing(F);

jum = length(Kontur);

[x_pusat, y_pusat] = centroid(F);

% Cari jarak terpanjang

rad_maks = 0;

for i=1 : jum

xi = Kontur(i,2); yi = Kontur(i, 1);

panjang = ((xi-x_pusat)^2+(yi-y_pusat)^2)^0.5;

if panjang > rad_maks

rad_maks = panjang;

end

end

% Tentukan frekuensi radial dan angular maksimum

if nargin < 3

m = 4; % Frekuensi radial maksimum

n = 6; % Frekuensi angular maksimum

else

m = nrad;

n = nang;

end

F = double(F);

[tinggi, lebar] = size(F);

for rad=0 : m

for ang=0 : n

FR(rad+1, ang+1) = 0;

FI(rad+1, ang+1) = 0;

for x=1 : lebar

for y=1: tinggi

radius = ((x-x_pusat)^2 + (y-y_pusat)^2)^.5;

theta = atan2((y-y_pusat),(x-x_pusat));

if (theta < 0)

theta = theta + 2 * 3.14;

end

FR(rad+1, ang+1) = FR(rad+1, ang+1) + ...

F(y, x) * ...

cos(2 * 3.14 * rad * ...

(radius / rad_maks) + ang * theta);

FI(rad+1, ang+1) = FI(rad+1, ang+1) - ...

Program : gfd.m

Page 64: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

638 Pengolahan Citra Teori dan Aplikasi

F(y, x) * ...

sin(2 * 3.14 * rad * ...

(radius / rad_maks) + ang * theta);

end

end

end

end

% Peroleh GFD

for rad=0 : m

for ang=0 : n

if (rad==0) && (ang==0)

dc = (FR(1,1)^2+FI(1,1)^2)^.5;

GFD(1) = dc /(pi * rad_maks^2);

else

GFD(rad * n+ang+1)=(FR(rad+1, ang+1)^2+ ...

FI(rad+1,ang+1)^2)^.5 / dc;

end

end

end

Akhir Program

Contoh penggunaan fungsi gfd:

>> Img = im2bw(imread('C:\Image\ikan-1.png'),0.5);

>> X = gfd(Img,4,6)

X =

Columns 1 through 6:

0.3950269 0.0205150 0.2590928 0.0179417 0.1771724

0.0650260

Columns 7 through 12:

0.4252236 0.0846727 0.1450364 0.0607695 0.1347511

0.0291150

Columns 13 through 18:

0.1481163 0.0858275 0.0024445 0.0706047 0.0357912

0.0445491

Page 65: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 639

Columns 19 through 24:

0.0933387 0.0168520 0.0384655 0.0171787 0.0299010

0.0500069

Columns 25 through 30:

0.0469270 0.0394526 0.0039343 0.0321431 0.0205917

0.0125721

Column 31:

0.0162803

>>

Pada contoh di atas,

gfd(Img,4,6)

berarti bahwa frekuensi radial maksimum sebesar 4 dan frekuensi radial angular

sebesar 6.

Contoh hasil 7 GFD pertama untuk berbagai citra yang menggunakan

frekuensi radial maksimum sebesar 4 dan frekuensi radial angular sebesar 6 dapat

dilihat pada Tabel 12.9.

Tabel 12.9 Fitur GFD frekuensi radial maksimum sebesar 4 dan

frekuensi radial angular sebesar 6

Objek Fitur

ikan-1.png

GFD1 = 0.395027

GFD2 = 0.020515 GFD3 = 0.259093

GFD4 = 0.017942

ikan-2.png

GFD1 = 0.395027 GFD2 = 0.020515 GFD3 = 0.259093

GFD4 = 0.017942

Page 66: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

640 Pengolahan Citra Teori dan Aplikasi

Objek Fitur

ikan-3.png

GFD1 = 0.396156

GFD2 = 0.020570 GFD3 = 0.261192 GFD4 = 0.017805

ikan-4.png

GFD1 = 0.393667

GFD2 = 0.020181 GFD3 = 0.258510

GFD4 = 0.019910

ikan-5.png

GFD1 = 0.396182 GFD2 = 0.021021 GFD3 = 0.255305

GFD4 = 0.020895

guppi-1.png

GFD1 = 0.262418 GFD2 = 0.073336

GFD3 = 0.303962 GFD4 = 0.249740

kunci.png

GFD1 = 0.386401

GFD2 = 0.003771 GFD3 = 0.346719 GFD4 = 0.291891

12.12 Kotak Pembatas

Kotak pembatas (bounding box) adalah kotak terkecil yang dapat

melingkupi sebuah objek. Kotak pembatas dibedakan menjadi dua buah: kotak

pembatas yang berorientasi citra dan kotak pembatas yang berorientasi pada objek

(Pratt, 2001). Perbedaan kedua kotak pembatas ditunjukkan pada Gambar 12.23.

(a) Kotak pembatas

berorientasi citra

(b) Kotak pembatas

berorientasi objek

Y

X

Gambar 12.23 Kotak pembatas

Page 67: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 641

Kotak pembatas berorientasi citra milik suatu area R dapat dinyatakan

dengan

𝐾𝑜𝑡𝑎𝑘𝑃𝑒𝑚𝑏𝑎𝑡𝑎𝑠(𝑅) = {ymin, ymax, xmin, xmax} (12.39)

Dalam hal ini, ymin menyatakan Y terkecil, ymax menyatakan Y terbesar, xmin

menyatakan X terkecil, dan xmax menyatakan X terbesar. Adapun tinggi dan lebar

kotak berupa:

𝑡𝑖𝑛𝑔𝑔𝑖 = 𝑦𝑚𝑎𝑥 − 𝑦𝑚𝑖𝑛, 𝑙𝑒𝑏𝑎𝑟 = 𝑥𝑚𝑎𝑥 − 𝑥𝑚𝑖𝑛 (12.40)

Pada kotak pembatas berorientasi objek, perhitungan tinggi dan lebar

kotak diawali dengan pencarian . Hal ini dilakukan dengan menggunakan rumus

berikut:

𝜃 =1

2𝑡𝑎𝑛−1 [

2𝜇1,1

𝜇2,0−𝜇0,2] (12.41)

dengan adalah momen pusat. Setelah orientasi diperoleh, piksel-piksel kontur

objek dihitung dengan menggunakan transformasi

𝛼 = 𝑥 cos 𝜃 + 𝑦 sin 𝜃, 𝛽 = −𝑥 sin 𝜃 + 𝑦 cos 𝜃 (12.42)

Dalam hal ini, mewakili absis dan mewakili ordinat. Lalu, min, max, min,

dan min dapat diperoleh dari semua nilai dan . Setelah itu, tinggi dan lebar

kotak dihitung melalui

𝑡𝑖𝑛𝑔𝑔𝑖 = 𝛽𝑚𝑎𝑥 − 𝛽𝑚𝑖𝑛, 𝑙𝑒𝑏𝑎𝑟 = 𝛼𝑚𝑎𝑥 − 𝛼𝑚𝑖𝑛 (12.43)

Fitur yang umum digunakan berupa perbandingan antara luas kotak

pembatas dengan luas area. Perhitungannya seperti berikut:

Page 68: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

642 Pengolahan Citra Teori dan Aplikasi

𝑟𝑎𝑠𝑖𝑜 𝑘𝑜𝑡𝑎𝑘 𝑝𝑒𝑚𝑏𝑎𝑡𝑎𝑠 𝑏𝑒𝑟𝑜𝑟𝑖𝑒𝑛𝑡𝑎𝑠𝑖 𝑐𝑖𝑡𝑟𝑎 =𝑙𝑢𝑎𝑠 𝑎𝑟𝑒𝑎 𝑜𝑏𝑗𝑒𝑘

(𝑦𝑚𝑎𝑥−𝑦𝑚𝑖𝑛)∗(𝑥𝑚𝑎𝑥 −𝑥𝑚𝑖𝑛) (12.44)

𝑟𝑎𝑠𝑖𝑜 𝑘𝑜𝑡𝑎𝑘 𝑝𝑒𝑚𝑏𝑎𝑡𝑎𝑠 𝑏𝑒𝑟𝑜𝑟𝑖𝑒𝑛𝑡𝑎𝑠𝑖 𝑜𝑏𝑗𝑒𝑘 =𝑙𝑢𝑎𝑠 𝑎𝑟𝑒𝑎 𝑜𝑏𝑗𝑒𝑘

(𝛼𝑚𝑎𝑥 −𝛼𝑚𝑖𝑛)∗(𝛽𝑚𝑎𝑥 −𝛽𝑚𝑖𝑛) (12.45)

Kedua rasio tersebut menghasilkan nilai antara 0 dan 1.

Contoh berikut menunjukkan perhitungan rasio kotak pembatas

berorientasi citra.

function [rasio, min_x, max_x, min_y, max_y] = bboxcitra(F)

% BBOXCITRA Mencari kotak terkecil yang melingkupi citra.

% Masukan: F = Citra berskala keabuan

% Keluaran: Nilai X dan Y terkecil dan terbesar

[m, n] = size(F);

min_y = m;

max_y = 1;

min_x = n;

max_x = 1;

for i=1 : m

for j=1: n

if F(i,j) == 1

if min_y > i

min_y = i;

end

if max_y < i

max_y = i;

end

if min_x > j

min_x = j;

end

if max_x < j

max_x = j;

end

end

end

end

luas = 0;

for i=1 : m

for j=1 : n

Program : bboxcitra.m

Page 69: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 643

if F(i,j) ~= 0

luas = luas + 1;

end

end

end

rasio = luas / ((max_y - min_y) * (max_x - min_x));

Akhir Program

Fungsi bboxcitra menghasilkan rasio dan juga nilai X dan Y terkecil dan

terbesar. Contoh pemakaiannya:

>>Img = im2bw(imread('C:\Image\ikan-3.png'),0.5);

>>[rasio, X1, X2, Y1, Y2] = bboxcitra(Img)

rasio = 0.59986

X1 = 54

X2 = 196

Y1 = 92

Y2 = 170

>>

Hasil di atas menyatakan kotak yang melingkupi objek mempunyai X terkecil

sama dengan 41, X terbesar sama dengan 204, Y terkecil sama dengan 28, dan Y

terbesar sama dengan 224. Adapun rasio kotak pembatas berorientasi citra berupa

0,536715913359209.

Contoh berikut menunjukkan perhitungan rasio kotak pembatas

berorientasi objek.

function [rasio, min_a, max_a, min_b, max_b] = bboxobjek(F)

% BBOXOBJEK Mencari kotak terkecil yang melingkupi citra.

% Masukan: F = Citra berskala keabuan yang

% mengandung suatu objek

% Keluaran: Nilai alpha dan beta terkecil dan terbesar

Program : bboxobjek.m

Page 70: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

644 Pengolahan Citra Teori dan Aplikasi

if nargin < 2

tampil = true;

end

% Cek citra biner atau tidak

Cek = find(F>1);

if ~isempty(Cek)

% Kalau F bukan citra biner

Kontur = inbound_tracing(im2bw(F));

else

Kontur = inbound_tracing(F);

end

jum = length(Kontur);

% Cari nilai alpha dan beta terbesar dan terkecil

max_a = 0;

min_a = 10^300;

max_b = 0;

min_b = min_a;

[xc,yc] = centroid(F);

theta = 0.5 * atan(2 * momen_pusat(F,1,1)/...

(momen_pusat(F,2,0) - momen_pusat(F,0,2)));

for i=1 : jum

x = Kontur(i, 2);

y = Kontur(i, 1);

alpha = x * cos(theta) + y * sin(theta);

beta = -x * sin(theta) + y * cos(theta);

if min_b > beta

min_b = beta;

end

if max_b < beta

max_b = beta;

end

if min_a > alpha

min_a = alpha;

end

if max_a < alpha

max_a = alpha;

end

end

% Hitung luas

[m, n] = size(F);

luas = 0;

for i=1 : m

for j=1 : n

if F(i,j) ~= 0

luas = luas + 1;

end

end

end

% Hitung rasio

Page 71: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 645

if luas == 0

rasio = 0;

else

rasio = luas / ((max_a - min_a) * (max_b - min_b));

end

Akhir Program

Contoh penggunaan bboxobjek:

>> Img = im2bw(imread('C:\Image\ikan-3.png'),0.5);

>> rasio = bboxobjek(Img)

rasio = 0.60112

>>

Contoh rasio berorientasi objek dan citra untuk berbagai citra dapat dilihat pada

Tabel 12.10.

Tabel 12.10 Rasio kotak pembatas berorientasi objek dan citra

Objek Rasio Berorientasi

Citra

Rasio Berorientasi

Objek

ikan-1.png

0.592211 0.593791

ikan-2.png

0.592211 0.593791

ikan-3.png

0.599856 0.601117

ikan-4.png

0.544270 0.590088

ikan-5.png 0.588815 0.590142

Page 72: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

646 Pengolahan Citra Teori dan Aplikasi

Objek Rasio Berorientasi

Citra

Rasio Berorientasi

Objek

guppy-1.png

0.522930 0.506971

kunci.png

0.536716 0.524068

1. Jelaskan pengertian tanda tangan kontur. Berikan ilustrasi untuk

menjelaskannya.

2. Manakah sifat berikut yang dipenuhi oleh tanda tangan kontur?

(a) Translasi

(b) Rotasi

(c) Penyekalaan

3. Jelaskan mekanisme deskriptor Fourier dalam mewakili bentuk dengan

menggunakan sejumlah titik.

4. Jelaskan istilah berikut.

(a) Convex hull

(b) Soliditas

(c) Konveksitas

5. Jelaskan pengertian proyeksi citra.

6. Apa kelebihan momen Hu dibandingkan dengan momen pusat?

7. Apa yang dimaksud dengan momen jarak ke pusat?

8. Berikan penjelasan singkat tentang prinsip kerja momen Zernike.

9. Berapa jumlah momen Zernike untuk orde:

(a) 4

Latihan

Page 73: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

Pemerolehan Fitur Bentuk dan Kontur 647

(b) 6

(c) 10

10. Apa keunggulan PFT terhadap momen Zernike?

11. Jelaskan perbedaan antara kotak pembatas berorientasi citra dan kotak

pembatas berorientasi objek? Fitur apa yang dapat diperoleh dari kedua kotak

pembatas tersebut?

12. Cobalah untuk membuat tanda tangan kontur agar dapat bersifat bebas

terhadap rotasi dan penyekalaan. Bantuan: Gunakan deskriptor Fourier untuk

membantu menyelesaikan masalah ini.

Page 74: BAB 12 · BAB 12 Ekstraksi Fitur Bentuk dan Kontur Setekah bab ini berakhir, diharapkan pembaca mendapatkan berbagai bahasan yang berhubungan dengan pemerolehan fitur bentuk

648 Pengolahan Citra Teori dan Aplikasi