Как знать, имеет ли Октава полный доступ к диапазону памяти на 64 бита

У меня есть идея, которая может сработать, и, скорее всего, она будет очень быстрой. Вы можете выполнить выборку изображения с разрешением 80x60 или сравнимым с ним и преобразовать его в шкалу серого (после дополнительной выборки это будет быстрее). Обработайте оба изображения, которые вы хотите сравнить. Затем запустите нормализованную сумму квадратов разностей между двумя изображениями (изображение запроса и каждое из БД) или, что еще лучше, нормализованную перекрестную корреляцию, которая дает ответ ближе к 1, если оба изображения похожи. Затем, если изображения похожи, вы можете перейти к более сложным методам, чтобы убедиться, что это те же изображения. Очевидно, что этот алгоритм является линейным с точки зрения количества изображений в вашей базе данных, поэтому даже при использовании современного оборудования он будет очень быстрым - до 10000 изображений в секунду. Если вам нужна инвариантность к вращению, то для этого небольшого изображения можно вычислить доминирующий градиент, а затем всю систему координат можно повернуть в каноническую ориентацию, хотя это будет медленнее. И нет, здесь нет инвариантности к масштабированию.

Если вы хотите что-то более общее или использовать большие базы данных (миллион изображений), то вам нужно изучить теорию извлечения изображений (за последние 5 лет появилось множество статей). В других ответах есть несколько указателей. Но это может быть излишним, и предложенный гистограммный подход сделает эту работу. Хотя я думаю, что сочетание множества разных быстрых подходов будет еще лучше.

8
задан sideshowbarker 6 October 2015 в 00:34
поделиться