我使用特征面编写了用于人脸识别的matlab代码。我得到了归一化图像,平均图像,特征面,并且我计算了最小和最大毛细管距离。现在我必须比较毛细血管距离和阈值来识别面部。如何为每个面部图像计算阈值?下一步会是什么?
%show the reconstructed image.
subplot(1,2,2)
imagesc(ReshapedImage); colormap('gray');
title('Reconstructed image','fontsize',18)
InImWeight = [];
for i=1:size(u,2)
t = u(:,i)';
WeightOfInputImage = dot(t,Difference');
InImWeight = [InImWeight; WeightOfInputImage];
end
ll = 1:M;
figure(68)
subplot(1,2,1)
stem(ll,InImWeight)
title('Weight of Input Face','fontsize',14)
% Find Euclidean distance
e=[];
for i=1:size(omega,2)
q = omega(:,i);
DiffWeight = InImWeight-q;
mag = norm(DiffWeight);
e = [e mag];
end
kk = 1:size(e,2);
subplot(1,2,2)
stem(kk,e)
title('Eucledian distance of input image','fontsize',14)
MaximumValue=max(e)
MinimumValue=min(e)
答案 0 :(得分:1)
据我所知,人脸识别中的阈值选择没有标准规则。
由于您似乎拥有一组训练图像,因此您可以尝试根据生物识别效果指标选择阈值,例如:错误接受率(FAR)和错误匹配率(FMR)。
您可以尝试通过在一定范围内改变阈值来对训练集中的图像进行分类,并接受检测到低于阈值MinimumValue
的图像。
根据您获得的结果,您可以为训练集选择合适的阈值。
答案 1 :(得分:1)
我会指出: 实际上,不计算阈值。估计并根据经验选择。这是尝试和测试的东西。 您必须设置一个值并比较acepts和拒绝,最重要的是:评估错误接受(FA)和错误拒绝(FR)的数量
理想情况下,预期阈值EER是这样的,当FA的速率等于FR速率时。
您可以采取的范围是[最小,最大]距离并测试10,20,或者您希望阈值在范围内的数量。 一些论文表明阈值是相对于最大值的百分比值。这就像0.8 * Max。
当然,您应该多次尝试找到最适合每个人的阈值。
最好找到准备好了。你有每个图像的阈值。 我希望我一直很有帮助。