Anda di halaman 1dari 6

Dapat di lihat pada gambar terdapat citra database dan citra query citra database

merupakan citra latih yang sudah tersimpan terlebih dahulu untuk menguji citra query atau
citra uji..

Langkah kedua : Setelah citra quer dan citra database disiapkan mulai proses pengolahan
citra dengan terlebih dahulu menghitung nilai nilai ciri pada citra yaitu ciri tekstur dan ciri
warna masing masing perhitungan dilakukan pada citra quer dan citra yang berada pada
database .

Langkah ketiga : Setelah mendapatkan vektor ciri citra pada query dan database selanjutnya
masuk pada penerapan PCA untuk mengurangkan dimensi fitur pada citra

Langkah Keempat : Data yang sudah mengalami ekstraksi fitur dilakukan proses pembanding
antara citra query dengan data yang tersimpan dalam basis data menggunakan perhitungan
Euclidean Distance (perhitungan jarak kedua vektor). Data hasil perbandingan dilakukan
indexing dan retrieval mulai data dari nilai jarak terkecil sampai nilai paling besar.

1. Warna : Ciri warna suatu gambar dapat dinyatakan dalam bentuk histogram gambar
tersebut yang dituliskan dengan: H (r,g,b), dimana H (r,g,b) adalah jumlah munculnya
pasangan warna R (Red), G (Green) dan B (Blue) tertentu.
2. Bentuk : Ciri bentuk mencerminkan konfigurasi atau kerangka objek. Secara umum, citra
yang dibentuk oleh mata merupakan citra dua dimensi, sedangkan objek yang dilihat
umumnya berbentuk tiga dimensi. Bentuk merupakan atribut yang jelas sehingga dapat
digunakan untuk mendeteksi banyak objek atau batas wilayah dengan mengenali
berdasarkan bentuknya saja, seperti bentuk lingkaran atau persegi.
3. Tekstur : Ciri tekstur merupakan karakteristik intrinsik dari suatu citra yang terkait
dengan tingkat kekasaran (roughness), granularitas (granulation), dan keteraturan
(regularity) susunan struktural piksel. Aspek tekstural sebuah citra dapat dimanfaatkan
sebagai dasar segmentasi, klasifikasi, maupun interpretasi citra.

Indeks baris (i) dan indeks kolom (j) menyatakan suatu oordinat titik pada citra, sedangkan f(i,j)
menrupakan intensitas (level keabuan) pada titik (i,j)
function [stat] = statwarna(berkas)
% Menghitung statistik warna pada citra RGB
% Masukan:
% berkas berupa citra warna
% Nilai balik berupa statistik warna yang mencakup
% rerata, deviasi standar, kecondongan, dan
% kurtosis

RGB = double(imread(berkas));
[m,n,d] = size(RGB);
if (d ~= 3)
disp('Citra harus berupa citra berwarna');
return;
end

% --- Peroleh warna


% Hitung warna rata-rata R, G, dan B
jum_r=0;
jum_g=0;
jum_b=0;
jum_piksel = m * n;
for baris = 1:m
for kolom = 1:n
jum_r = jum_r + RGB(baris, kolom, 1);
jum_g = jum_g + RGB(baris, kolom, 2);
jum_b = jum_b + RGB(baris, kolom, 3);
end
end

% Hitung rerata
mean_r = jum_r / jum_piksel;
mean_g = jum_g / jum_piksel;
mean_b = jum_b / jum_piksel;

% Inisialisasi perhitungan deviasi standar,


% skewness, dan kurtosis
jum_dev_r = 0;
jum_dev_g = 0;
jum_dev_b = 0;

jum_skew_r = 0;
jum_skew_g = 0;
jum_skew_b = 0;

jum_cur_r = 0;
jum_cur_g = 0;
jum_cur_b = 0;

for baris = 1:m


for kolom = 1:n
jum_dev_r = jum_dev_r + ...
(RGB(baris, kolom,1) - mean_r)^2;
jum_dev_g = jum_dev_g + ...
(RGB(baris, kolom,2) - mean_g)^2;
jum_dev_b = jum_dev_b + ...
(RGB(baris, kolom,3) - mean_b)^2;

jum_skew_r = jum_skew_r + ...


(RGB(baris, kolom,1) - mean_r)^3;
jum_skew_g = jum_skew_g + ...
(RGB(baris, kolom,2) - mean_g)^3;
jum_skew_b = jum_skew_b + ...
(RGB(baris, kolom,3) - mean_b)^3;

jum_cur_r = jum_cur_r + ...


(RGB(baris, kolom,1) - mean_r)^4;
jum_cur_g = jum_cur_g + ...
(RGB(baris, kolom,2) - mean_g)^4;
jum_cur_b = jum_cur_b + ...
(RGB(baris, kolom,3) - mean_b)^4;
end
end

% Hitung deviasi standar


dev_r = sqrt(jum_dev_r/jum_piksel);
dev_g = sqrt(jum_dev_g/jum_piksel);
dev_b = sqrt(jum_dev_b/jum_piksel);

% Hitung skewness
skew_r = jum_skew_r/ (jum_piksel * (dev_r^3));
skew_g = jum_skew_g/ (jum_piksel * (dev_g^3));
skew_b = jum_skew_b/ (jum_piksel * (dev_b^3));

% Hitung kurtosis
cur_r = jum_cur_r / (jum_piksel * (dev_r^4)) - 3;
cur_g = jum_cur_g / (jum_piksel * (dev_g^4)) - 3;
cur_b = jum_cur_b / (jum_piksel * (dev_b^4)) - 3;

% Tentukan keluaran
stat.mean_r = mean_r;
stat.mean_g = mean_g;
stat.mean_b = mean_b;

stat.dev_r = dev_r;
stat.dev_g = dev_g;
stat.dev_b = dev_b;

stat.skew_r = skew_r;
stat.skew_g = skew_g;
stat.skew_b = skew_b;

stat.cur_r = cur_r;
stat.cur_g = cur_g;
stat.cur_b = cur_b;
function [Stat] = stattekstur(F)
% STATTEKSTUR Memperoleh statistik tekstur.
% Masukan: F = citra berskala keabuan.
% Keluaran: Stat = berisi statistik 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
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;
X = [];
for i = 1 : total_images
str = fullfile(data_train_path, filenames(i).name);
img = imread(str);
img = rgb2gray(img);
[r,c] = size(img);
temp = reshape(img',r*c,1); %% Reshaping 2D images into 1D image
vectors
%%% here img' is used because reshape(A,M,N) function reads the matrix
A columnwise
%%% where as an image matrix is constructed with first N pixels as
first row,next N in second row so on
X = [X temp]; %% X,the image matrix with columnsgetting
added for each image

m = mean(X,2); % Computing the average face image m = (1/P)*sum(Xj's) (j


= 1 : P)
imgcount = size(X,2);

%%%%%%%% calculating A matrix, i.e. after subtraction of all image vectors


from the mean image vector %%%%%%

A = [];
for i=1 : imgcount
temp = double(X(:,i)) - m;
A = [A temp];
end

L = A' * A;
[V,D] = eig(L); %% V : eigenvector matrix D : eigenvalue matrix

Anda mungkin juga menyukai