Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
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.
Analisis tekstur lazim dimanfaatkan sebagai proses antara untuk melakukan klasifikasi dan
interpretasi citra. Suatu proses klasifikasi citra berbasis analisis tekstur pada umumnya membutuhkan
tahapan ekstraksi ciri, yang dapat terbagi dalam tiga macam metode berikut:
Metode statistik
Metode statistik menggunakan perhitungan statistik distribusi derajat keabuan (histogram)
dengan mengukur tingkat kekontrasan, granularitas, dan kekasaran suatu daerah dari hubungan
ketetanggaan antar piksel di dalam citra.
Paradigma statistik ini penggunaannya tidak terbatas, sehingga sesuai untuk tekstur-tekstur
alami yang tidak terstruktur dari sub pola dan himpunan aturan (mikrostruktur).
Metode spektral
Metode spektral berdasarkan pada fungsi autokorelasi suatu daerah atau power distribution
pada domain transformasi Fourier dalam mendeteksi periodisitas tekstur.
Metode struktural
Analisis dengan metode ini menggunakan deskripsi primitif tekstur dan aturan sintaktik.
Metode struktural banyak digunakan untuk pola-pola makrostruktur.
Bagian ini akan membahas metode ekstraksi ciri statistik orde pertama dan kedua. Ekstraksi ciri orde
pertama dilakukan melalui histogram citra. Ekstraksi ciri statistik orde kedua dilakukan dengan
matriks kookurensi, yaitu suatu matriks antara yang merepresentasikan hubungan ketetanggaan antar
piksel dalam citra pada berbagai arah orientasi dan jarak spasial.
1.1
Ekstraksi ciri orde pertama merupakan metode pengambilan ciri yang didasarkan pada karakteristik
histogram citra. Histogram menunjukkan probabilitas kemunculan nilai derajat keabuan piksel pada
suatu citra. Dari nilai-nilai pada histogram yang dihasilkan, dapat dihitung beberapa parameter ciri
orde pertama, antara lain adalah mean, skewness, variance, kurtosis, dan entropy.
a. Mean ()
Menunjukkan ukuran dispersi dari suatu citra
f n p( f n )
n
dimana fn merupakan suatu nilai intensitas keabuan, sementara p(fn) menunjukkan nilai
histogramnya (probabilitas kemunculan intensitas tersebut pada citra).
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
CiriENT
CiriVAR
CiriSKEW
CiriKURT
=
=
=
=
=
I*H';
-H*log2(H+eps)';
(I-CiriMEAN).^2*H';
(I-CiriMEAN).^3*H'/CiriVAR^1.5;
(I-CiriMEAN).^4*H'/CiriVAR^2-3;
fprintf('\n\tMean
fprintf(' \tVariance
fprintf(' \tSkewness
fprintf(' \tKurtosis
fprintf(' \tEntropy
:%13.4f\n',CiriMEAN);
:%13.4f\n',CiriVAR );
:%13.4f\n',CiriSKEW);
:%13.4f\n',CiriKURT);
:%13.4f\n',CiriENT );
1.2
Pada beberapa kasus, ciri orde pertama tidak lagi dapat digunakan untuk mengenali perbedaan antar
citra. Pada kasus seperti ini, kita membutuhkan pengambilan ciri statistik orde dua.
Salah satu teknik untuk memperoleh ciri statistik orde dua adalah dengan menghitung probabilitas
hubungan ketetanggaan antara dua piksel pada jarak dan orientasi sudut tertentu. Pendekatan ini
bekerja dengan membentuk sebuah matriks kookurensi dari data citra, dilanjutkan dengan
menentukan ciri sebagai fungsi dari matriks antara tersebut.
Kookurensi berarti kejadian bersama, yaitu jumlah kejadian satu level nilai piksel bertetangga dengan
satu level nilai piksel lain dalam jarak (d) dan orientasi sudut () tertentu. Jarak dinyatakan dalam
piksel dan orientasi dinyatakan dalam derajat. Orientasi dibentuk dalam empat arah sudut dengan
interval sudut 45, yaitu 0, 45, 90, dan 135. Sedangkan jarak antar piksel biasanya ditetapkan
sebesar 1 piksel.
Matriks kookurensi merupakan matriks bujursangkar dengan jumlah elemen sebanyak kuadrat jumlah
level intensitas piksel pada citra. Setiap titik (p,q) pada matriks kookurensi berorientasi berisi
peluang kejadian piksel bernilai p bertetangga dengan piksel bernilai q pada jarak d serta orientasi
dan (180).
(a)
(b)
0.1333
0.0833
0.0667
0.1667
0.0833
0.0417
0.1333
0.0833
0.0167
0.1042
0.125
0.0833
0.0833
0.1167
0.0833
0.1042
0.0833
0.0208
0.0667
0.0167
0.1167
0.0417
0.125
0.0208
(c)
(d)
0.1429
0.1071
0.0536
0.2083
0.0833
0.1429
0.0536
0.0179
0.2083
0.0208
0.1071
0.0536
0.125
0.0833
0.0208
0.1667
0.0536
0.0179
0.125
0.2083
(e)
(f)
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.
a. Angular Second Moment
Menunjukkan ukuran sifat homogenitas citra.
ASM p (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.
COR
(ij ). p(i, j )
i
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
Entropy
Menunjukkan ukuran ketidakteraturan bentuk. Harga ENT besar untuk citra dengan transisi
derajat keabuan merata dan bernilai kecil jika struktur citra tidak teratur (bervariasi).
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
fprintf(' \tCON
fprintf(' \tCOR
fprintf(' \tVAR
fprintf(' \tIDM
fprintf(' \tENT
:%13.4f\n',CiriASM);
:%13.4f\n',CiriCON);
:%13.4f\n',CiriCOR);
:%13.4f\n',CiriVAR);
:%13.4f\n',CiriIDM);
:%13.4f\n',CiriENT);
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 :
h( x, y )
1 x 2 y 2
exp 2 2 exp j 2Fx
2 x y
2 x y
1
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:
Parameter
Simbol
BF
B
SF
S
Orientasi
Nilai
2 2 2 2 2 2 2
,
,
,
,
,
,
2 0 21 2 2 2 3 2 4 2 5 2 6
1 oktaf
30o atau 45o
1 oktaf
30o atau 45o
S = 30o : 0o, 30o, 60o, 90o, 120o, 150o
S = 45o : 0o, 45o, 90o, 135o, 180o, 225o
Ada enam parameter yang harus ditetapkan dalam implementasi filter Gabor. Keenam parameter
tersebut adalah: F, , x, y, BF, and B .
ln 2
2F tan( B / 2)
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:
e( x )
2F (2 BF 1)
ln 2 (2 BF 1)
1
MN
x(m, n)
i 1 j 1
Dalam modul ini digunakan lebar pita frekuensi (BF) dan jarak frekuensi tengah (SF) sebesar
satu oktaf, serta lebar pita angular (B) dan jarak angular (S) sebesar 30 dan 45. Pemilihan
lebar pita angular sebesar 30 dan 45 adalah karena nilai ini dianggap mendekati karakteristik
sistem visual manusia.
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).
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
2.1
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
yang akan difilter
frekuensi F
2
23
orientasi = 1 x 30 = 30
e. Ulangi proses filtering pada beberapa frekuensi dan orientasi yang berbeda.
Ambil kesimpulan berdasarkan besarnya energi dari masing-masing citra keluaran.
=
0
Energi = 0.0742
Kesimpulan:
=
30
Energi = 0.0930
=
60
Energi = 0.0928
=
90
Energi = 0.0655
2
23
11
2.2
Berdasarkan program filter Gabor di atas, lakukan urutan kerja sebagai berikut :
a. Baca file citra tex2.tif
x = imread('tex2.tif');
12
3.
3.1
Tugas
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.
c. Berikan analisis mengenai proses yang telah dilakukan.
3.2
3.3
Filter Gabor
a. Jalankan program mikimos.m berikut. Berikan analisis mengenai proses yang dijalankan.
%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');
dengan:
X=imread('mikimos2.bmp');
Bandingkan hasilnya dengan (a), berikan analisis mengenai hasil yang diperoleh.
c. Gantilah baris perintah:
Y=gb(X,2,3);
dengan:
Y=gb(X,2,6);
Bandingkan hasilnya dengan (a), berikan analisis mengenai hasil yang diperoleh.
3.4
13