Я создаю набор совместных хранилищ данных с изображениями и начинаю реализовывать несколько простых / тривиальных алгоритмов поиска и сортировки на основе контента: SIFT, разреженное расстояние цветовой гистограммы, базовый SVD и т. Д.
В настоящее время я использую хэши двоичных данных sha1 в качестве индексов в таблицах PostgreSQL. Эти хеши 'тупые' - они вычисляются путем подачи данных * прямо в модуль Python hashlib.sha1
и хранятся в столбцах char с нулевым числом символов, которые в точности соответствуют представлению sha1 base64.
Было бы довольно панацеей реализовать алгоритм хеширования, который давал бы хэши, подходящие для индексации таблиц Postgres, но который также описывал изображение в некотором роде, как phash или расстояние Хемминга . Хотя phash выглядит хорошим кандидатом, оказывается, что нужно использовать собственный механизм хранения данных и API ... Я ищу что-то менее «готовое», которое будет хорошо работать с моим существующим Python / Postgresql / Solr / Основанная на Redis экосистема.
Это не должно быть самым быстрым - для меня важнее реализовать алгоритм (или алгоритмы), который можно немного взломать и оставаться несколько убедительным.
(*) в основном это не преобразованные или слегка преобразованные урожаи из моих изображений - такие как: содержимое файла изображения JPEG / PNG / DNG, структуры данных профиля ICC, дампы JSON наборов тегов EXIF / IPTC и т. П.