Escolar Documentos
Profissional Documentos
Cultura Documentos
PRAKTIKUM
EC4041 PENGOLAHAN CITRA DAN PENGENALAN POLA
EC6041 PENGOLAHAN CITRA DAN PENGENALAN POLA LANJUT
MODUL 3 − ANALISIS TEKSTUR
Tekstur merupakan karakteristik intrinsik dari suatu citra yang terkait dengan tingkat kekasaran
(roughness), granularitas (granulation), dan keteraturan (regularity) susunan struktural piksel. Aspek
tekstural dari sebuah citra dapat dimanfaatkan sebagai dasar dari segmentasi, klasifikasi, maupun
interpretasi citra.
Tekstur dapat didefinisikan sebagai fungsi dari variasi spasial intensitas piksel (nilai keabuan) dalam
citra. Berdasarkan strukturnya, tekstur dapat diklasifikasikan dalam dua golongan :
à Makrostruktur
Tekstur makrostruktur memiliki perulangan pola lokal secara periodik pada suatu daerah citra,
biasanya terdapat pada pola-pola buatan manusia dan cenderung mudah untuk direpresentasikan
secara matematis.
à Mikrostruktur
Pada tekstur mikrostruktur, pola-pola lokal dan perulangan tidak terjadi begitu jelas, sehingga
tidak mudah untuk memberikan definisi tekstur yang komprehensif.
Contoh gambar berikut ini menunjukkan perbedaan tekstur makrostruktur dan mikrostruktur yang
diambil dari album tekstur Brodatz.
Analisis tekstur bekerja dengan mengamati pola ketetanggaan antar piksel dalam domain spasial. Dua
persoalan yang seringkali berkaitan dengan analisis tekstur adalah:
à Ekstraksi ciri
Ekstraksi ciri merupakan langkah awal dalam melakukan klasifikasi dan interpretasi citra.
Proses ini berkaitan dengan kuantisasi karakteristik citra ke dalam sekelompok nilai ciri yang
sesuai. Dalam praktikum ini kita akan mengamati metoda ekstraksi ciri statistik orde pertama
dan kedua, serta mengenali performansi masing-masing skema dalam mengenali citra dengan
karakteristik tekstural yang berlainan.
à Segmentasi citra
Segmentasi citra merupakan proses yang bertujuan untuk memisahkan suatu daerah pada citra
dengan daerah lainnya. Berbeda dengan pada citra non-tekstural, segmentasi citra tekstural tidak
dapat didasarkan pada intensitas piksel per piksel, tetapi perlu mempertimbangkan perulangan
pola dalam suatu wilayah ketetanggaan lokal. Dalam praktikum ini kita akan mencoba
menerapkan filter Gabor untuk melakukan segmentasi citra tekstural berdasarkan perulangan
pola lokal pada orientasi dan frekuensi tertentu.
1
Imaging & Image Processing Research Group
Institut Teknologi Bandung
dimana fn merupakan suatu nilai intensitas keabuan, sementara p(fn) menunjukkan nilai
histogramnya (probabilitas kemunculan intensitas tersebut pada citra).
2
Imaging & Image Processing Research Group
Institut Teknologi Bandung
b. Variance (σ2)
Menunjukkan variasi elemen pada histogram dari suatu citra
σ 2 = ∑ ( f n − μ )2 p( f n )
n
c. Skewness (α3)
Menunjukkan tingkat kemencengan relatif kurva histogram dari suatu citra
1
α 3 = 3 ∑ ( f n − μ )3 p ( f n )
σ n
d. Kurtosis (α4)
Menunjukkan tingkat keruncingan relatif kurva histogram dari suatu citra
1
α 4 = 4 ∑ ( f n − μ ) 4 p( f n ) − 3
σ n
e. Entropy (H)
Menunjukkan ukuran ketidakaturan bentuk dari suatu citra
H = −∑ p( f n ) ⋅ 2 log p( f n )
n
Berikut adalah fungsi ciriordesatu yang dipergunakan untuk menghitung ciri orde satu dari citra:
%CIRIORDESATU.M
function CiriOrdeSatu(Citra)
H=imhist(Citra)';
H=H/sum(H);
I=[0:255];
CiriMEAN = I*H';
CiriENT = -H*log2(H+eps)';
CiriVAR = (I-CiriMEAN).^2*H';
CiriSKEW = (I-CiriMEAN).^3*H'/CiriVAR^1.5;
CiriKURT = (I-CiriMEAN).^4*H'/CiriVAR^2-3;
fprintf('\n\tMean :%13.4f\n',CiriMEAN);
fprintf(' \tVariance :%13.4f\n',CiriVAR );
fprintf(' \tSkewness :%13.4f\n',CiriSKEW);
fprintf(' \tKurtosis :%13.4f\n',CiriKURT);
fprintf(' \tEntropy :%13.4f\n',CiriENT );
3
Imaging & Image Processing Research Group
Institut Teknologi Bandung
1 0 3 2 1 0 2
0 1 2 3 2 1 0
2 0 1 2 3 0 2
3 2 0 1 0 3 0
1 3 2 0 1 2 3
(a) (b)
4
Imaging & Image Processing Research Group
Institut Teknologi Bandung
Setelah memperoleh matriks kookurensi tersebut, kita dapat menghitung ciri statistik orde dua yang
merepresentasikan citra yang diamati. Haralick et al mengusulkan berbagai jenis ciri tekstural yang
dapat diekstraksi dari matriks kookurensi. Dalam modul ini dicontohkan perhitungan 6 ciri statistik
orde dua, yaitu Angular Second Moment, Contrast, Correlation, Variance, Inverse Difference
Moment, dan Entropy.
i j
dimana p(i,j) merupakan menyatakan nilai pada baris i dan kolom j pada matriks kookurensi.
b. Contrast
Menunjukkan ukuran penyebaran (momen inersia) elemen-elemen matriks citra. Jika letaknya
jauh dari diagonal utama, nilai kekontrasan besar. Secara visual, nilai kekontrasan adalah
ukuran variasi antar derajat keabuan suatu daerah citra.
⎡ ⎤
CON = ∑ k 2 ⎢∑∑ p (i, j )⎥
k ⎣ i j ⎦
i − j = k
c. Correlation
Menunjukkan ukuran ketergantungan linear derajat keabuan citra sehingga dapat memberikan
petunjuk adanya struktur linear dalam citra.
∑∑ (ij ). p(i, j ) − μ
i j
x μy
COR =
σ xσ y
d. Variance
Menunjukkan variasi elemen-elemen matriks kookurensi. Citra dengan transisi derajat
keabuan kecil akan memiliki variansi yang kecil pula.
VAR = ∑∑ (i − μ x )( j − μ y ) p(i, j )
i j
f. Entropy
Menunjukkan ukuran ketidakteraturan bentuk. Harga ENT besar untuk citra dengan transisi
derajat keabuan merata dan bernilai kecil jika struktur citra tidak teratur (bervariasi).
ENT2 = −∑ ∑ p (i, j ) ⋅ 2 log p (i, j )
i j
5
Imaging & Image Processing Research Group
Institut Teknologi Bandung
Berikut adalah fungsi ciriordedua yang dipergunakan untuk menghitung ciri orde dua dari citra:
%CIRIORDEDUA.M
function CiriOrdeDua(Citra)
mk000=ko000(Citra);
mk045=ko045(Citra);
mk090=ko090(Citra);
mk135=ko135(Citra);
MatKook=(mk000+mk045+mk090+mk135)/4;
I=[1:256];
SumX=sum(MatKook); SumY=sum(MatKook');
MeanX=SumX*I'; MeanY=SumY*I';
StdX=sqrt((I-MeanX).^2*SumX');
StdY=sqrt((I-MeanY).^2*SumY');
CiriASM=sum(sum(MatKook.^2));
CiriCON=0;CiriCOR=0;CiriVAR=0;CiriIDM=0;CiriENT=0;
for i=1:256
for j=1:256
TempCON = (i-j)*(i-j)*MatKook(i,j);
TempCOR = (i)*(j)*MatKook(i,j);
TempVAR = (i-MeanX)*(j-MeanY)*MatKook(i,j);
TempIDM = (MatKook(i,j))/(1+(i-j)*(i-j));
TempENT = -(MatKook(i,j))*(log2(MatKook(i,j)+eps));
CiriCON = CiriCON + TempCON;
CiriCOR = CiriCOR + TempCOR;
CiriVAR = CiriVAR + TempVAR;
CiriIDM = CiriIDM + TempIDM;
CiriENT = CiriENT + TempENT;
end
end
CiriCOR=(CiriCOR-MeanX*MeanY)/(StdX*StdY);
fprintf('\n\tASM :%13.4f\n',CiriASM);
fprintf(' \tCON :%13.4f\n',CiriCON);
fprintf(' \tCOR :%13.4f\n',CiriCOR);
fprintf(' \tVAR :%13.4f\n',CiriVAR);
fprintf(' \tIDM :%13.4f\n',CiriIDM);
fprintf(' \tENT :%13.4f\n',CiriENT);
6
Imaging & Image Processing Research Group
Institut Teknologi Bandung
7
Imaging & Image Processing Research Group
Institut Teknologi Bandung
2. Filter Gabor
Kemampuan sistem visual manusia dalam membedakan berbagai tekstur didasarkan atas kapabilitas
dalam mengidentifikasikan berbagai frekuensi dan orientasi spasial dari tekstur yang diamati. Filter
Gabor merupakan salah satu filter yang mampu mensimulasikan karakteristik sistem visual manusia
dalam mengisolasi frekuensi dan orientasi tertentu dari citra. Karakteristik ini membuat filter Gabor
sesuai untuk aplikasi pengenalan tekstur dalam computer vision.
Secara spasial, sebuah fungsi Gabor merupakan sinusoida yang dimodulasi oleh fungsi Gauss. Respon
impuls sebuah filter Gabor kompleks dua dimensi adalah :
1 ⎧⎪ 1 ⎡ x 2 y 2 ⎤ ⎫⎪
h( x, y ) = exp⎨− ⎢ 2 + 2 ⎥ ⎬ exp( j 2πFx )
2πσ xσ y ⎪⎩ 2 ⎢⎣σ x σ y ⎥⎦ ⎪⎭
Dalam domain frekuensi spasial, filter Gabor dapat direpresentasikan sebagai berikut:
[ ]
H (u, v) = exp{− 2π 2 (u − F ) 2 σ x2 + v 2σ y2 }
Dalam domain frekuensi spasial, parameter-parameter filter Gabor dapat digambarkan sebagai:
8
Imaging & Image Processing Research Group
Institut Teknologi Bandung
Ada enam parameter yang harus ditetapkan dalam implementasi filter Gabor. Keenam parameter
tersebut adalah: F, θ, σx, σy, BF, and Bθ .
B B
à Posisi (F, θ) dan lebar pita (σx, σy) dari filter Gabor dalam domain frekuensi harus ditetapkan
dengan cermat agar dapat menangkap informasi tekstural dengan benar. Frekuensi tengah dari
filter kanal harus terletak dekat dengan frekuensi karakteristik tekstur.
à Setelah mendapatkan ciri Gabor maka dapat dilakukan ekstraksi ciri. Salah satu ciri yang dapat
dipilih adalah ciri energi, yang didefinisikan sebagai:
M N
1
∑∑ x(m, n)
2
e( x ) =
MN i =1 j =1
à Dalam modul ini digunakan lebar pita frekuensi (BF) dan jarak frekuensi tengah (SF) sebesar
B
satu oktaf, serta lebar pita angular (Bθ) dan jarak angular (Sθ) sebesar 30° dan 45°. Pemilihan
B
lebar pita angular sebesar 30° dan 45° adalah karena nilai ini dianggap mendekati karakteristik
sistem visual manusia.
9
Imaging & Image Processing Research Group
Institut Teknologi Bandung
Berikut adalah fungsi gb dan en yang dipergunakan dalam percobaan filter Gabor ini:
%GB.M
%Program untuk menghitung matriks ciri menggunakan filter Gabor.
%Masukan untuk program ini adalah matriks citra (im), pangkat dari
% frekuensi ternormalisasi (power), dan jumlah orientasi (n).
%Keluaran dari program ini adalah matriks ciri yang merupakan nilai
% magnituda dari bagian riil dan imajiner.
%Untuk Bθ = Sθ = 30°, nilai orientasi pada variabel z adalah sebesar
% (0.1667*pi), sedangkan untuk Bθ = Sθ = 45° adalah (0.25*pi).
B
function [mag]=gb(im,power,n);
teta=(0.1667*pi)*n;
F=sqrt(2)/2^power;
fx=F;
z=(0.1667*pi)/2;
num=sqrt(log(2));
denum=sqrt(2)*pi*F*tan(z);
sigmay=num/denum;
Bf=1;
alfa=sqrt(0.5*log(2));
nom=sqrt(log(2))*(2^Bf+1);
denom=sqrt(2)*pi*F*(2^Bf-1);
sigmax=nom/denom;
[x,y]=meshgrid(-3:1:3, -3:1:3);
x=round(x);
y=round(y);
xx=x.*cos(teta)+y.*sin(teta);
yy=-x.*sin(teta)+y.*cos(teta);
hx=(1/(2*pi*sigmax*sigmay))*exp(-0.5*((xx.^2/sigmax^2)+(yy.^2/sigmay^2)));
jx=cos(2*pi*fx*xx);
hc=hx.*jx;
kx=sin(2*pi*fx*xx);
hs=hx.*kx;
im_real=conv2(im,hc,'same');
im_imag=conv2(im,hs,'same');
mag=sqrt((im_real.^2)+(im_imag.^2));
mag=abs(mag)/(max(max(mag)));
10
Imaging & Image Processing Research Group
Institut Teknologi Bandung
2.1 Percobaan Mencari Frekuensi dan Orientasi Dominan pada Suatu Tekstur
Berdasarkan program filter Gabor di atas, lakukan urutan kerja sebagai berikut :
a. Baca file citra straw.tif
x = imread(‘straw.tif’);
b. Lakukan proses filtering terhadap citra tersebut menggunakan filter Gabor. Parameter frekuensi
dan orientasi ditentukan sebagai:
G1 = gb(x, 3, 1);
variabel citra 2
frekuensi F = orientasi θ = 1 x 30° = 30°
yang akan difilter 23
e. Ulangi proses filtering pada beberapa frekuensi dan orientasi yang berbeda.
Ambil kesimpulan berdasarkan besarnya energi dari masing-masing citra keluaran.
Kesimpulan: Tekstur straw mempunyai orientasi dominan di antara 30° dan 60°
2
Tekstur straw mempunyai frekuensi dominan pada F =
23
11
Imaging & Image Processing Research Group
Institut Teknologi Bandung
x = imread(‘tex2.tif’);
12
Imaging & Image Processing Research Group
Institut Teknologi Bandung
3. Tugas
3.1 Ciri Orde Satu
a. Tampilkan histogram citra Taz1.bmp, Taz2.bmp, dan Taz3.bmp. Selanjutnya jalankan
fungsi ciriordesatu terhadap masing-masing citra.
b. Lakukan hal yang sama terhadap masing-masing citra Tekstur1.bmp, Tekstur2.bmp, dan
Tekstur3.bmp.
%MIKIMOS.M
X=imread('mikimos1.bmp');
figure,imagesc(X),colorbar('vert'),colormap('hot')
Y=gb(X,2,3);
figure,imagesc(Y),colorbar('vert'),colormap('hot')
Z=medfilt2(Y,[5,5]);
figure,imagesc(Z),colorbar('vert'),colormap('hot');
13