我想知道如何创建指纹数据库。如果指纹存储为图像,您如何比较数据库中的图像,或者创建像TinEye这样的图像搜索引擎?
我知道这是一个很大的话题,但我只是在寻找一个起点。这可以使用 Python/Django 库和 MySQL 来完成吗?
我想知道如何创建指纹数据库。如果指纹存储为图像,您如何比较数据库中的图像,或者创建像TinEye这样的图像搜索引擎?
我知道这是一个很大的话题,但我只是在寻找一个起点。这可以使用 Python/Django 库和 MySQL 来完成吗?
OpenCV 附带了一个示例程序,可以满足您的需求。它被称为find_obj.py。在您的编辑器中将其拉起并更改:
surf = cv2.SURF(1000)
到
surf = cv2.SURF(100)
这应该会在指纹扫描的负片中找到许多“内部”兴趣点。
您可以尝试使用许多变量,并最终为您要比较的图像类型找到最佳配置。更改示例以允许您将单个图像与整个目录进行比较也相当简单。
我应该指出,这只对执法部门使用的数字化指纹扫描有效。
作为一种非常简单的方法,您可以抓取所有图像并为每个图像计算哈希值。
稍后,当用户提交图像以进行搜索时,您也为此计算哈希并在数据库中查找相同的哈希。
但是,这确实是一种非常简单的方法,并且只有在搜索精确的图像副本时才会起作用。理想情况下,每张图像都应转换为一些简化的特征集(以容忍同一图像的不同版本——不同的格式、大小、噪声等)用于比较。例如,值得尝试将图像(抓取和提交以供搜索)转换为 128x128 大小的灰度并计算其哈希值。
Python 图像库可能是开始图像处理的最佳库。
最常用于实时图像处理的库(您不需要实时,但快速不会出错)是OpenCV。它具有 Python 绑定和内置的特征检测算法。另请参阅此比较。
有关图像比较算法的概述,请查看此问题。