BAB 13 - rizafennisya.files.wordpress.com · Pada proses ini, ... Analisis penginderaan jarak-jauh....

36
> BAB 13 Ekstraksi Fitur Tekstur Setelah bab ini berakhir, diharapkan pembaca dapat memahami berbagai bahasan berikut yang berhubungan dengan fitur tekstur dan mampu mempraktikkannya. Fitur tekstur Kategori tekstur Tekstur berbasis histogram Tekstur Laws Lacunarity GLCM

Transcript of BAB 13 - rizafennisya.files.wordpress.com · Pada proses ini, ... Analisis penginderaan jarak-jauh....

>

BAB 13

Ekstraksi

Fitur Tekstur

Setelah bab ini berakhir, diharapkan pembaca dapat

memahami berbagai bahasan berikut yang berhubungan

dengan fitur tekstur dan mampu mempraktikkannya.

Fitur tekstur

Kategori tekstur

Tekstur berbasis histogram

Tekstur Laws

Lacunarity

GLCM

650 Pengolahan Citra Teori dan Aplikasi

13.1 Pengantar Fitur Tekstur

Selain melibatkan fitur bentuk, tekstur banyak digunakan sebagai fitur

untuk temu kembali citra. Hal ini disebabkan beberapa objek mempunyai pola-

pola tertentu, yang bagi manusia mudah untuk dibedakan. Oleh karena itu,

diharapkan komputer juga dapat mengenali sifat-sifat seperti itu.

Dalam praktik, tekstur digunakan untuk berbagai kepentingan. Umumnya,

aplikasi tekstur dapat dibagi menjadi dua kategori. Pertama adalah untuk

kepentingan segmentasi. Pada proses ini, tekstur dipakai untuk melakukan

pemisahan antara satu objek dengan objek yang lain. Kedua adalah untuk

klasifikasi tekstur, yang menggunakan fitur-fitur tekstur untuk mengklasifikasi

objek. Beberapa contoh aplikasi tekstur disajikan di bawah ini (Tuceryan dan Jain,

1998).

Inspeksi secara otomatis pada industri tekstil, pengecatan mobil,

pemakaian karpet.

Analisis citra medis. Misalnya, tekstur digunakan untuk klasifikasi

penyakit paru-paru, diagnosis leukemia, dan pembedaan tipe-tipe sel darah

putih.

Analisis penginderaan jarak-jauh. Misalnya, tekstur dipakai untuk

kepentingan klasifikasi area tanah.

Sebelum membahas lebih lanjut mengenai tekstur, pengertian tekstur perlu

dijelaskan lebih dulu walaupun definisi struktur yang baku belum pernah

disepakati. Sebagai contoh, Kulkarni (1994) mendefinisikan tekstur sebagai

hubungan mutual antara nilai intensitas piksel-piksel yang bertetangga yang

berulang di suatu area yang lebih luas daripada jarak hubungan tersebut. Namun,

penjelasan seperti itu pun masih menyisakan ketidakmudahan untuk mengenali

pengulangan yang terjadi pada citra. Ada suatu pengulangan yang terkadang sulit

dijabarkan, tetapi mudah ditangkap oleh mata , seperti yang terdapat pada Gambar

13.1(a) dan Gambar 13.1(b). Hal ini berbeda dengan Gambar 13.1(c). Citra yang

disebut terakhir mempunyai sifat pengulangan yang mudah dilihat. Namun, pada

ketiga gambar tersebut, jelas bahwa ada suatu tekstur yang terkandung dalam

Pemerolehan Fitur Tekstur 651

setiap citra. Tekstur pada Gambar 13.1(c), dari sisi keteraturan pola, adalah yang

paling mudah untuk dikenali.

(a) Halus (b) Kasar (c) Teratur

Gambar 13.1 Berbagai citra yang memiliki sifat tekstur yang berbeda-beda

(Sumber: citra Brodatz)

Perbedaan seperti yang terlihat pada Gambar 13.1 akan dicoba dengan

menggunakan beberapa pendekatan yang berorientasi pada tekstur. Dengan

begitu, gambaran tentang efektivitas setiap metode dapat diamati melalui besaran

kuantitatif yang dihasilkan.

13.2 Kategori Tekstur

Berdasarkan keteraturan pengulangan pola dalam objek, tekstur dapat

dikategorikan ke dalam dua bentuk: 1) tekstur teratur dan 2) tekstur tidak teratur.

Contoh kedua jenis tekstur ditunjukkan pada Gambar 13.2 dan Gambar 13.3.

Tekstur buatan manusia berkecenderungan masuk dalam kategori tekstur teratur,

sedangkan tekstur alamiah bersifat tidak teratur. Berdasarkan tingkat kekasaran

objek, tekstur dibedakan menjadi dua: mikrotekstur dan makrotekstur (Acharya

dan Ray, 2005). Apabila ukuran elemen yang menyusun pengulangan pola

berukuran besar, tekstur dikatakan kasar atau bertekstur makro. Tekstur seperti itu

dinamakan sebagai makrostruktur. Sebaliknya, mikrostruktur mempunyai sifat

elemen-elemen yang menyusun pengulangan pola berukuran kecil. Berdasarkan

perspektif matematis, tekstur dapat dibedakan ke dalam spektrum stokastis dan

spektrum regular. Tekstur stokastis (atau kadang disebut tekstur statistis) adalah

tekstur yang mempunyai bentuk mirip dengan derau. Tekstur regular (atau

terkadang sebagai tekstur struktural) adalah tekstur yang tersusun atas pola-pola

652 Pengolahan Citra Teori dan Aplikasi

periodis. Dalam hal ini, warna/intensitas serta bentuk elemen tekstur diulang

dengan interval yang sama.

Perlu diketahui, terdapat istilah texton. Istilah inilah yang berupa

pola-pola (struktur primitif) yang menyusun tekstur secara

periodik. Istilah tersebut terkadang dinamakan texel (berasal dari

kata “texture element”).

(a) (b)

Gambar 13.2 Tekstur teratur (a) dan

tekstur tidak teratur (b)

(Gambar (a), (b), dan (c) berasal dari Brodatz)

(a) Waru berdaun hijau (b) Waru varigata

Gambar 13.3 Dua daun dengan bentuk yang serupa,

tetapi berbeda dalam pola tekstur

Pemerolehan Fitur Tekstur 653

Metode yang digunakan untuk memperoleh fitur tekstur dapat dibedakan

menjadi tiga golongan: 1) metode statistis, 2) metode struktural, dan 3) metode

spektral. Metode statistis menggunakan perhitungan statistika untuk membentuk

fitur. Contoh yang termasuk sebagai metode statistis yaitu GLCM dan Tamura.

Metode struktural menjabarkan susunan elemen ke dalam tekstur. Contoh metode

struktural adalah Shape Grammar (Petrou dan Sevilla, 2006). Metode spektral

adalah metode yang didasarkan pada domain frekuensi-spasial. Contoh metode

spektral adalah distribusi energi domain Fourier, Gabor, dan filter Laws.

13.3 Tekstur Berbasis Histogram

Metode yang sederhana untuk mendapatkan tekstur adalah dengan

mendasarkan pada histogram. Namun, sebelum membahas fitur-fitur yang dapat

dikenal secara statistis melalui histogram, ada baiknya untuk melihat histogram

dari tiga buah citra yang mengandung tekstur yang berbeda, yang terdapat di

Gambar 13.4. Gambar 13.4(a) menunjukkan bahwa citra dengan tekstur halus

memiliki daerah perubahan intensitas yang sempit. Sebaliknya, citra yang kasar

memiliki kontras yang tinggi, ditandai dengan jangkauan intensitas yang lebar

(Gambar 13.4(c) dan (d)). Menurut penglihatan, citra dalam Gambar 13.4(e) juga

termasuk kasar dibandingkan dengan citra pada Gambar 13.4(a) meskipun

beraturan

654 Pengolahan Citra Teori dan Aplikasi

(a) Tekstur halus (b) Histogram tekstur halus

(c) Tekstur kasar (d) Histogram tekstur kasar

(e) Tekstur periodik (f) Histogram tekstur periodik

Gambar 13.4 Histogram tiga citra yang bertekstur berbeda

Fitur pertama yang dihitung secara statistis adalah rerata intensitas.

Komponen fitur ini dihitung berdasar persamaan

𝑚 = ∑ 𝑖 .𝑝(𝑖)𝐿−1𝑖=0 (13.1)

Dalam hal ini, i adalah aras keabuan pada citra f dan p(i) menyatakan probabilitas

kemunculan i dan L menyatakan nilai aras keabuan tertinggi. Rumus di atas akan

menghasilkan rerata kecerahan objek.

Pemerolehan Fitur Tekstur 655

Fitur kedua berupa deviasi standar. Perhitungannya sebagai berikut:

𝜎 = √∑ (𝑖 − 𝑚)2𝑝(𝑖)𝐿−1𝑖=1 (13.2)

Dalam hal ini, 2 dinamakan varians atau momen orde dua ternormalisasi karena

p(i) merupakan fungsi peluang. Fitur ini memberikan ukuran kekontrasan.

Fitur skewness merupakan ukuran ketidaksimetrisan terhadap rerata

intensitas. Definisinya :

𝑠𝑘𝑒𝑤𝑛𝑒𝑠𝑠 = ∑ (𝑖 − 𝑚)3𝑝(𝑖)𝐿−1𝑖=1 (13.3)

Skewness sering disebut sebagai momen orde tiga ternormalisasi. Nilai negatif

menyatakan bahwa distribusi kecerahan condong ke kiri terhadap rerata dan nilai

positif menyatakan bahwa distribusi kecerahan condong ke kanan terhadap rerata.

Dalam praktik, nilai skewness dibagi dengan (L-1)2 supaya ternormalisasi.

Deskriptor energi adalah ukuran yang menyatakan distribusi intensitas

piksel terhadap jangkauan aras keabuan. Definisinya sebagai berikut:

𝑒𝑛𝑒𝑟𝑔𝑖 = ∑ [𝑝(𝑖)]2𝐿−1𝑖=0 (13.4)

Citra yang seragam dengan satu nilai aras keabuan akan memiliki nilai energi

yang maksimum, yaitu sebesar 1. Secara umum, citra dengan sedikit aras keabuan

akan memiliki energi yang lebih tinggi daripada yang memiliki banyak nilai aras

keabuan. Energi sering disebut sebagai keseragaman.

Entropi mengindikasikan kompleksitas citra. Perhitungannya sebagai

berikut:

𝑒𝑛𝑡𝑟𝑜𝑝𝑖 = − ∑ 𝑝(𝑖)𝐿−1𝑖=0 log2 (𝑝(𝑖)) (13.5)

Semakin tinggi nilai entropi, semakin kompleks citra tersebut. Perlu diketahui,

entropi dan energi berkecenderungan berkebalikan. Entropi juga

merepresentasikan jumlah informasi yang terkandung di dalam sebaran data.

656 Pengolahan Citra Teori dan Aplikasi

Properti kehalusan biasa disertakan untuk mengukur tingkat

kehalusan/kekasaran intensitas pada citra. Definisinya sebagai berikut:

𝑅 = 1 −1

1+𝜎2 (13.6)

Pada rumus di atas, adalah deviasi standar. Berdasarkan rumus di atas, Nilai R

yang rendah menunjukkan bahwa citra memiliki intensitas yang kasar. Perlu

diketahui, di dalam menghitung kehalusan, varians perlu dinormalisasi sehingga

nilainya berada dalam jangkauan [0 1] dengan cara membaginya dengan (L-1)2.

Perwujudan perhitungan fitur tekstur secara statistis dapat dilihat pada

fungsi stattekstur berikut.

function [Stat] = stattekstur(F)

% STATTEKSTUR Memperoleh statistika tekstur.

% Masukan: F = citra berskala keabuan.

% Keluaran: Stat = berisi statistika tekstur

%

% Didasarkan pada Gonzalez, Woods, dan Eddins, 2004

[m, n] = size(F);

% Hitung frekuensi aras keabuan

L = 256;

Frek = zeros(L,1);

F = double(F);

for i = 1 : m

for j = 1 : n

intensitas = F(i,j);

Frek(intensitas+1) = Frek(intensitas+1) + 1;

end

end

% Hitung probabilitas

jum_piksel = m * n;

for i=0 : L-1

Prob(i+1) = Frek(i+1) / jum_piksel;

end

% Hitung mu

Program : stattekstur.m

Pemerolehan Fitur Tekstur 657

mu = 0;

for i=0 : L-1

mu = mu + i * Prob(i+1);

end

% Hitung deviasi standar

varians = 0;

for i=0 : L-1

varians = varians + (i - mu)^2 * Prob(i+1);

end

deviasi = sqrt(varians);

varians_n = varians / (L-1)^2; % Normalisasi

% Hitung skewness

skewness = 0;

for i=0 : L-1

skewness = skewness + (i - mu)^3 * Prob(i+1);

end

skewness = skewness / (L-1)^2;

% Energi (Keseragaman)

energi = 0;

for i=0 : L-1

energi = energi + Prob(i+1)^2;

end

% Entropi

entropi = 0;

for i=0 : L-1

if Prob(i+1) ~= 0

entropi = entropi + Prob(i+1) * log(Prob(i+1));

end

end

entropi = -entropi;

% Hitung R atau Smoothness

smoothness = 1 - 1 / (1 + varians_n);

Stat.mu = mu;

Stat.deviasi = deviasi;

Stat.skewness = skewness;

Stat.energi = energi;

Stat.entropi = entropi;

Stat.smoothness = smoothness;

Akhir Program

Contoh penggunaan fungsi stattekstur:

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

658 Pengolahan Citra Teori dan Aplikasi

>> G = stattekstur(Img)

G =

scalar structure containing the fields:

mu = 125.130203247070

deviasi = 45.8705882891252

skewness = 0.0268669028523393

energi = 0.00630368571728468

entropi = 5.10425454860202

smoothness = 0.0313442386279402

>>

Contoh perbandingan statistika tekstur untuk berbagai citra ditunjukkan pada

Tabel 13.1.

Tabel 13.1 Fitur tekstur berbasis histogram

Objek Fitur

Rerata intensitas Rerata kontras Skewness

Energi Entropi

Smoothness :

: 161,408 : 16,089 : -0,2545

: 0,0220 : 3,9482

: 0,0039

Rerata intensitas Rerata kontras Skewness

Energi Entropi

Smoothness :

: 127,633 : 74,137 : -0,0312

: 0,0077 : 4,9436

: 0,0779

Rerata intensitas Rerata kontras

Skewness Energi Entropi

Smoothness :

: 162,381 : 99,3366

: -6,4603 : 0,1388 : 4,0303

: 0,1318

Pemerolehan Fitur Tekstur 659

Pendekatan yang serupa dengan di depan dilakukan dengan menggunakan

probability density function. Apabila p(i) adalah PDF, momen pusat PDF

didefinisikan sebagai

𝑚𝑘 = ∑ (𝑖 − 𝜇𝑓)𝑘 .𝑝(𝑖)𝐿−1𝑖=0 (13.7)

dengan i=0,1,2,…,L-1 adalah aras keabuan pada citra. Adapun f adalah rerata

aras keabuan pada citra, yang dihitung seperti berikut

𝜇𝑓 = ∑ 𝑖 .𝑝(𝑖)𝐿−1𝑖=0 (13.8)

Momen kedua, yakni varians aras keabuan, yang berlaku sebagai ukuran

ketidakhomogenan, berupa

𝜎𝑘2 = 𝑚2 = ∑ (𝑖 − 𝜇𝑘)2.𝑝(𝑖)𝐿−1

𝑖=0 (13.9)

Momen ketiga dan keempat ternormalisasi, yang secara berturut-turut bernama

skewness dan kurtosis, dinyatakan seperti berikut:

𝑠𝑘𝑒𝑤𝑛𝑒𝑠𝑠 =𝑚3

𝑚23/2 (13.10)

𝑘𝑢𝑟𝑡𝑜𝑠𝑖𝑠 =𝑚4

𝑚22 (13.11)

Skewness merupakan ukuran asimetri dan kurtosis merupakan ukuran

keseragaman.

Pendekatan tekstur dengan probabilitas mempunyai kelebihan pada

sifatnya yang tidak tergantung pada operasi translasi, penyekalaan, dan rotasi.

Kelemahannya adalah mengabaikan hubungan antarpiksel secara lokal. Dengan

kata lain, tekstur dengan susunan spasial yang berbeda tetapi memiliki distribusi

aras keabuan yang sama tidak dapat dibedakan. Sebagai contoh, tekstur yang

memiliki titik-titik warna hitam dan putih secara berselang-seling tidak dapat

660 Pengolahan Citra Teori dan Aplikasi

dibedakan dengan kotak-kotak yang berwarna hitam dan putih secara berselang-

seling.

13.4 Tekstur Laws

Laws mengemukakan metode yang digunakan untuk mengklasifikasi

setiap kelompok piksel di dalam citra guna menentukan ukuran energi tekstur

lokal (Rangayyan, 2005). Untuk keperluan tersebut, filter yang dilibatkan berupa

Gaussian, deteksi tepi, dan jenis Laplacian. Filter-filter tersebut dipakai untuk

membentuk citra yang berisi energi tekstur, sehingga dapat digunakan untuk

kepentingan segmentasi.

Cadar Laws yang paling sederhana yang digunakan untuk kepentingan

penapisan berukuran 1x 3. Nama filter berupa L3, E3, dan S3. Bentuknya seperti

berikut:

LE = [1 2 1]

E3 = [-1 0 1]

S3 = [-1 2 -1]

Karakteristik ketiga filter ditunjukkan pada Gambar 13.5. Setiap huruf awal di

dalam cadar berasal dari kata-kata seperti berikut (Lemaitre dan Rodojevic, 2012):

L = Local averaging, yang berarti pererataan secara lokal

E = Edge detection (pendeteksian tepi)

S = Spot detection (pendeteksi titik)

L3

E3

S3

1 2 1

-1 0 1

-1 2 -1

Gambar 13.5 Cadar Laws berukuran 1x3

Pemerolehan Fitur Tekstur 661

Selain cadar yang berukuran 1x3, terdapat cadar yang berukuran 1x5.

Kelima cadar berupa:

L5 = [ 1 4 6 4 1 ]

E5 = [ -1 -2 0 2 1 ]

S5 = [ -1 0 2 0 -1 ]

R5 = [ 1 -4 6 -4 1 ]

W5 = [ -1 2 0 -2 1 ]

Sebagai tambahan, R berasal dari kata “Ripple detection” dan W berasal dari

“Wave detection”. Karakteristik variasi bobot piksel kelima filter ditunjukkan

pada Gambar 13.6.

L5

E5

S5

1 4 6 4 1

-1 -2 0 2 1

-1 0 2 0 -1

-1 2 0 -2 1

1 -4 6

-4 1

W5

R5

Gambar 13.6 Cadar Laws berukuran 1x5

662 Pengolahan Citra Teori dan Aplikasi

Penerapannya, pasangan dua cadar dapat digabung berdasar perkalian

vektor. Dengan demikian, akan terbentuk matriks berukuran 3x3 atau 5x5.

Sebagai contoh, L3 x S3 menghasilkan matriks seperti berikut:

[121] [−1 2 −1] = [

−1 2 −1−2 4 −2−1 2 −1

] (13.12)

Oleh karena itu, dengan cadar berukuran 1x3 dapat diperoleh kombinasi perkalian

sebanyak 9, sedangkan dengan cadar berukuran 1x5 dapat terbentuk 25 kombinasi

perkalian. Tabel 13.2 menunjukkan kesembilan kombinasi ketiga cadar 1x3.

Adapun Tabel 13.3 memperlihatkan kombinasi pada cadar 1x5.

Tabel 13.2 Pasangan cadar Laws berukuran 1x3

Nama

Kernel

Matriks Keterangan

L3L3 L3TL3 Menyatakan pererataan intensitas aras

keabuan piksel-piksel yang bertetangga dengan ukuran 3x3

L3E3 L3TE3 Pererataan pada arah vertikal dan pendeteksian tepi pada arah horizontal

L3S3 L3TS3 Pererataan pada arah vertikal dan

pendeteksian titik pada arah horizontal

E3L3 E3TL3 Pendeteksian tepi pada arah vertikal dan pererataan intensitas pada arah horizontal

E3E3 E3TE3 Pendeteksian tepi pada arah vertikal dan

horizontal

E3S3 E3TS3 Pendeteksian tepi pada arah vertikal dan pendeteksian titik pada arah horizontal

S3L3 S3TL3 Pendeteksian titik pada arah vertikal dan

pererataan intensitas pada arah horizontal

S3E3 S3TE3 Pendeteksian titik pada arah vertikal dan pendeteksian tepi pada arah horizontal

S3S3 S3TS3 Pendeteksian titik pada arah vertikal dan

horizontal

Pemerolehan Fitur Tekstur 663

Tabel 13.3 Pasangan cadar Laws berukuran 1x5

L5L5 E5L5 S5L5 W5L5 R5L5

L5E5 E5E5 S5E5 W5E5 R5E5

L5S5 E5S5 S5S5 W5S5 R5S5

L5W5 E5W5 S5W5 W5W5 R5W5

L5R5 E5R5 S5R5 W5R5 R5R5

Fungsi bernama laws berikut merupakan implementasi untuk

memperoleh citra yang berisi energi tekstur.

function [E] = laws(F, cadar1, cadar2, w)

% LAWS Berguna untuk memperoleh citra yang berisi

% energi tekstur.

% Masukan: F = Citra berskala keabuan.

% cadar1 dan cadar2 = nama cadar

% (S3, S5, E3, dst.)

% w = ukuran jendela.

F = double(F);

% Memperoleh energi tekstur. Hasil berupa

% citra berukuran sama dengan F.

% w = ukuran jendela

L3 = [1 2 1];

E3 = [-1 0 -1];

S3 = [-1 2 -1];

L5 = [1 4 6 4 1];

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

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

R5 = [1 -4 6 -4 1];

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

% Cek cadar 1

if strcmp(cadar1, 'L3') == 1

Cd1 = L3;

ukuran1 = 3;

elseif strcmp(cadar1, 'E3') == 1

Cd1 = E3;

ukuran1 = 3;

elseif strcmp(cadar1, 'S3') == 1

Cd1 = S3;

ukuran1 = 3;

elseif strcmp(cadar1, 'L5') == 1

Program : laws.m

664 Pengolahan Citra Teori dan Aplikasi

Cd1 = L5;

ukuran1 = 5;

elseif strcmp(cadar1, 'E5') == 1

Cd1 = E5;

ukuran1 = 5;

elseif strcmp(cadar1, 'S5') == 1

Cd1 = S5;

ukuran1 = 5;

elseif strcmp(cadar1, 'R5') == 1

Cd1 = R5;

ukuran1 = 5;

elseif strcmp(cadar1, 'W5') == 1

Cd1 = W5;

ukuran1 = 5;

else

ukuran1 = 0;

end

% Cek cadar 2

if strcmp(cadar2, 'L3') == 1

Cd2 = L3;

ukuran2 = 3;

elseif strcmp(cadar2, 'E3') == 1

Cd2 = E3;

ukuran2 = 3;

elseif strcmp(cadar2, 'S3') == 1

Cd2 = S3;

ukuran2 = 3;

elseif strcmp(cadar2, 'L5') == 1

Cd2 = L5;

ukuran2 = 5;

elseif strcmp(cadar2, 'E5') == 1

Cd2 = E5;

ukuran2 = 5;

elseif strcmp(cadar2, 'S5') == 1

Cd2 = S5;

ukuran2 = 5;

elseif strcmp(cadar2, 'R5') == 1

Cd2 = R5;

ukuran2 = 5;

elseif strcmp(cadar2, 'W5') == 1

Cd2 = W5;

ukuran2 = 5;

else

ukuran2 = 0;

end

% Cek kebenaran cadar

ukuran = ukuran1 * ukuran2;

if ~(ukuran == 9 || ukuran == 25)

error('Cadar tidak valid');

end

Matriks = Cd1' * Cd2;

% Konvolusi citra dengan cadar

E = konvolusi2(F, Matriks);

% Lakukan pererataan dengan jendela berukuran w x w

Pemerolehan Fitur Tekstur 665

H=ones(w,w)/(w^2);

E=konvolusi2(E, H);

% Lakukan normalisasi ke 0 s/d 255

terkecil = min(min(E));

terbesar = max(max(E));

E = (E-terkecil) / (terbesar - terkecil) * 255;

% Kosongkan bagian tepi

[tinggi, lebar] = size(E);

E(1:15,:) = 0;

E(tinggi-15: tinggi,:) = 0;

E(:, 1:15) = 0;

E(:, lebar-15 : lebar) = 0;

E = uint8(E);

Akhir Program

Contoh penggunaan fungsi laws:

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

>> G = laws(Lena,'R5','S5',15);

>> imshow(G)

>>

Perintah di atas digunakan untuk memperoleh energi tekstur dengan menggunakan

pasangan cadar R5 dan S5 dengan ukuran jendela 15x15.

Contoh hasil penerapan enam pasangan cadar terhadap citra Lena

ditunjukkan pada Gambar 13.7.

666 Pengolahan Citra Teori dan Aplikasi

(a) L5L5, 15x15 (b) L5E5, 15x15

(c) L5L5, 15x15 (d) E5S5, 15x15

(e) S5R5, 15x15 (f) R5S5, 15x15

Gambar 13.7 Contoh hasil penggunaan enam cadar Laws

Tekstur Laws biasa dipakai untuk kepentingan segmentasi. Contoh dapat

dilihat pada Petrou dan sevilla (2006), yang menggunakan algoritma deterministic

annealing untuk melakukan segmentasi citra.

Pemerolehan Fitur Tekstur 667

13.5 Lacunarity

Lacunarity merupakan ukuran fraktal yang dapat digunakan untuk

memperoleh fitur tekstur (Petrou & Sevilla, 2006). Definisi lacunarity sebagai

berikut.

11

1

2

1 1

1 1

2

M

k

N

lkl

M

m

N

nmn

s

PMN

PMNL (13.13)

M

m

N

nM

k

N

lkl

mna

PMN

PMN

L1 1

1 1

11

1 (13.14)

p

M

m

N

n

p

M

k

N

lkl

mnp

PMN

PMN

L

/1

1 1

1 1

11

1

(13.15)

Dalam Hal ini, M x N menyatakan ukuran citra, Pmn menyatakan intensitas piksel

pada (m, n), dan p bernilai 2, 4, 6, dan seterusnya.

Implementasi lacunarity dapat dilihat di bawah ini. Fungsi bernama

lacunarity memerlukan masukan berupa citra berwarna.

Program : lacunarity.m

function [H] = lacunarity(RGB)

% LACUNARITY Berguna untuk memperoleh fitur lacunarity.

% Masukan: RGB = Citra berwarna

%

% Keluaran: H = Nilai balik berupa lacunarity

GR = im2bw(RGB, 0.5);

[tinggi, lebar] = size(GR);

RGB = double(RGB);

GR = double(GR);

668 Pengolahan Citra Teori dan Aplikasi

% Hitung warna rata-rata R, G, dan B

jumlsr_atas=0;

jumlsr_bawah=0;

jumlsg_atas=0;

jumlsg_bawah=0;

jumlsb_atas=0;

jumlsb_bawah=0;

jumls_atas=0;

jumls_bawah=0;

jum_piksel = 0;

for Baris = 1:tinggi

for Kolom = 1:lebar

jum_piksel = jum_piksel + 1;

jumlsr_atas = jumlsr_atas + RGB(Baris, Kolom, 1)^2;

jumlsg_atas = jumlsg_atas + RGB(Baris, Kolom, 2)^2;

jumlsb_atas = jumlsb_atas + RGB(Baris, Kolom, 3)^2;

jumls_atas = jumls_atas + GR(Baris, Kolom)^2;

jumlsr_bawah = jumlsr_bawah + RGB(Baris, Kolom, 1);

jumlsg_bawah = jumlsg_bawah + RGB(Baris, Kolom, 2);

jumlsb_bawah = jumlsb_bawah + RGB(Baris, Kolom, 3);

jumls_bawah = jumls_bawah + GR(Baris, Kolom);

end

end

jumlar=0;

jumlag=0;

jumlab=0;

jumla=0;

juml2r=0;

juml2g=0;

juml2b=0;

juml2=0;

juml4r=0;

juml4g=0;

juml4b=0;

juml4=0;

juml6r=0;

juml6g=0;

juml6b=0;

juml6=0;

juml8r=0;

juml8g=0;

juml8b=0;

juml8=0;

juml10r=0;

juml10g=0;

juml10b=0;

juml10=0;

for Baris = 1:tinggi

for Kolom = 1:lebar

jumlar = jumlar + abs(RGB(Baris, Kolom, 1)) / ...

Pemerolehan Fitur Tekstur 669

(jumlsr_bawah/jum_piksel) -1;

jumlag = jumlag + abs(RGB(Baris, Kolom, 2)) / ...

(jumlsg_bawah/jum_piksel) -1;

jumlab = jumlab + abs(RGB(Baris, Kolom, 3)) / ...

(jumlsb_bawah/jum_piksel) -1;

jumla = jumla + abs(GR(Baris, Kolom)) / ...

(jumls_bawah/jum_piksel) -1;

juml2r = juml2r + (RGB(Baris, Kolom, 1) / ...

(jumlsr_bawah/jum_piksel) -1)^2;

juml2g = juml2g + (RGB(Baris, Kolom, 2) / ...

(jumlsg_bawah/jum_piksel) -1)^2;

juml2b = juml2b + (RGB(Baris, Kolom, 3) / ...

(jumlsb_bawah/jum_piksel) -1)^2;

juml2 = juml2 + (GR(Baris, Kolom) / ...

(jumls_bawah/jum_piksel) -1)^2;

juml4r = juml4r + (RGB(Baris, Kolom, 1) / ...

(jumlsr_bawah/jum_piksel) -1)^4;

juml4g = juml4g + (RGB(Baris, Kolom, 2) / ...

(jumlsg_bawah/jum_piksel) -1)^4;

juml4b = juml4b + (RGB(Baris, Kolom, 3) / ...

(jumlsb_bawah/jum_piksel) -1)^4;

juml4 = juml4 + (GR(Baris, Kolom) / ...

(jumls_bawah/jum_piksel) -1)^4;

juml6r = juml6r + (RGB(Baris, Kolom, 1) / ...

(jumlsr_bawah/jum_piksel) -1)^6;

juml6g = juml6g + (RGB(Baris, Kolom, 2) / ...

(jumlsg_bawah/jum_piksel) -1)^6;

juml6b = juml6b + (RGB(Baris, Kolom, 3) / ...

(jumlsb_bawah/jum_piksel) -1)^6;

juml6 = juml6 + (GR(Baris, Kolom) / ...

(jumls_bawah/jum_piksel) -1)^6;

juml8r = juml8r + (RGB(Baris, Kolom, 1) / ...

(jumlsr_bawah/jum_piksel) -1)^8;

juml8g = juml8g + (RGB(Baris, Kolom, 2) / ...

(jumlsg_bawah/jum_piksel) -1)^8;

juml8b = juml8b + (RGB(Baris, Kolom, 3) / ...

(jumlsb_bawah/jum_piksel) -1)^8;

juml8 = juml8 + (GR(Baris, Kolom) / ...

(jumls_bawah/jum_piksel) -1)^8;

juml10r = juml10r + (RGB(Baris, Kolom, 1) / ...

(jumlsr_bawah/jum_piksel) -1)^10;

juml10g = juml10g + (RGB(Baris, Kolom, 2) / ...

(jumlsg_bawah/jum_piksel) -1)^10;

juml10b = juml10b + (RGB(Baris, Kolom, 3) / ...

(jumlsb_bawah/jum_piksel) -1)^10;

juml10 = juml10 + (GR(Baris, Kolom) / ...

(jumls_bawah/jum_piksel) -1)^10;

end

end

H.lsr = (jumlsr_atas / jum_piksel) / ...

(jumlsr_bawah / jum_piksel)^2 - 1;

H.lsg = (jumlsg_atas / jum_piksel) / ...

(jumlsg_bawah / jum_piksel)^2 - 1;

670 Pengolahan Citra Teori dan Aplikasi

H.lsb = (jumlsb_atas / jum_piksel) / ...

(jumlsb_bawah / jum_piksel)^2 - 1;

H.ls = (jumls_atas / jum_piksel) / ...

(jumls_bawah / jum_piksel)^2 - 1;

H.lar = jumlar / jum_piksel;

H.lag = jumlag / jum_piksel;

H.lab = jumlab / jum_piksel;

H.la = jumla / jum_piksel;

H.l2r = sqrt(juml2r / jum_piksel);

H.l2g = sqrt(juml2g / jum_piksel);

H.l2b = sqrt(juml2b / jum_piksel);

H.l2 = sqrt(juml2 / jum_piksel);

H.l4r = (juml4r / jum_piksel)^(1/4);

H.l4g = (juml4g / jum_piksel)^(1/4);

H.l4b = (juml4b / jum_piksel)^(1/4);

H.l4 = (juml4 / jum_piksel)^(1/4);

H.l6r = (juml6r / jum_piksel)^(1/6);

H.l6g = (juml6g / jum_piksel)^(1/6);

H.l6b = (juml6b / jum_piksel)^(1/6);

H.l6 = (juml6 / jum_piksel)^(1/6);

H.l8r = (juml8r / jum_piksel)^(1/8);

H.l8g = (juml8g / jum_piksel)^(1/8);

H.l8b = (juml8b / jum_piksel)^(1/8);

H.l8 = (juml8 / jum_piksel)^(1/8);

H.l10r = (juml10r / jum_piksel)^(1/10);

H.l10g = (juml10g / jum_piksel)^(1/10);

H.l10b = (juml10b / jum_piksel)^(1/10);

H.l10 = (juml10 / jum_piksel)^(1/10);

Akhir Program

Contoh penggunaan fungsi lacunarity:

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

>> G = lacunarity(Img)

G =

scalar structure containing the fields:

lsr = 0.241901390093493

lsg = 0.309382645500090

Pemerolehan Fitur Tekstur 671

lsb = 0.330578855094647

ls = 2.62283837310405

lar = 2.26230885876551e-016

lag = -6.26450950373207e-015

lab = 1.98432322425409e-015

la = 5.19464568545421e-013

l2r = 0.491834718267793

l2g = 0.556221759283250

l2b = 0.574959872595208

l2 = 1.61951794466923

l4r = 0.624600061772115

l4g = 0.712312444691126

l4b = 0.754989005910267

l4 = 1.92692968430085

l6r = 0.703270891746616

l6g = 0.810362947598715

l6b = 0.864331218749092

l6 = 2.11922715098243

l8r = 0.753937245024470

l8g = 0.872513094744670

l8b = 0.932269246020702

l8 = 2.23333538990262

l10r = 0.789310933422419

l10g = 0.914539454662371

l10b = 0.977728062526614

l10 = 2.30607817570218

>>

Perlu diketahui:

lsr berarti Ls untuk komponen R;

lsg berarti Ls untuk komponen G;

672 Pengolahan Citra Teori dan Aplikasi

lsb berarti Ls untuk komponen B;

ls berarti Ls untuk aras keabuan;

lar berarti La untuk komponen R;

lag berarti La untuk komponen G;

lab berarti La untuk komponen B;

la berarti La untuk aras keabuan;

l2r berarti L2 untuk komponen R;

l2g berarti L2 untuk komponen G;

l2b berarti L2 untuk komponen B;

l2 berarti L2 untuk aras keabuan;

l4r berarti L4 untuk komponen R;

l4g berarti L4 untuk komponen G;

l4b berarti L4 untuk komponen B;

l4 berarti L4 untuk aras keabuan;

l6r berarti L6 untuk komponen R;

l6g berarti L6 untuk komponen G;

l6b berarti L6 untuk komponen B;

l6 berarti L6 untuk aras keabuan;

l8r berarti L8 untuk komponen R;

l8g berarti L8 untuk komponen G;

l8b berarti L8 untuk komponen B;

l8 berarti L8 untuk aras keabuan;

l10r berarti L10 untuk komponen R;

l10g berarti L10 untuk komponen G;

l10b berarti L10 untuk komponen B;

l10 berarti L10 untuk aras keabuan.

13.6 GLCM

Gray Level Co-occurrence Matrices (GLCM) pertama kali diusulkan oleh

Haralick pada tahun 1973 dengan 28 fitur untuk menjelaskan pola spasial

(Kulkarni, 1994). GLCM menggunakan perhitungan tekstur pada orde kedua.

Pengukuran tekstur pada orde pertama menggunakan perhitungan statistika

Pemerolehan Fitur Tekstur 673

didasarkan pada nilai piksel citra asli semata, seperti varians, dan tidak

memperhatikan hubungan ketetanggaan piksel. Pada orde kedua, hubungan

antarpasangan dua piksel citra asli diperhitungkan (Hall-Beyer, 2007).

Misalkan, f(x, y) adalah citra dengan ukuran Nx dan Ny yang memiliki

piksel dengan kemungkinan hingga L level dan 𝑟 ⃗⃗ adalah vektor arah ofset spasial.

𝐺𝐿𝐶𝑀𝑟 (𝑖, 𝑗) didefinisikan sebagai jumlah piksel dengan 𝑗 ∈ 1, . . , 𝐿 yang terjadi

pada ofset 𝑟 ⃗⃗ terhadap piksel dengan nilai 𝑖 ∈ 1, . . , 𝐿, yang dapat dinyatakan

dalam rumus (Newsam dan Kammath, 2005):

𝐺𝐿𝐶𝑀𝑟 (𝑖, 𝑗) = #{(𝑥1,𝑦1),(𝑥2,𝑦2) ∈ (𝑁𝑥 ,𝑁𝑦) × (𝑁𝑥 ,𝑁𝑦)|𝑓(𝑥1,𝑦1) =

𝑗𝑟 = (𝑥2 − 𝑥1,𝑦2 − 𝑦1)⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗⃗ ⃗} (13.16)

Dalam hal ini, ofset 𝑟 ⃗⃗ dapat berupa sudut dan/atau jarak. Sebagai contoh, gambar

berikut memperlihatkan empat arah untuk GLCM.

Gambar 13.8 Contoh arah untuk GLCM

dengan sudut 0o, 45o, 90o, dan 135o

Untuk kepentingan ilustrasi, ketetanggaan piksel dapat dipilih ke arah

timur (kanan). Salah satu cara untuk merepresentasikan hubungan ini yaitu berupa

(1,0), yang menyatakan hubungan dua piksel yang berjajar horizontal dengan

piksel bernilai 1 diikuti dengan piksel bernilai 0. Berdasarkan komposisi tersebut,

jumlah kelompok piksel yang memenuhi hubungan tersebut dihitung. Hal ini

diilustrasikan pada Gambar 13.9.

674 Pengolahan Citra Teori dan Aplikasi

Gambar 13.9 Penentuan awal matriks GLCM berbasis pasangan dua piksel

Matriks pada Gambar 13.9(c) dinamakan matrix framework. Matriks ini

perlu diolah menjadi matriks yang simetris dengan cara menambahkan dengan

hasil transposnya, sebagaimana diperlihatkan pada Gambar 13.10.

Gambar 13.10 Contoh pembentukan matriks GLCM yang simetris

0 0 1 1

0 0 1 1

0 2 2 2

2 2 3 3

0 1 2 3

0

1

2

3

0,0 0,1 0,2 0,3

1,0 1,1 1,2 1,3

2,0 2,1

2,2 2,3

3,0 3,1 3,2 3,3

0 1 2 3

0

1

2

3

(a) Citra asli (a) Komposisi Piksel

(c) Jumlah pasangan piksel

2 2 1 0

0 2 0 0

0 0

3 1

0 0 0 1

0 1 2 3

0

1

2

3

Komposisi piksel 0 dengan 0

Komposisi piksel 3

dengan 3

Pemerolehan Fitur Tekstur 675

Untuk menghilangkan ketergantungan pada ukuran citra, nilai-nilai elemen

GLCM perlu dinormalisasi sehingga jumlahnya bernilai 1. Dengan demikian,

contoh di depan akan menjadi seperti berikut:

[ 4

24

2

24

1

24

0

242

24

4

24

0

24

0

241

24

0

24

6

24

1

240

24

0

24

1

24

2

24]

Untuk mendapatkan fitur GLCM, hanya beberapa besaran yang diusulkan

Haralick yang dipakai. Misalnya, Newsam dan Kammath (2005) hanya

menggunakan lima besaran untuk GLCM, berupa angular second moment (ASM),

contrast, inverse different moment (IDM), entropi, dan korelasi.

ASM yang merupakan ukuran homogenitas citra dihitung dengan cara

seperti berikut:

𝐴𝑆𝑀 = ∑ ∑ (𝐺𝐿𝐶𝑀(𝑖, 𝑗)2𝐿𝑗=1

𝐿𝑖=1 (13.17)

Dalam hal ini, L menyatakan jumlah level yang digunakan untuk komputasi.

Kontras yang merupakan ukuran keberadaan variasi aras keabuan piksel

citra dihitung dengan cara seperti berikut:

𝐾𝑜𝑛𝑡𝑟𝑎𝑠 = ∑ 𝑛𝐿𝑛=1

2{∑ 𝐺𝐿𝐶𝑀(𝑖, 𝑗)|𝑖−𝑗|=𝑛 } (13.18)

Fitur IDM digunakan untuk mengukur homogenitas. IDM dihitung dengan

cara seperti berikut:

𝐼𝐷𝑀 = ∑ ∑ (𝐺𝐿𝐶𝑀(𝑖,𝑗)2

1+(𝑖−𝑗)2𝐿𝑗=1

𝐿𝑖=1 (13.19)

Entropi menyatakan ukuran ketidakteraturan aras keabuan di dalam citra.

Nilainya tinggi jika elemen-elemen GLCM mempunyai nilai yang relatif sama.

676 Pengolahan Citra Teori dan Aplikasi

Nilai rendah jika elemen-elemen GLCM dekat dengan nilai 0 atau 1. Rumus

untuk menghitung entropi:

𝐸𝑛𝑡𝑟𝑜𝑝𝑖 = − ∑ ∑ (𝐺𝐿𝐶𝑀(𝑖, 𝑗)log (𝐺𝐿𝐶𝑀(𝑖, 𝑗)𝐿𝑗=1

𝐿𝑖=1 (13.20)

Korelasi yang merupakan ukuran ketergantungan linear antarnilai aras

keabuan dalam citra dihitung dengan menggunakan rumus:

𝐾𝑜𝑟𝑒𝑙𝑎𝑠𝑖 =∑ ∑ (𝑖𝑗)(𝐺𝐿𝐶𝑀(𝑖,𝑗)−𝐿

𝑗=1𝐿𝑖=1 𝜇𝑖

′𝜇𝑗′

𝜎𝑖′𝜎𝑗

′ (13.21)

dengan

𝜇𝑖′ = ∑ ∑ 𝑖 ∗ 𝐺𝐿𝐶𝑀(𝑖, 𝑗)𝐿

𝑗=1𝐿𝑖=1 (13.22)

𝜇𝑗′ = ∑ ∑ 𝑗 ∗ 𝐺𝐿𝐶𝑀(𝑖, 𝑗)𝐿

𝑗=1𝐿𝑖=1 (13.23)

𝜎𝑗2 = ∑ ∑ 𝐺𝐿𝐶𝑀(𝑖, 𝑗)(𝑖 − 𝜇𝑖

′)2𝐿𝑗=1

𝐿𝑖=1 (13.24)

𝜎𝑖2 = ∑ ∑ 𝐺𝐿𝐶𝑀(𝑖, 𝑗)(𝑖 − 𝜇𝑖

′)2𝐿𝑗=1

𝐿𝑖=1 (13.25)

Implementasi GLCM untuk mendapatkan beberapa fitur yang telah

dijelaskan khusus untuk jarak satu ditunjukkan di bawah ini.

function [G0, G45, G90, G135] = glcm(F)

% GLCM Menghasilkan fitur GLCM.

% Masukan: F = Citra berskala keabuan

% Keluaran: Fitur = fitur GLCM untuk beberapa sudut.

[tinggi, lebar] = size(F);

% --- Bentuk GLCM

GLCM0 = zeros(256, 256);

total_piksel0 = 0;

GLCM45 = zeros(256, 256);

total_piksel45 = 0;

Program : glcm.m

Pemerolehan Fitur Tekstur 677

GLCM90 = zeros(256, 256);

total_piksel90 = 0;

GLCM135 = zeros(256, 256);

total_piksel135 = 0;

for y=2: tinggi-1

for x=2: lebar-1

% -- Sudut 0

a = F(y, x);

b = F(y, x+1);

GLCM0(a+1, b+1) = GLCM0(a+1, b+1) + 1;

total_piksel0 = total_piksel0 + 1;

% -- Sudut 45

a = F(y, x);

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

GLCM45(a+1, b+1) = GLCM45(a+1, b+1) + 1;

total_piksel45 = total_piksel45 + 1;

% -- Sudut 90

a = F(y, x);

b = F(y-1, x);

GLCM90(a+1, b+1) = GLCM90(a+1, b+1) + 1;

total_piksel90 = total_piksel90 + 1;

% -- Sudut 135

a = F(y, x);

b = F(y-1, x-1);

GLCM135(a+1, b+1) = GLCM135(a+1, b+1) + 1;

total_piksel135 = total_piksel135 + 1;

end

end

GLCM0 = GLCM0 / total_piksel0;

GLCM45 = GLCM45 / total_piksel45;

GLCM90 = GLCM90 / total_piksel90;

GLCM135 = GLCM135 / total_piksel135;

% --- Hitung ASM

asm0 = 0.0;

asm45 = 0.0;

asm90 = 0.0;

asm135 = 0.0;

for a=0 : 255

for b=0 : 255

asm0 = asm0 + (GLCM0(a+1, b+1) * GLCM0(a+1, b+1));

asm45 = asm45 + (GLCM45(a+1, b+1) * GLCM45(a+1, b+1));

asm90 = asm90 + (GLCM90(a+1, b+1) * GLCM90(a+1, b+1));

asm135 = asm135 + (GLCM135(a+1, b+1) * GLCM135(a+1, b+1));

end

end

% --- Hitung kontras

kontras0 = 0.0;

kontras45 = 0.0;

kontras90 = 0.0;

kontras135 = 0.0;

678 Pengolahan Citra Teori dan Aplikasi

for a=0 : 255

for b=0 : 255

kontras0 = kontras0 + (a-b)*(a-b)*(GLCM0(a+1,b+1));

kontras45 = kontras45 + (a-b)*(a-b)*(GLCM45(a+1,b+1));

kontras90 = kontras90 + (a-b)*(a-b)*(GLCM90(a+1,b+1));

kontras135 = kontras135 + (a-b)*(a-b)*(GLCM135(a+1,b+1));

end

end

% --- Hitung IDM

idm0 = 0.0;

idm45 = 0.0;

idm90 = 0.0;

idm135 = 0.0;

for a = 0: 255

for b = 0 : 255

idm0 = idm0 + (GLCM0(a+1, b+1) / (1+(a-b)*(a-b)));

idm45 = idm45 + (GLCM45(a+1, b+1) / (1+(a-b)*(a-b)));

idm90 = idm90 + (GLCM90(a+1, b+1) / (1+(a-b)*(a-b)));

idm135 = idm135 + (GLCM135(a+1, b+1) / (1+(a-b)*(a-b)));

end

end

% --- Hitung entropi

entropi0 = 0.0;

entropi45 = 0.0;

entropi90 = 0.0;

entropi135 = 0.0;

for a=0 : 255

for b=0 : 255

if (GLCM0(a+1, b+1) ~= 0)

entropi0 = entropi0 - (GLCM0(a+1, b+1) * ...

(log(GLCM0(a+1, b+1))));

end

if (GLCM45(a+1, b+1) ~= 0)

entropi45 = entropi45 - (GLCM45(a+1, b+1) * ...

(log(GLCM45(a+1, b+1))));

end

if (GLCM90(a+1, b+1) ~= 0)

entropi90 = entropi90 - (GLCM90(a+1, b+1) * ...

(log(GLCM90(a+1, b+1))));

end

if (GLCM135(a+1, b+1) ~= 0)

entropi135 = entropi135 - (GLCM135(a+1, b+1) * ...

(log(GLCM135(a+1, b+1))));

end

end

end

% -- Hitung kovarians

% -- Hitung px [] dan py [] dulu

korelasi0 = 0.0;

px0 = 0;

py0 = 0;

reratax0 = 0.0;

reratay0 = 0.0;

Pemerolehan Fitur Tekstur 679

stdevx0 = 0.0;

stdevy0 = 0.0;

korelasi45 = 0.0;

px45 = 0;

py45 = 0;

reratax45 = 0.0;

reratay45 = 0.0;

stdevx45 = 0.0;

stdevy45 = 0.0;

korelasi90 = 0.0;

px90 = 0;

py90 = 0;

reratax90 = 0.0;

reratay90 = 0.0;

stdevx90 = 0.0;

stdevy90 = 0.0;

korelasi135 = 0.0;

px135 = 0;

py135 = 0;

reratax135 = 0.0;

reratay135 = 0.0;

stdevx135 = 0.0;

stdevy135 = 0.0;

for a=0 : 255

for b=0: 255

px0 = px0 + a * GLCM0 (a+1, b+1);

py0 = py0 + b * GLCM0 (a+1, b+1);

px45 = px45 + a * GLCM45 (a+1, b+1);

py45 = py45 + b * GLCM45 (a+1, b+1);

px90 = px90 + a * GLCM90 (a+1, b+1);

py90 = py90 + b * GLCM90 (a+1, b+1);

px135 = px135 + a * GLCM135 (a+1, b+1);

py135 = py135 + b * GLCM135 (a+1, b+1);

end

end

% Hitung deviasi standar

for a=0 : 255

for b=0 : 255

stdevx0 = stdevx0 + (a-px0) * (a-px0) * GLCM0(a+1, b+1);

stdevy0 = stdevy0 + (b-py0) * (b-py0) * GLCM0(a+1, b+1);

stdevx45 = stdevx45 + (a-px45) * ...

(a-px45) * GLCM45(a+1, b+1);

stdevy45 = stdevy45 + (b-py45) * ...

(b-py45) * GLCM45(a+1, b+1);

stdevx90 = stdevx90 + (a-px90) * ...

(a-px90) * GLCM90(a+1, b+1);

stdevy90 = stdevy90 + (b-py90) * ...

(b-py90) * GLCM90(a+1, b+1);

680 Pengolahan Citra Teori dan Aplikasi

stdevx135 = stdevx135 + (a-px135) * ...

(a-px135) * GLCM135(a+1, b+1);

stdevy135 = stdevy135 + (b-py135) * ...

(b-py135) * GLCM135(a+1, b+1);

end

end

% Hitung korelasi

for a = 0 : 255

for b = 0 : 255

korelasi0 = korelasi0 + ((a-px0)*(b-py0)* ...

GLCM0 (a+1, b+1)/(stdevx0*stdevy0));

korelasi45 = korelasi45 + ((a-px45)*(b-py45)* ...

GLCM45 (a+1, b+1)/(stdevx45 * stdevy45));

korelasi90 = korelasi90 + ((a-px90)*(b-py90)* ...

GLCM90 (a+1, b+1)/(stdevx90 * stdevy90));

korelasi135 = korelasi135 + ((a-px135)*(b-py135)* ...

GLCM135 (a+1, b+1)/(stdevx135 * stdevy135));

end

end

G0.asm = asm0;

G0.kontras = kontras0;

G0.idm = idm0;

G0.entropi = entropi0;

G0.korelasi = korelasi0;

G45.asm = asm45;

G45.kontras = kontras45;

G45.idm = idm45;

G45.entropi = entropi45;

G45.korelasi = korelasi45;

G90.asm = asm90;

G90.kontras = kontras90;

G90.idm = idm90;

G90.entropi = entropi90;

G90.korelasi = korelasi90;

G135.asm = asm135;

G135.kontras = kontras135;

G135.idm = idm135;

G135.entropi = entropi135;

G135.korelasi = korelasi135;

Akhir Program

Contoh penggunaan fungsi glcm :

>> Batik = rgb2gray(imread('C:\Image\batik.png'));

>> [G0, G45, G90, G135] = glcm(Batik)

G0 =

Pemerolehan Fitur Tekstur 681

scalar structure containing the fields:

asm = 6.5150e-004

kontras = 537.71

idm = 0.10643

entropi = 8.4453

korelasi = 6.8221e-004

G45 =

scalar structure containing the fields:

asm = 5.6409e-004

kontras = 778.22

idm = 0.085559

entropi = 8.5749

korelasi = 5.8479e-004

G90 =

scalar structure containing the fields:

asm = 6.6484e-004

kontras = 350.20

idm = 0.10536

entropi = 8.3458

korelasi = 7.5820e-004

G135 =

scalar structure containing the fields:

682 Pengolahan Citra Teori dan Aplikasi

asm = 5.8796e-004

kontras = 705.20

idm = 0.092194

entropi = 8.5474

korelasi = 6.1446e-004

>>

Pada contoh di atas, G0, G45, G90, dan G135 secara berturut-turut berisi lima

buah fitur tekstur pada arah 00, 450, 900, dan 1350.

Perlu diketahui, fitur GLCM bergantung pada rotasi. Oleh karena itu,

pendekatan yang dapat dilakukan adalah dengan meratakan nilai fitur untuk

keempat sudut.

1. Jelaskan kegunaan tekstur untuk kepentingan analisis.

2. Jelaskan pengertian istilah- istilah berikut.

(a) Tekstur teratur

(b) Mikrotekstur

(c) Makrotekstur

(d) Tekstur stokastik

(e) Tekstur struktural

3. Cobalah berikan ilustrasi tentang texton.

4. Apa kelebihan dan kelemahan tekstur yang berbasis histogram?

5. Jelaskan istilah- istilah berikut yang berhubungan dengan tekstur.

(a) Entropi

(b) Energi

(c) Skewness

(d) Kurtosis

Latihan

Pemerolehan Fitur Tekstur 683

6. Gambarkan tiga cadar berukuran 1x3 yang digunakan oleh Laws untuk

mendapatkan energi tekstur. Apa kegunaan setiap cadar?

7. Apa yang dimaksud lacunarity? Bagaimana perumusannya?

8. Mengapa GLCM digolongkan sebagai tekstur statistis berorde dua?

9. Implementasikan fungsi untuk menghitung skewness dan kurtosis berdasarkan

PDF yang dibahas di Subbab 13.3. Ujilah pada tiga citra yang menurut Anda

berbeda dalam tekstur.

10. Modifikasilah fungsi lacunarity agar dapat dipakai untuk menghitung fitur

tekstur citra berskala keabuan.

11. Tulislah fungsi untuk mengeksplorasi rumus

p

M

m

N

n

p

M

k

N

lkl

mnp

PMN

PMN

L

/1

1 1

1 1

11

1

dengan menjadikan p sebagai argumen.

12. Lakukan eksperimen untuk memotret suatu objek yang mengandung suatu

pola. Kemudian lakukan pemutaran dengan berbagai sudut. Hitunglah nilai

rerata fitur-fitur yang didasarkan pada GLCM untuk empat sudut (0o, 45o, 90o,

dan 135o) untuk setiap citra. Apakah hasilnya mirip?

13. Kembangkan fungsi GLCM yang bisa mengukur pada jarak lebih dari 1

piksel.

684 Pengolahan Citra Teori dan Aplikasi