From 752243d192df78cb6d0d313f6be4b3dceff8c16d Mon Sep 17 00:00:00 2001 From: aj Date: Sat, 30 Nov 2019 17:56:27 +0000 Subject: [PATCH] working mahalanobis --- cvpr_visualsearch_pca_image.m | 11 +++++------ ...ry_walk.m => cvpr_visualsearch_rand_image.m | 0 distance/compareL1.m | 2 +- distance/compareMahalanobis.m | 18 +++++------------- util/getEdgeAngleHist.m | 2 +- 5 files changed, 12 insertions(+), 21 deletions(-) rename cvpr_visualsearch_category_walk.m => cvpr_visualsearch_rand_image.m (100%) diff --git a/cvpr_visualsearch_pca_image.m b/cvpr_visualsearch_pca_image.m index c9dbda6..e41de99 100644 --- a/cvpr_visualsearch_pca_image.m +++ b/cvpr_visualsearch_pca_image.m @@ -27,10 +27,10 @@ DATASET_FOLDER = 'dataset'; DESCRIPTOR_FOLDER = 'descriptors'; %% and within that folder, another folder to hold the descriptors %% we are interested in working with -DESCRIPTOR_SUBFOLDER='avgRGB'; +% DESCRIPTOR_SUBFOLDER='avgRGB'; % DESCRIPTOR_SUBFOLDER='globalRGBhisto'; % DESCRIPTOR_SUBFOLDER='spatialColour'; -% DESCRIPTOR_SUBFOLDER='spatialColourTexture'; +DESCRIPTOR_SUBFOLDER='spatialColourTexture'; CATEGORIES = ["Farm Animal" "Tree" @@ -101,10 +101,10 @@ for iteration=1:CAT_TOTAL %% 3) Compute EigenModel E = getEigenModel(ALLFEAT); - E = deflateEigen(E, 2); + E = deflateEigen(E, 12); %% 4) Project data to lower dimensionality -% ALLFEAT=ALLFEAT-repmat(E.org,size(ALLFEAT,1),1); + ALLFEAT=ALLFEAT-repmat(E.org,size(ALLFEAT,1),1); ALLFEAT=((E.vct')*(ALLFEAT'))'; %% 3) Compute the distance of image to the query @@ -116,7 +116,7 @@ for iteration=1:CAT_TOTAL category=ALLCATs(i); %% COMPARE FUNCTION - thedst=compareMahalanobis(E, ALLFEAT, query); + thedst=compareMahalanobis(E, query, candidate); dst=[dst ; [thedst i category]]; end dst=sortrows(dst,1); % sort the results @@ -134,7 +134,6 @@ for iteration=1:CAT_TOTAL end fprintf('category was %s\n', CATEGORIES(query_category)) - %calculate PR for each n for i=1:NIMG diff --git a/cvpr_visualsearch_category_walk.m b/cvpr_visualsearch_rand_image.m similarity index 100% rename from cvpr_visualsearch_category_walk.m rename to cvpr_visualsearch_rand_image.m diff --git a/distance/compareL1.m b/distance/compareL1.m index 7160b73..1ca74ff 100644 --- a/distance/compareL1.m +++ b/distance/compareL1.m @@ -1,6 +1,6 @@ function dst=compareL1(F1, F2) -x=F1-F2; +x=abs(F1-F2); dst=sum(x); return; diff --git a/distance/compareMahalanobis.m b/distance/compareMahalanobis.m index 11d1582..bfeb1b7 100644 --- a/distance/compareMahalanobis.m +++ b/distance/compareMahalanobis.m @@ -1,17 +1,9 @@ -function d=compareMahalanobis(E, obs, query) +function d=compareMahalanobis(E, query, candidate) -obs_translated = (obs -repmat(query, size(obs,1), 1))'; +x=query-candidate; +x=(x.^2)./(E.val'); +x=sum(x); -proj=E.vct*obs_translated; - -dstsq=proj.*proj; - -E.val(E.val==0)=1; % check for eigenvalues of 0 - -dst=dstsq./repmat((E.val),1,size(obs,2)); - -d=sum(dst); - -d=sqrt(d); +d=sqrt(x); return; diff --git a/util/getEdgeAngleHist.m b/util/getEdgeAngleHist.m index 8d973bd..f881ef8 100644 --- a/util/getEdgeAngleHist.m +++ b/util/getEdgeAngleHist.m @@ -19,7 +19,7 @@ for i = 1:rows end if size(vals, 2) == 0 - F = zeros(1, bins) + F = zeros(1, bins); else F= histogram(vals, bins, 'Normalization', 'probability').Values; end