我正在从相机中获取面部图像,并存储每个面部框架,直到有足够的图像来训练opencv中的特征脸对象。我可以得到一个普通的特征脸,但是我想知道如何将其存储到服务器上的数据库中,以便以后一个人回来时,我可以得到另一个普通的特征脸,将其发送到服务器并找到最接近的匹配。我曾想过要对该特征脸进行散列并比较散列值,但是我只能将该特征脸本身存储在数据库中,但是我不知道如何将客户端上的特征脸与数据库中的所有特征脸进行比较,而不用提取所有特征脸。从数据库记录下来的单个记录。
有谁知道我如何将特征值或平均特征脸转换为某种字符串或数字,以便将平均特征值与服务器上数据库中的值进行比较?
我如何将其存储到服务器上的数据库中
它必须是实际的数据库服务器,即MySQL还是排序服务器?为什么不将Eigenface映像与Sidecar文件一起存储在磁盘上,其中包含该Eigenface的元信息。
我在考虑要么哈希该特征脸并比较哈希
我建议反对。如果所有像素具有相同的值,则两个图像将仅具有相同的哈希值(不考虑哈希冲突的可能性)。因此,图像的任何比较都是对还是错。大多数比较都是错误的,因为大多数新查询在数据库中都不会完全匹配。
但是我不知道如何将客户端上的特征面与数据库中的所有特征面进行比较,而又不从数据库中提取每条记录?有人知道如何将特征值或特征面转换为字符串或数字吗?我可以将平均特征值与服务器上数据库中的值进行比较的某种形式?
关键是要使用的图像,通常被称为描述符的抽象表示,并在这些描述符定义的距离度量来评价它们的相似性,例如,假设的度量d
和两个图像的描述符A
和B
,DA
和DB
。然后d(DA, DA) = 0
和d(DA, DB) >= 0
。
给定数据库中Eigenface图像的d
所有描述符和度量,您可以将所有描述符组织在特殊的数据结构中(例如,使用KD树),以便查找新查询图像(即该图像的描述符)。通过这种匹配,不再需要将新查询与数据库中的所有图像进行比较。
如果查询的距离Q
和其最近的邻居第一NN1
比查询之间的距离足够小Q
和它的最近邻第二NN2
,d(DQ, DNN1) < a * d(DQ, DNN2)
(a < 1
),然后Q
和NN1
可以被认为是匹配。
这是一个非常广泛的主题,具有大量的方法和意见。但是上面的概述通常用于类似的应用程序。
这些关键字可以帮助您进行进一步调查
通常,文献调查是一种概述已完成,有效和无效的好方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句