valbok / img.chk

37 stars 13 forks source link

Вопрос. Как сжать opencv ORB дескрипторы 32 байта в 8 байт с помощью phash? #7

Open Taraflex opened 6 years ago

Taraflex commented 6 years ago

Не знал как с вами лучше связаться по вопросу к статье, поэтому решил написать сюда. В первую очередь, огромное вам спасибо за статьи https://habrahabr.ru/post/211773/ https://habrahabr.ru/post/211264/ https://habrahabr.ru/post/205398/ очень сильно помогли в моей текущей задаче.

Продублирую сюда вопрос https://toster.ru/q/501115

`===================================== Пытаюсь сделать поиск по мотивам статьи https://habrahabr.ru/post/211773/ есть там такой момент Так как наш хеш это 64битное число, то требуется 32 байта дескриптора ужать в 8 байт и при этом не сильно потерять в точности. После некоторых тестов было решено попробовать эти 32 байта представить в виде матрицы 16x16 бит. А потом эту матрицу пропустить через перцептивный хеш PHash. Результатом должно было оказаться как раз 64 битное число.

И вот как то у меня идей нет, как эту матрицу скормить в cv::dct из opencv или https://www.phash.org/ Интересует решение на c++ но сойдет и любом другом языке В репозитории у автора статьи (огромный ему респект кстати) не нашел примера с конвертированием дескриптора в хэш https://github.com/valbok/img.chk =====================================`

Не особо силен в математике, а готовые реализации phash что я находил в основном используют матрицы 3232 или 88 и предполагают получение цветов а не битовых данных 0/1, можете подсказать пожалуйста в каком направлении мне искать? Или же просто считать биты полноценными цветами и использовать в либах с phash напрямую? Это будет корректно?