2

我一直在研究基于 bytefish 提供的 fisherfaces 实现(pre opencv 2.4 版本)的人脸识别器。实际的 fisherfaces 算法是相同的,不同之处主要是方便的:

- 图像/存储压缩。

- 按字符串分类,而不是整数。

- 包容性预测(按百分比排序的多个结果)。

注意:百分比的计算公式为: percent = 1.0 - (lowdist/distthreshold) 其中 lowdist 是 src 矩阵(测试人脸图像)和投影集中的矩阵(训练人脸图像)之间的最小欧几里德距离,distthreshold 是允许的最大距离。

包容性预测是我遇到麻烦的地方。我还没有找到一种体面的方法来计算要使用的最佳阈值。目前我只是选择 2200.0 作为随机值进行测试。这当然会产生很多不稳定的结果,尤其是当面部图像来自具有不同照明和分辨率的随机源时。

所以我的问题是:有没有办法计算与渔脸一起使用的最佳距离阈值?

我已将源代码提供给下面的识别器。

忽略方法“FBaseLDARecognizer::calculateOptimalThreshold”,它还没有完成。目标是将一组人脸添加到识别器中,然后针对一组已知分类的未知人脸进行测试,并获得最大和最小正确距离。据我所知,我还没有想到一种有用的方法来使用这些数据。所以目前它总是返回 0.0。

注意:这还没有完成,我还没有清理一些性能问题。此外,此代码未注释。如果需要进一步解释,请告诉我,我可以评论并重新上传文件。

源文件:

标题

资源

4

0 回答 0