first commit
This commit is contained in:
commit
172692df26
|
@ -0,0 +1,248 @@
|
|||
close all;
|
||||
dataDirBuahNaga = fullfile('D:\PROPOSAL\Data skripsi\Buah naga merah\');
|
||||
|
||||
filenamesBuahNaga = dir(fullfile(dataDirBuahNaga, '*.JPG'));
|
||||
|
||||
total_images = numel(filenamesBuahNaga);
|
||||
% for n = 1:total_images
|
||||
for n = 1:1000
|
||||
full_nameBuahnaga = fullfile(dataDirBuahNaga, filenamesBuahNaga(n).name);
|
||||
gambar1 = imread(full_nameBuahnaga);
|
||||
%mengubah ukuran jadi 400x400
|
||||
gambar = imresize(gambar1,[400,400]);
|
||||
% figure, imshow(gambar);
|
||||
|
||||
|
||||
gray_image = im2gray(gambar);
|
||||
|
||||
% %figure, imshow(gray_image);
|
||||
file_ALL = strcat('D:\PROPOSAL\Data Preprocessing\Data Grayscale Kecil\', filenamesBuahNaga(n).name);
|
||||
imwrite(gray_image,file_ALL);
|
||||
|
||||
I = gray_image;
|
||||
[tinggi, lebar] = size (I);
|
||||
% Bentuk GLCM
|
||||
GLCM0 = zeros(256, 256);
|
||||
total_piksel0 = 0;
|
||||
|
||||
GLCM45 = zeros(256, 256);
|
||||
total_piksel45 = 0;
|
||||
|
||||
GLCM90 = zeros(256, 256);
|
||||
total_piksel90 = 0;
|
||||
|
||||
GLCM135 = zeros(256, 256);
|
||||
total_piksel135 = 0;
|
||||
|
||||
for y = 2: tinggi-1
|
||||
for x = 2: lebar-1
|
||||
% untuk sudut 0
|
||||
a = I(y,x);
|
||||
b = I(y,x+1);
|
||||
GLCM0(a+1, b+1) = GLCM0(a+1, b+1) + 1;
|
||||
total_piksel0 = total_piksel0 + 1;
|
||||
|
||||
% untuk sudut 45
|
||||
a = I(y,x);
|
||||
b = I(y-1,x+1);
|
||||
GLCM45(a+1, b+1) = GLCM45(a+1, b+1) + 1;
|
||||
total_piksel45 = total_piksel45 + 1;
|
||||
|
||||
% untuk sudut 90
|
||||
a = I(y,x);
|
||||
b = I(y-1,x);
|
||||
GLCM90(a+1, b+1) = GLCM90(a+1, b+1) + 1;
|
||||
total_piksel90 = total_piksel90 + 1;
|
||||
|
||||
% untuk sudut 135
|
||||
a = I(y,x);
|
||||
b = I(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 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 Kontras
|
||||
kontras0 = 0.0;
|
||||
kontras45 = 0.0;
|
||||
kontras90 = 0.0;
|
||||
kontras135 = 0.0;
|
||||
|
||||
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 Kovarians
|
||||
korelasi0 = 0.0;
|
||||
px0 = 0;
|
||||
py0 = 0;
|
||||
reratax0 = 0.0;
|
||||
reratay0 = 0.0;
|
||||
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);
|
||||
|
||||
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
|
||||
|
||||
%Hitung Fitur
|
||||
G0asm = asm0;
|
||||
G0idm = idm0;
|
||||
G0kontras = kontras0;
|
||||
G0korelasi = korelasi0;
|
||||
|
||||
G45asm = asm45;
|
||||
G45idm = idm45;
|
||||
G45kontras = kontras45;
|
||||
G45korelasi = korelasi45;
|
||||
|
||||
G90asm = asm90;
|
||||
G90idm = idm90;
|
||||
G90kontras = kontras90;
|
||||
G90korelasi = korelasi90;
|
||||
|
||||
G135asm = asm135;
|
||||
G135idm = idm135;
|
||||
G135kontras = kontras135;
|
||||
G135korelasi = korelasi135;
|
||||
|
||||
fitur = [G0asm ;G0idm ;G0kontras ;G0korelasi
|
||||
;G45asm ;G45idm ;G45kontras ;G45korelasi
|
||||
;G90asm ;G90idm ;G90kontras ;G90korelasi
|
||||
;G135asm ;G135idm ;G135kontras ;G135korelasi];
|
||||
fitur_post(n,:)=fitur(1:16,:);
|
||||
|
||||
|
||||
xlswrite('data_latih.xlsx',fitur_post);
|
||||
|
||||
% klasifikasi naive bayes
|
||||
load 'D:\PROPOSAL\Data skripsi\Buah naga merah\class.mat'
|
||||
X = fitur_post;
|
||||
Y = class;
|
||||
rng('default')
|
||||
cv = cvpartition(Y,'HoldOut',0.20);
|
||||
trainInds = training(cv);
|
||||
testInds = test(cv);
|
||||
XTrain = X(trainInds,:);
|
||||
YTrain = Y(trainInds);
|
||||
XTest = X(testInds,:);
|
||||
YTest = Y(testInds);
|
||||
Mdl = fitcnb(XTrain,YTrain,'ClassNames',{'buah naga bagus','buah naga jelek','buah naga cacar'})
|
||||
idx = randsample(sum(testInds),30);
|
||||
label = predict(Mdl,XTest);
|
||||
table(YTest(idx),label(idx),'VariableNames',...
|
||||
{'TrueLabel','PredictedLabel'})
|
||||
cm = confusionchart(YTest,label);
|
||||
cm.ColumnSummary = 'column-normalized';
|
||||
cm.RowSummary = 'row-normalized';
|
||||
cm.Title = 'Buah Naga Confusion Matrix';
|
||||
end
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue