2016-01-18 5 views
3

Я пытался использовать новый алгоритм гомологии RHO в сочетании с перспективойTransform, но, похоже, матрица гомографии, вычисленная RHO, имеет неправильный размер и, следовательно, несовместима с этим метод.Метод гомологии OpenCV RHO не работает с перспективойTransform

См код ниже:

H = findHomography(obj_points, scn_points, RHO, 1.0); 
perspectiveTransform(obj_corners, scene_corners, H); 

После утверждения не удается:

error: (-215) scn + 1 == m.cols in function perspectiveTransform 

Любой ключ? Он отлично работает с RANSAC.

+0

Я не знаю о методе RHO. Но это может быть пороговая проблема. Попробуйте изменить 1.0 на наиболее гибкое возможное значение (я имею в виду порог, принимающий тупиковую гомографию) –

+0

Ну, в своих примерах они используют 1.0 как порог: http://www.cvrobot.net /wp-content/uploads/2015/06/OpenCV3_CVPR_2015_Modules.pptx. Я также пытался с другими значениями порога без везения. – Pablo

+0

Unfortnatnyl У меня нет OpenCV 3.1, чтобы попробовать прямо сейчас. Тем не менее, ваша проблема кажется странной, пока вы можете поставить RANSAC, и все работает нормально! Единственное, что пришло мне в голову, что этот алгоритм может не найти гомографию в некоторых крайних случаях (что нелогично, так как любые 4 не коллинеарные точки могут создавать гомографию), но я не могу думать ни с какими другими возможностями. Удачи! –

ответ

1

Я нашел решение:

С ГУР, я должен проверить матрицу гомографии, чтобы убедиться, что он не является пустым. Предоставление 4 или более баллов для поискаHomography недостаточно для получения матрицы гомографии с помощью этого метода.

Несмотря на то, что он дает около 50 совпадений для вычисления, он извлекает непустую матрицу в 40-50% случаев.

+0

(Один из авторов здесь говорит RHO). Я бы с удовольствием посмотрел ваш тест в, скажем, в Пастбине! Многие из ваших точек в одном столбце или строке? Кроме того, вы выполняете какую-либо нормализацию на входных точках заранее? Я считаю, что наш алгоритм действительно делает _worse_, когда точки предварительно обрабатываются таким образом. Почему мне еще не ясно; Мы оптимизировали для чистой скорости (написание собственных численных решателей на основе дешевых, но менее численно устойчивых алгоритмов), и признаем, что мы можем потерять точность. –

+1

@IwillnotexistIdonotexist конечно. здесь у вас есть код моего метода обнаружения: http://pastebin.com/mK2jZ83Q – Pablo

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

  • Нет связанных вопросов^_^