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
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
|