У меня есть следующая проблема:
Как показано на скриншоте ниже, у меня есть исходное изображение размером 900×900 пикселей и уменьшенное изображение шаблона размером 300×300 пикселей. Теперь мне нужно вычислить корреляцию между произвольным подразделом исходного изображения и повернутым изображением шаблона изображения. Угол поворота (фи), а также координаты подраздела (x, y) приведены, и мне нужно только вычислить корреляцию. Однако мне нужно повторять всю операцию для разных комбинаций x, y и phi очень часто.
Я намерен использовать opencv (версия 3.1) для этой задачи. Поскольку мне нужно повторить операцию для разных комбинаций x, y и phi с одним и тем же исходным и шаблонным изображениями, я ищу очень быстрое решение.
В данный момент я поворачиваю шаблон на заданный угол, используя warpAffine (), а затем использую функцию matchTemplate () для вычисления корреляции.
Однако matchTemplate (), кажется, вычисляет больше свертки, чем простой корреляции, и я думаю, что я ее не использовал. Кроме того, matchTemplate () является узким местом моей программы.
У вас есть идеи, как ускорить это?
Полезно ли в этом случае использовать ускорение графики?
Или может быть полезно сохранить преобразованную в dft версию моих изображений перед выполнением корреляции?
Или у тебя совершенно разные идеи?
Спасибо
Почему это отнимает много времени?
Этот тип сканирования в изображении занимает много времени из-за количества сканирований с различным количеством возможностей (например, шаблон можно поворачивать каждые 2 градуса, а затем вы сканируете все изображение снова и повторяете. Вы можете увидеть растущие возможности решения пространство). Кроме того, выбор шага сканирования может помочь увеличить время поиска, но, скорее всего, упустит оптимальное решение из-за больших интервалов перехода.
Внедрение GPU
Внедрение GPU может помочь увеличить скорость, но нет гарантии. Вы реализация GPU в OpenCV резюме :: :: TemplateMatching CUDA
Другие подходы
В зависимости от типа вашего шаблона, то есть с текстурой или без текстуры и т. Д., Вы можете тщательно создавать функции, которые не зависят от масштаба, такие как SIFT, которые будут относительно быстрее, чем плотное сопоставление с шаблоном. Поскольку у вас большие размеры изображений, обнаружение SIFT в реальном времени будет затруднено, но я могу заверить его, что буду быстрее, чем метод, который вы используете сейчас.
Вы можете проверить вас Эта бумага на некоторых обзорах особенностей изображения.
Других решений пока нет …