- Так есть ли искажение ImageB в ImageA?
- Насколько "точными" являются изображения, например, пиксель за пикселем, они будут одинаковыми ?
- Сколько вычислительных мощностей у вас есть для этого?
Если ответы на первые два вопроса Нет и Да , то у вас есть простая проблема. Это также помогает узнать ответ на Q3 .
Обновление:
Основная идея такова: вместо сопоставления окна вокруг каждого пикселя в изображении B с каждым пикселем в изображении A и проверки корреляции, давайте определим точки интереса (или особенности) в обоих изображениях, которые будут отслеживаемыми, Таким образом, похоже, что углы действительно отслеживаются, так как область вокруг них похожа (не вдаваясь в детали) - следовательно, давайте найдем несколько действительно сильных углов на обоих изображениях и найдем углы, которые выглядят наиболее похожими.
Это сводит проблему поиска каждого пикселя в B с A к поиску, скажем, 500 углов в B с 1000 углами в A (или что-то в этом роде) - намного быстрее.
И что удивительно, у вас есть несколько таких угловых детекторов в вашем распоряжении в OpenCV . Если вы не чувствуете, что используете emguCV (C # varriant), то используйте детектор FAST , чтобы найти совпадающие углы и, таким образом, найти несколько объектов между изображениями. После этого вы можете найти местоположение в верхнем левом углу изображения.