Для решения задачи привязки аэроснимков к местности был использован следующий подход:
- Создавались две чёрно-белые копии подложки, уменьшенные в 20 и в 10 раз, которые обрабатывались фильтром adaptive thresholding.
- Для каждого изображения, положение на подложке которого нужно было найти, с постепенно уменьшающимся шагом вращения и смещения относительно копии подложки вычислялась разница между изображением и фрагментами такого же размера на меньшей копии подложки.
- Для пяти фрагментов, разница с которыми минимальна, производился перебор нескольких фрагментов в окрестности с минимальным шагом на большей копии подложки.
- Координаты фрагмента на большей копии подложки, разница с которым оказалась минимальной, считался искомым ответом.
- Для изображений с облаками (с номерами больше 800) дополнительно настраивался контраст и с помощью метода findContours выделялись зоны с облаками (маски), которые не учитывались при вычислении разницы изображения с фрагментом подложки.
Python 3, Pillow, OpenCV, NumPy
Алгоритм является наивным и. скорее всего, в той или иной модификации уже описан разными авторами.