如何将面部识别特征值哈希并存储在数据库中以便以后进行比较

ied*_*doc 2 c++ opencv

我正在抓取相机的脸部图像,并存储每个脸部框架,直到有足够的图像来训练opencv中的特征脸对象.我能够得到一个平均的特征脸,但我想知道如何将它存储到服务器上的数据库中以便稍后当一个人回来时,我可以得到另一个平均特征脸,将其发送到服务器并找到最接近的比赛 我想的是哈希表示特征脸和比较哈希,但是我可以将那个平均特征脸本身存储在数据库中,但我不知道如何将客户端上的特征脸与数据库中的所有特征脸进行比较而不是每个从数据库中记录下来.

有没有人知道如何将特征值或平均特征值转换成某种字符串或数字,我可以将平均特征脸值与服务器上数据库中的值进行比较?

nil*_*ils 5

我如何将其存储到服务器上的数据库中

它必须是一个真正的数据库服务器,即MySQL或排序?为什么不将Eigenface图像与sidecar文件一起存储在磁盘上,该文件包含该Eigenface的元信息.

我想的是哈希表示特征脸和比较哈希

我建议反对.如果所有像素具有相同的值,则两个图像将仅具有相同的散列值(不考虑散列冲突的可能性).因此,任何图像比较都是真或假.大多数比较都是错误的,因为大多数新查询在数据库中不会完全匹配.

但我不知道如何比较客户端上的特征脸与数据库中的所有特征脸,而不是从数据库中拉下每一条记录.是否有人知道我如何将特征值或平均特征值转换为字符串或数字我可以将平均特征脸值与服务器上数据库中的值进行比较吗?

关键是要使用的图像,通常被称为描述符的抽象表示,并在这些描述符定义的距离度量来评价它们的相似性,例如,假设的度量d和两个图像的描述符AB,DADB.然后d(DA, DA) = 0d(DA, DB) >= 0.

给定数据库中的Eigenface图像的d所有描述符和度量,您可以组织特殊数据结构中的所有描述符,例如使用KD树,以便找到新查询图像的最近邻居(即该图像的最近邻居)描述).通过这种匹配,不再需要将新查询与数据库中的所有图像进行比较.

如果查询的距离Q和其第一最近邻NN1是比查询之间的距离足够小Q和它的第二最近邻NN2,d(DQ, DNN1) < a * d(DQ, DNN2)(a < 1),然后QNN1可以被认为是匹配.

这是一个非常广泛的主题,有丰富的方法和意见.但上面的概述通常用于类似的应用程序.

这些关键字可以帮助您进一步调查

  • 特征提取和描述符(SIFT,SURF,ORB,FREAK,AKAZE等)
  • 图像描述符,sa /sf/answers/59087941/
  • 关键点和图像匹配
  • 近似最近邻居
  • 人脸检测和识别
  • 可能还有更多......

一般来说,文献调查是一种很好的方式,可以概述已完成的工作,哪些工作正常,哪些工作正常.