2013-02-10 5 views
3

Я пытаюсь оценить оценку позиции (фактически [0]: 3DOF] вращение - все, что мне нужно) от планарного маркера с 4 углами = 4 копланарных точки.
До сегодняшнего дня я был под впечатлением от всего, что я читал, что вы всегда будете вычислять гомографию (например, используя DLT) и разлагать эту матрицу с использованием различных доступных методов (Faugeras, Zhang, аналитический метод, который также описан в this post here on stackexchange) и уточнить его, используя нелинейную оптимизацию, если это необходимо.Путаница о методах оценки позы

Первый второстепенный вопрос: если это аналитический метод (просто взяв два столбца из матрицы и создав из них ортонормированную матрицу, приводящую к желаемой матрице вращения), что нужно оптимизировать? Я пробовал это в Matlab, и результат плохо дрожит, поэтому я могу ясно видеть, что результат не идеален или даже достаточен, но я также не понимаю, почему нужно было бы использовать довольно дорогие и сложные SVD, используемые Faugeras и Zhang если этот простой метод дает результаты уже.

Затем существуют методы оценки итеративной позы, такие как алгоритм ортогональной итерации (OI) Лу и др. или алгоритм оценки надежной позы Швайгофера и Пинца, где даже не упоминается слово «гомография». Все, что им нужно, это оценка начальной позы, которая затем оптимизируется (эталонная реализация в Matlab, выполненная Schweighofer, использует алгоритм OI, например, который сам использует какой-то метод на основе SVD).

Моя проблема: все, что я читал до сих пор, было «4 очка? Гомография, гомография, гомография. Распад? Ну, сложно, в общем, не уникально, несколько методов. Теперь этот итеративный мир открывается, и я просто не могу связать эти два мира в моей голове, я не совсем понимаю их отношение. Я не могу даже четко сформулировать свою проблему, я просто надеюсь, что кто-то поймет, где я.

Я был бы очень благодарен за намек или два.

Редактировать: Правильно ли сказать: 4 точки на плоскости и их изображение связаны гомографией, то есть 8 параметрами. Поиск параметров позы маркера можно сделать путем вычисления и разложения матрицы гомографии с помощью Faugeras, Zhang или прямого решения, каждый из которых имеет свои недостатки. Это также может быть сделано с использованием итеративных методов, таких как алгоритм OI или Schweighofer, которые ни в коем случае не вычисляют матрицу гомографии, а просто используют соответствующие точки и требуют начальной оценки (для которой можно было бы использовать начальное предположение из разложения гомографии).

+0

Мы должны начать с основами. У вас уже есть эти хорошие 4 угла? Если это так, делать нечего, проблема уже решена. Что произойдет, если вы не сможете точно определить эти четыре точки? Теперь другие подходы имеют смысл, не так ли? – mmgp

+0

Хм, найти эти 4 угловые точки - вопрос обработки изображений, не так ли? Я использую алгоритм обнаружения прямоугольника, используемый ARToolKitPlus, так что да, дайте или возьмите несколько пикселей шума, у меня есть 4 угла. Но ни один из этих алгоритмов не помогает мне найти углы, но в использовании этих угловых координат, чтобы найти позу. Я не вижу, как итеративный алгоритм может улучшить точность моих угловых точек в любом случае, ведь все изображение у меня есть. – Garp

+0

Я только что понял, что я не написал явно, что мне нужно вращение вокруг трех осей, а не только по оси z (с плоскостью маркера при z = 0), и в этом случае, конечно, проблема будет «решена уже» с 4 угловых точки. Это то, что вы говорили? – Garp

ответ

2

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

Является ли ваш шаблон таким, что углы могут быть уверенно расположены с точностью субпикселя? Я рекомендую использовать шаблоны «шахматной доски» для углов, которые позволяют использовать хороший и простой итеративный алгоритм уточнения для достижения субпиксельной точности (искать «итеративный алгоритм седловых точек» или искать документы в OpenCV).

+0

Хорошо, спасибо. Мой рисунок - простой черный прямоугольник на белом фоне. Алгоритм, который я использую в настоящее время, не позволяет использовать субпиксельную точность, но я планировал попробовать что-то вроде углового детектора Harris, который Matlab предлагает из коробки. Это не было моей проблемой, хотя, я был смущен тем, как все образцы кода новичка, учебные пособия, а также научные статьи говорили о том, как вычислить гомографию, когда, по-видимому, это действительно кажется действительно необходимым при обработке изображений, таких как исправление. Я начинаю чувствовать, что оценка позы из гомографий громоздка. – Garp

+0

Алгоритм Харриса сам по себе не является субпиксельным тоном (хотя я не уверен, что именно делает реализация Matlab). Его решение обычно используется в качестве отправной точки в итеративном алгоритме уточнения подпикселя. С 4 очками вы не можете сделать лучше, чем оценка гомографии - любое другое решение будет таким же нестабильным. –

+0

О, хорошо, на самом деле еще не изучили это. Я также думал о том, чтобы использовать Hough Transform, которое должно давать субпиксельную точность, если я не ошибаюсь, но это дорого. Причина, по которой я не собираюсь использовать разложение гомографии, заключается в том, что я еще не нашел алгоритма декомпозиции, который имеет дело с двусмысленными позами, такими как Schweighofer. Похоже, мне придется вычислить матрицу гомографии, тем не менее, для чтения информации, хранящейся внутри маркера, поэтому, очевидно, я бы предпочел, чтобы это не пропало, если можно так выразиться. – Garp

0

Я не предоставит вам полный ответ, но, похоже, по крайней мере, один из моментов, которые необходимо уточнить это:

гомография является обратимым отображением из P^2 (гомогенное 3 -вектора) к себе, которые всегда могут быть представлены обратимой матрицей 3x3.Сказав это, обратите внимание, что если ваши 3D-точки являются копланарными, вы всегда сможете использовать гомографию для привязки точек мира к точкам изображения.

Как правило, точка в 3-пространстве представлена ​​в однородных координатах как 4-вектор. Проективное преобразование, действующее на P^3, представлено неособой матрицей 4x4 (15 степеней свободы, 16 элементов минус одна для общего масштаба).

Итак, нижняя строка заключается в том, что если ваша модель плоская, вы сможете уйти с гомографией (8 DOF) и соответствующим алгоритмом, в то время как в общем случае вам нужно будет оценить матрицу 4x4 и вам понадобится для этого используется другой алгоритм.

Надеется, что это помогает,

Alex