-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathImages_IFCM_test.m
87 lines (63 loc) · 2.86 KB
/
Images_IFCM_test.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
clear; close all;
addpath /home/hung-tran-nam/Hung_matlab/Clustering_v.1.0/Package/ToolBox
addpath /home/hung-tran-nam//Hung_matlab/Clustering_v.1.0/Package/Clust/
addpath /home//hung-tran-nam//Hung_matlab/Clustering_v.1.0/Package/Vis/
addpath /home//hung-tran-nam//Hung_matlab/Clustering_v.1.0/Package/Val/
addpath /home/hung-tran-nam/Hung_matlab/Data
% Path_data = '/home/hung-tran-nam/Hung_matlab/Data/IMBA1';
Path_data = '/home/hung-tran-nam/Hung_matlab/Data/Brodatz/cropped_images';
param.maxIter = 1000;
param.mFuzzy = 2;
param.epsilon = 1e-10;
param.val = 2;
param.FvIni = 3;
param.Klist = 2:5;
imds = imageDatastore(Path_data, ...
'IncludeSubfolders', true, ...
'FileExtensions', '.gif', ...
'LabelSource','foldernames');
rng('default') % For reproducibility
numClasses = length(unique(imds.Labels));
kfold = 5;
fold = cvpartition(imds.Labels,'kfold',kfold,'Stratify',true);
Afold = zeros(kfold,1);
% RotationRange = [-90 90];
% imageAugmenter = imageDataAugmenter( ...
% 'RandXReflection',true, ...
% 'RandRotation',RotationRange);
for i = 1:1
Train_idx = fold.training(i);
Test_idx = fold.test(i);
imdsTrain = imageDatastore(imds.Files(Train_idx),"Labels", imds.Labels(Train_idx));
imdsTest = imageDatastore(imds.Files(Test_idx),"Labels", imds.Labels(Test_idx));
% [imdsVal, ~] = splitEachLabel(imdsTrain, .2);
% for p = 1:length(imdsTrain)
% img = imread(imdsTrain.Files{p});
% augimdsTrain = augmentedImageDatastore(size(img, 1:2), imdsTrain, 'DataAugmentation', imageAugmenter);
% end
[pdfTrain, param.x] = ExtractKernel(imdsTrain);
[pdfTest, ~] = ExtractKernel(imdsTest);
% [pdfTest, param.x] = ExtractKernel(imdsTest);
% [pdfTest, param.x] = ExtractI2PDF(imdsVal);
bestK = evalclusters_(pdfTrain, param, param.Klist);
param.kClust = bestK;
training = IFCM_(pdfTrain, param);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Plotting
% figure;
% heatmap(training.Cluster.U);
figure;
PlotPDFeachIteration(pdfTrain, training.Cluster.IDX, param.x); hold on;
plot(param.x,training.Data.fv, "LineWidth", 3, "DisplayName", "Representative PDF"); hold off;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Validation
% [param.truelabels, ~, label_index] = grp2idx(imdsTrain.Labels);
% param.truelabels = param.truelabels';
% training = validityClustering(training, param);
[param.truelabels, ~, label_index] = grp2idx(imdsTest.Labels);
param.truelabels = param.truelabels';
testing = predictClust_(pdfTest, training, param);
testing = validityClustering(testing, param);
Afold(i,:) = testing.validity.Gmean;
end
mean(Afold)