步骤1:先定义KLdiv函数:
function score = KLdiv(saliencyMap, fixationMap)% saliencyMap is the saliency map% fixationMap is the human fixation mapmap1 = im2double(imresize(saliencyMap, size(fixationMap)));map2 = im2double(fixationMap);% make sure map1 and map2 sum to 1if any(map1(:)) map1 = map1/sum(map1(:));endif any(map2(:)) map2 = map2/sum(map2(:));end% compute KL-divergencescore = sum(sum(map2 .* log(eps + map2./(map1+eps))));
步骤2:再写一个主函数调用它:
clear;clc;smap_path='E:\Dataset180303\final_data\smap_Result1\';gmap_path='E:\Dataset180303\final_data\image_resize_gt\';smap_file=dir(smap_path);for j=3:length(smap_file) disp(j-2); gmap_name=strcat(gmap_path,num2str(j-2), '.jpg');% gmap_name=strcat(gmap_path,smap_file(j).name); smap_name=strcat(smap_path,num2str(j-2+ 0 ), '.jpg');% smap_name=strcat(smap_path,num2str(j-2+ 0 ), '_SaliencyMap', '.jpg'); gmap=imresize(imread(gmap_name), [224, 224], 'bicubic'); smap=imresize(imread(smap_name), [224, 224], 'bicubic'); sal_map=mat2gray(smap); if gmap==0 continue; end if size(gmap,3)==3 gt_final_map=rgb2gray(gmap); else gt_final_map = gmap; end sal_map=imresize(sal_map,0.5); gt_final_map=imresize(gt_final_map,0.5); threshold_value = graythresh(gt_final_map); gt_final_map_bin = im2bw(gt_final_map, threshold_value); c = KLdiv(sal_map, gt_final_map); idx=find(isnan(c)); c(idx)=0.5; c = abs(c); a(j-2,1)=mean(c);end% b(i-2,1)=mean(a);% clear a;% endKLdiv = mean(a);