You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.6 KiB
Matlab

function stats=class_ism_norb
method{1}='Hough';method{2}='PC/BC-DIM';
spread=2;
[images,classes,numClasses]=load_data_norb(2);
numTest=length(classes);
%DEFINE CODEBOOK
load('ISM_codebook_NORB.mat');
Locations=postprocess_codebook(Locations,patchClassList,spread);
%FOR EACH TEST IMAGE PERFORM ISM TO LOCATE DIGITS OF EACH CLASS
disp(['Processing Images (',int2str(numTest),')'])
for i=1:numTest
fprintf(1,'.%i.',i);
%load image and display
I=reshape(images(i,:),96,96)';
figured(2),clf, imagesc(I), hold on, axis('equal','tight'); title(' ');
colormap('gray');
%APPLY METHODS
[param{i}{1},param{i}{2}]=ism_compare_methods(I,patches,patchClassList,Locations,similarityThres);
end
%FOR EACH METHOD TEST ACCURACY WITH WHICH IMAGES ARE CLASSIFIED
for m=1:length(method)
disp(' ');
disp(method{m});
classError{m}=0;
%FOR EACH TEST IMAGE DETERMINE CLASS
for i=1:numTest
class=classes(i);
%analyse results as a classification task
prob=zeros(1,numClasses);
for c=1:numClasses
maxAmplitude=max(param{i}{m}{c}(3,:));
if ~isempty(maxAmplitude)
prob(c)=maxAmplitude;
end
end
[~,predictedClass]=max(prob);
if predictedClass~=class
classError{m}=classError{m}+1;
fprintf(1,'Image %i: actual class %i, predicted class %i (error)\n',i,class,predictedClass);
else
fprintf(1,'Image %i: actual class %i, predicted class %i\n',i,class,predictedClass);
end
end
end
%PLOT THE RESULTS
disp(' ');
max_error=0;
for m=1:length(method)
disp(['% classification error ',method{m}]);
disp(100*classError{m}./numTest)
end