Добрый день, коллеги.
Есть задачка с распознаванием образов.
Требуется найти соответствие картинок из одного набора — картинкам из другого набора, по признакам похожести.
Примеры двух наборов — на картинке. Там же помечены некторые правильные соответствия. Картинка увеличина, для лучшего восприятия.

Размер картинок — фиксированный (скажем 17x17).
Изначально картинки цветные, но здесь уже отобраны картинки с одинаковыми преобладающими цветами, поэтому показан только канал яркости.
Ориентация и масштаб объектов, изображенных на картинках — примерно совпадает.
Но не точно, возможны сдвижки и небольшие искажения вращения (до 10 граудсов).
Поэтому попиксельное сранивнение "в лоб" дает плохой результат.
Центр масс у всех картинок находтся в центре.
Сейчас сраваниваю в "лоб", попиксельно, но каждый пиксел сравнивается не только со своим пикселом, но и с его
соседями (то есть фактически с 9 пикселами), затем выбирается минимальная разница...
Метод дает относительно хорошую точность, но совершенно не подходит в плане быстродействия.
Характерный размер первого ряда — до сотни элементов.
Второй ряд — представлет собой БД, и там может быть порядка миллиарда картинок.
Интересуют либо хорошие методы предварительного отбора кандидатов на сравнение, либо средства сортировки кандидатов, либо может какие-то сигнатурные методы сравнения...
Спасибо за любые идеи