Алгоритмов много, каждый со своими изъянами и границами применения. В OpenCV есть практически все, включая патентованные SURF и SIFT. Начать можно отсюда.
самое простое:
1. составление дерева связей расстояний и угла значимых точек каждого изображения (самые дальние: 1)
2. затем - сравнение отклонения этих двух деревьев.
3. получаем процент схожести двух изображений по таким точкам.