MegaMufa
@MegaMufa

POSTGRES: как осуществить поиск схожих изображений с использованием phash?

Добрый вечер.

Как-то интересовался вопросом поиска похожих изображений: Сравнение изображений и поиск схожих?
Суть в следующем: на сайте хранятся изображения, данные о которых лежат в бд. При загрузке нового изображения высчитывается его phash и в базе ищутся записи с небольшим отклонением. Есть таковых нет - значит изображение новое и раньше не загружалось.

Я нашел, как посчитать phash. Реализация на яве: pastebin.com/Pj9d8jt5
Нахожу хеш. Но как хранить хэши и как осуществить поиск по расстоянию Хэмминга?

Собственно, вот что не понятно:
1. Хранить в виде строки или есть более подходящий формат, при условии что там только единицы и нули?

2. Как осуществлять поиск? Грубо говоря:
select * from tbl_iamge where hammingDistance(<мой хеш>, hash) < <минимальное допустимое различие>
Есть ли встроенный оператор для таких расчетов или нужно писать свою функцию?

3. Как строить индекс по этому полю? Нужно использовать функциональный индекс по этой функции или есть другие средства?

Я в этой теме очень слабо разбираюсь. Поэтому буду рад любым советам.
  • Вопрос задан
  • 3110 просмотров
Пригласить эксперта
Ответы на вопрос 1
metamorph
@metamorph
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы