Kimia_simple
Introductory PR experiment on blob images. It loads the images, computes features, creates scatterplot and estimates the nearest neighbor classification error.
PRTools and PRDataFiles should be in the path
Download the m-file from here. See http://37steps.com/prtools for more.
Contents
Section 1 Check availablity of toolboxes
PRTools and PRDataFiles should be in the path
if exist('ldc', 'file') ~= 2, error('PRTools not in path'); end if exist('kimia_images','file') ~= 2, error('PRDataFiles not in path'); end delfigs; % delete all figures to avoid clutter
Section 2 load datafile
Show all images, class sizes and class names
A = kimia_images; % accept downloading again, neglect warnings,
figure; show(A,12);
classnames(A)
12 bone
12 van
12 elephant
12 head
12 fork
12 fountain
12 hammer
12 key
12 ray
12 turtle
12 glass
12 heart
12 misk
12 bird
12 brick
12 camel
12 car
12 children
Section 3 Select two classes
B = selclass(A,char('camel','elephant')); figure; show(B,6);
Section 4 Compute features
Compute for every object its - area (sum of pixels inside) - perimeter (sum of pixels on the contour)
feat1 = im_stat([],'sum'); feat2 = filtim('bwperim')*im_stat([],'sum'); C = B*[feat1 feat2]*datasetm; C = setfeatlab(C,{'Size','Perimenter'}); disp(+C);
5455 726
6209 692
6489 594
7145 621
6169 742
6333 542
6749 675
4830 605
7194 516
6900 623
7244 558
5443 597
6337 538
5464 566
5597 526
4793 485
5000 493
4632 499
4766 515
5923 612
6299 576
5783 572
5895 553
5004 520
Section 5 Scatterplots
Show the original scatterplot, after normalization on variance, and with a classifier
figure; scatterd(C,'legend'); axis equal; fontsize(14); % Some tricky statements to get non-matching NN labels [~,nn] = min(distm(C)+1e100*eye(size(C,1))); hold on; scatterd(C(labcmp(getlab(C),getlab(C(nn,:))),:),'ko'); fontsize(14); D = C*mapex(scalem,'variance'); figure; scatterd(D,'legend'); axis equal; fontsize(14); % Some tricky statements to get non-matching NN labels [~,nn] = min(distm(D)+1e100*eye(size(D,1))); hold on; scatterd(D(labcmp(getlab(D),getlab(D(nn,:))),:),'ko'); fontsize(14); figure; scatterd(D,'legend'); axis equal; fontsize(14); plotc(knnc(D,1),'col'); fontsize(14);
Section 6 First classification
Compute the nearest neighbor errors for the two scatterplots
fprintf('LOO NN error of original features %4.2f\n',testk(C,1)); fprintf('LOO NN error of rescaled features %4.2f\n',testk(D,1));
LOO NN error of original features 0.29 LOO NN error of rescaled features 0.21