Тривиальным способом вычисления хэша будет следующий. Получить все дескрипторы из изображения (скажем, N из них). Каждый дескриптор представляет собой вектор из 128 чисел (их можно преобразовать в целые числа от 0 до 255). Итак, у вас есть набор из N * 128 целых чисел. Просто запишите их один за другим в строку и используйте это как хеш-значение. Если вы хотите, чтобы хеш-значения были небольшими, я считаю, что есть способы вычислить хеш-функции строк, поэтому преобразуйте дескрипторы в строку, а затем используйте значение хеш-функции этой строки.
Это может сработать, если вы хотите найти точные дубликаты. Но кажется (поскольку вы говорите о масштабе, вращении и т. Д.), Вы просто хотите найти «похожие» изображения. В этом случае использование хеша, вероятно, не очень хороший способ. Вы, вероятно, используете некоторый детектор точек интереса, чтобы найти точки, в которых можно вычислить дескрипторы SURF. Представьте, что он вернет тот же набор точек, но в другом порядке. Внезапно ваше хеш-значение будет сильно отличаться, даже если изображения и дескрипторы одинаковы.
Итак, если бы мне нужно было надежно найти похожие изображения, я бы использовал другой подход. Например, я мог бы векторно-квантовать дескрипторы SURF, строить гистограммы векторно-квантованных значений и использовать пересечение гистограммы для сопоставления. Вы действительно должны использовать хеш-функции (может быть, для эффективности), или вы просто хотите использовать что-нибудь для поиска похожих изображений?