Matlab 显著性检测模型评价算法之KL距离

 KL距离是用来计算两个概率分布函数的差异大小:

h是ground thruth map,p是saliency map,当h和p完全相等时,KL值为0

现在一般用对称形式,即h和p换个位置,求个KL,两个KL求平均值。下面就是对称形式:关键代码:

function score = KLdiv(saliencyMap, fixationMap)
% saliencyMap is the saliency map
% fixationMap is the human fixation map, 即ground truth

map1 = im2double(imresize(saliencyMap, size(fixationMap)));
map2 = im2double(fixationMap);

% make sure map1 and map2 sum to 1,使map1上所有像素值和为1,map2一样
if any(map1(:))                    % 遍历所有像素
    map1 = map1/sum(map1(:));
end
map1(map1==0)=1e-50;               % 使map1所有像素非零

if any(map2(:))
    map2 = map2/sum(map2(:));
end
map2(map2==0)=1e-50;

% compute KL-divergence
score1 = sum(sum(map2 .* log(eps + map2./(map1+eps)))); % 相对熵
score2 = sum(sum(map1 .* log(eps + map1./(map2+eps))));
score = (score1+score2)/2;
gmap = imread(gt_full_path);
smap = imread(smap_full_path);

score = KLdiv(smap, gmap);

% created: Zoya Bylinskii, Aug 2014
 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值