2016-06-14 2 views
3

Я работаю над проектом стабилизации видео с использованием OpenCV, и у меня есть реализация ЦП, но производительность требует улучшения, поэтому я пытаюсь перенести большую часть обработки на GPU ,CUDA эквивалент оценкиRigidTransform в OpenCV 3

текущая реализация в основном использует эти четыре OpenCV функции:

  • cv::goodFeaturesToTrack
  • cv::calcOpticalFlowPyrLK
  • cv::estimateRigidTransform
  • cv::warpAffine

До сих пор я нашел следующие эквиваленты на Графический процессор:

  • cv::cuda::createGoodFeaturesToTrackDetector
  • cv::cuda::SparsePyrLKOpticalFlow
  • cv::cuda::warpAffine

Есть ли CUDA эквивалент estimateRigidTransform?

+0

Я не уверен, что вы хотите один. Это должно быть довольно быстро на процессоре, а накладные расходы, чтобы загрузить его на GPU, могут сделать его медленнее для низкого количества точек. В методе оценкиRigidTransform используется метод наименьших квадратов, который может быть вычислен с использованием cuda cuSolver. Это не должно быть сложно реализовать, если вы действительно этого хотите на GPU. – taarraas

+0

Привет, @taarraas благодарит за комментарий. Я переписываю стабилизацию видео на 100% на графическом процессоре, поэтому я не хочу загружать/выгружать точки, чтобы запустить «оценкуRigidTransform» на процессоре. Если на графическом процессоре нет существующей реализации, я напишу его в CUDA, просто подумал, что попрошу, если я что-то пропустил :) –

ответ

2

OpenCV не имеет реализации для оценкиRigidTransform на CUDA. Существует OpenCV на основе проекта на GitHub, который имеет функции для вычисления homographies и оценки жестких преобразований: https://github.com/danielsuo/cuSIFT

Вот функция вам нужно: https://github.com/danielsuo/cuSIFT/blob/master/extras/rigidTransform.cu

Смежные вопросы