- PVSM.RU - https://www.pvsm.ru -
В продолжение топика [1]
Итак, в презентации было упомянуто, что для поиска у всех изображений:
Что же делать с картинкой далее?
Мой вариант:
Хеш делается независимо от разрешения.
Для каждого пикселя берем значение яркости, затем смотрим на соседний пиксель справа, если справа ярче — добавляем бит 0 к хешу, если темнее — 1.
Первый бит должен быть 0, если нет — инвертируем перед тем как считать остальные.
Для размера 7x7 получается 49 бит, для 16х16 — 1 байт.
Довольно небольшой размер для хеша.
Оптимальным путем было установлено, что размер 7х7 хорошо справляется на небольших (несколько тысяч) объемах изображений.
Чем меньше размер хеша, тем чаше встречаются неожиданные дубликаты и больше ошибок, чем больше — тем выше точность.
Как же повысить точность? У меня было простое решение:
Вначале ищем все изображения по максимально большому хешу, если не нашлось или нашлось мало — ищем дальше по маленьким хешам.
На создание нескольких вариантов хешей уходило не более нескольких секунд (для картинок 10000х10000), что сравнимо с временем загрузки изображения.
Что склеивать? Тут ответа у меня нет. Однозначно можно склеивать, если совпал один из больших хеши (выше 7х7). Для более сложных случаев нужна дополнительная проверка.
Спасибо за внимание
Автор: w999d
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/7366
Ссылки в тексте:
[1] топика: http://habrahabr.ru/post/143667/
Нажмите здесь для печати.