Соответствие / корреляция шаблонов OpenCV C ++

У меня есть следующая проблема:
Как показано на скриншоте ниже, у меня есть исходное изображение размером 900×900 пикселей и уменьшенное изображение шаблона размером 300×300 пикселей. Теперь мне нужно вычислить корреляцию между произвольным подразделом исходного изображения и повернутым изображением шаблона изображения. Угол поворота (фи), а также координаты подраздела (x, y) приведены, и мне нужно только вычислить корреляцию. Однако мне нужно повторять всю операцию для разных комбинаций x, y и phi очень часто.

эскиз

Я намерен использовать opencv (версия 3.1) для этой задачи. Поскольку мне нужно повторить операцию для разных комбинаций x, y и phi с одним и тем же исходным и шаблонным изображениями, я ищу очень быстрое решение.
В данный момент я поворачиваю шаблон на заданный угол, используя warpAffine (), а затем использую функцию matchTemplate () для вычисления корреляции.
Однако matchTemplate (), кажется, вычисляет больше свертки, чем простой корреляции, и я думаю, что я ее не использовал. Кроме того, matchTemplate () является узким местом моей программы.
У вас есть идеи, как ускорить это?
Полезно ли в этом случае использовать ускорение графики?
Или может быть полезно сохранить преобразованную в dft версию моих изображений перед выполнением корреляции?
Или у тебя совершенно разные идеи?

Спасибо

0

Решение

Почему это отнимает много времени?

Этот тип сканирования в изображении занимает много времени из-за количества сканирований с различным количеством возможностей (например, шаблон можно поворачивать каждые 2 градуса, а затем вы сканируете все изображение снова и повторяете. Вы можете увидеть растущие возможности решения пространство). Кроме того, выбор шага сканирования может помочь увеличить время поиска, но, скорее всего, упустит оптимальное решение из-за больших интервалов перехода.

Внедрение GPU

Внедрение GPU может помочь увеличить скорость, но нет гарантии. Вы реализация GPU в OpenCV резюме :: :: TemplateMatching CUDA

Другие подходы

В зависимости от типа вашего шаблона, то есть с текстурой или без текстуры и т. Д., Вы можете тщательно создавать функции, которые не зависят от масштаба, такие как SIFT, которые будут относительно быстрее, чем плотное сопоставление с шаблоном. Поскольку у вас большие размеры изображений, обнаружение SIFT в реальном времени будет затруднено, но я могу заверить его, что буду быстрее, чем метод, который вы используете сейчас.

Вы можете проверить вас Эта бумага на некоторых обзорах особенностей изображения.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]