Вычисление матрицы гомографии с использованием произвольных известных геометрических соотношений

Я использую OpenCV для системы оптических измерений. Мне нужно выполнить преобразование перспективы между двумя изображениями, снятыми цифровой камерой. В поле зрения камеры я поместил набор маркеров (лежащих в одной плоскости), которые я использую в качестве соответствующих точек на обоих изображениях. Используя позиции маркеров, я могу вычислить матрицу гомографии. Проблема в том, что измеряемый объект, изображения которого я действительно хочу преобразовать, расположен на небольшом расстоянии от маркеров и параллельно плоскости маркеров. Я могу измерить это расстояние.

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

В моем решении есть сильное требование не использовать измеренные точки объекта для расчета гомографии (именно поэтому мне нужны другие маркеры в поле зрения).

Пожалуйста, дайте мне знать, если описание не является точным.

введите здесь описание изображения

На рисунке представлено примерное изображение.

Красный прямоугольник — измеряемый объект. Физически он расположен на небольшом расстоянии за круглыми маркерами.

Я делаю снимки объекта с разных позиций камеры. Измеряемый объект может деформироваться между каждым захватом. Используя круглые маркеры, я хочу преобразовать изображение объекта в те же координаты. Я могу измерить расстояние между объектом и маркерами, но я не знаю, как мне изменить матрицу гомографии, чтобы работать с измеряемым объектом (вместо маркеров).


person Marcin    schedule 10.10.2011    source источник
comment
Фото было бы лучше, чем тысяча слов   -  person koan    schedule 10.10.2011
comment
Почему вы пытаетесь найти гомографию? Что вы будете с этим делать? Я спрашиваю это, потому что трудно понять ваш вопрос. Думаю, теперь я это понимаю. Я не знаю ответа прямо сейчас, но, возможно, другой подход даст вам более быстрый ответ, поэтому я хотел бы знать, чего вы пытаетесь достичь.   -  person Unapiedra    schedule 11.10.2011


Ответы (1)


Этот вопрос довольно старый, но он интересен и может быть кому-то полезен.

Во-первых, вот как я понял проблему, изложенную в вопросе:

У вас есть два изображения I1 и I2, полученные одной и той же цифровой камерой в двух разных положениях. На обоих изображениях показан набор маркеров, лежащих в общей плоскости pm. Также имеется измеряемый объект, видимая поверхность которого лежит в плоскости po, параллельной плоскости маркера, но с небольшим смещением. Вы вычислили гомографию Hm12, сопоставив позиции маркеров в I1 с соответствующими позициями маркеров в I2 и вы измерили смещение dmo между плоскостями po и pm. Исходя из этого, вы хотите рассчитать гомографию Ho12, отображающую точки измеряемого объекта в I1 в соответствующие точки в I< под>2.

Несколько замечаний по этой проблеме:

Во-первых, обратите внимание, что гомография — это отношение между точками изображения, тогда как расстояние между плоскостью маркеров и плоскостью объекта — это расстояние в мировых координатах. Использование последнего для вывода о первом требует метрической оценки положения камеры, т. е. необходимо определить евклидиан и максимум относительное положение и ориентация камеры для каждого из двух изображений. Требование евклидова подразумевает, что цифровая камера должна быть откалибрована, что не должно быть проблемой для «оптической измерительной системы». Требование в масштабе подразумевает, что истинное трехмерное расстояние между двумя заданными трехмерными точками должно быть известно. Например, вам нужно знать истинное расстояние l0 между двумя произвольными маркерами.

Поскольку нам нужна только относительная поза камеры для каждого изображения, мы можем использовать трехмерную систему координат, центрированную и выровненную с системой координат камеры для I1. . Следовательно, мы будем обозначать матрицу проекции для I1 как P1 = K1 * [ I | 0]. Затем мы обозначаем матрицу проекции для I2 (в той же трехмерной системе координат) как P2 = K2 * [ R2 | т2]. Обозначим также через D1 и D2 коэффициенты, моделирующие дисторсию объектива соответственно для I1 и I2 .

Поскольку одна цифровая камера зафиксировала как I1, так и I2, вы можете предположить, что K1 = K2 = K и D1 = D2 = D. Однако, если I1 и I2 были получены с большая задержка между захватами (или с другим зумом и т.п.), то правильнее будет считать, что задействованы две разные матрицы камер и два набора коэффициентов дисторсии.

Вот как можно решить такую ​​проблему:

Шаги для оценки P1 и P2 следующие:

  1. Оценить K1, K2 и D1, D2 с помощью калибровки цифровой камеры

  2. Используйте D1 и D2, чтобы скорректировать изображения I1 и I2 для искажения объектива, затем определите маркер позиции в исправленных изображениях

  3. Вычислите фундаментальную матрицу F12 (сопоставление точек в I1 эпилиням в I2) по позициям соответствующих маркеров и выведите основную матрицу E 12 = K2T * F12 * K1

  4. Выведите R2 и t2 из E12 и одноточечного соответствия (см. этот ответ на соответствующий вопрос). На данный момент у вас есть аффинная оценка позы камеры, но не масштабная оценка, так как t2 имеет единичную норму .

  5. Используйте измеренное расстояние l0 между двумя произвольными маркерами, чтобы вывести правильную норму для t2.

  6. Для наилучшей точности вы можете уточнить P1 и P2, используя настройку пакета с K1 и ||t2. || фиксировано на основе соответствующих позиций маркеров в I1 и I2.

На данный момент у вас есть точная метрическая оценка поз камеры P1 = K1 * [ I | 0 ] и P2 = K2 * [ R2 | т2]. Теперь шаги для оценки Ho12 следующие:

  1. Используйте D1 и D2, чтобы скорректировать изображения I1 и I2 для искажения объектива, затем определите маркер позиции в исправленных изображениях (то же, что и 2. выше, нет необходимости делать это повторно) и оценить Hm12 из этих соответствующих позиций

  2. Вычислите вектор 3x1 v, описывающий плоскость маркеров pm, решив следующее линейное уравнение: Z * Hm12 = K2 * ( R2 - t2 * vT ) * K1- 1 (см. HZ00, глава 13, результат 13.5 и уравнение 13.2 для справки по этому вопросу), где Z — коэффициент масштабирования. Определите расстояние до начала координат dm = ||v|| и нормали n = v / ||v||, которые описывают плоскость маркеров pm в 3D.

  3. Так как плоскость объекта po параллельна pm, они имеют одинаковые нормаль n. Следовательно, вы можете вывести расстояние до начала координат do для po по расстоянию до начала координат dm для pm. sub> и от измеренного смещения плоскости dmo следующим образом: do = dm ± dmo (знак зависит от взаимного расположения плоскостей: положительный, если pm ближе к камере для I1, чем po, отрицательный иначе).

  4. Из n и do, описывающих плоскость объекта в 3D, сделайте вывод о гомографии Ho12 = K2 * ( R2 - t2 * nT / do ) * K1 >-1 (см. HZ00, глава 13, уравнение 13.2)

  5. Гомография Ho12 сопоставляет точки измеряемого объекта в I1 с соответствующими точками в I2, где предполагается, что и I1, и I2 скорректированы для искажения объектива. Если вам нужно сопоставить точки с исходным искаженным изображением и с ним, не забудьте использовать коэффициенты искажения D1 и D2 для преобразования входных и выходных точек Но12.

Ссылка, которую я использовал:

[HZ00] «Геометрия с несколькими представлениями для компьютерного зрения», Р. Хартли и А. Зиссерман, 2000 г.

person BConic    schedule 04.04.2014