Вычисление матрицы гомографии с использованием произвольных известных геометрических соотношений - PullRequest
5 голосов
/ 10 октября 2011

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

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

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

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

enter image description here

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

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

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

1 Ответ

2 голосов
/ 04 апреля 2014

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

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

У вас есть два изображения I 1 и I 2 , полученные одной и той же цифровой камерой в двух разных положениях. Оба изображения показывают набор маркеров, которые все лежат в общей плоскости p m . Существует также измеряемый объект, видимая поверхность которого лежит в плоскости p o , параллельной плоскости маркера, но с небольшим смещением. Вы вычислили гомографию H m 12 , сопоставляя позиции маркеров в I 1 с соответствующими позициями маркеров в I 2 и измерили смещение d mo между плоскостями p o и p m . Исходя из этого, вы хотите вычислить гомографию H o 12 , отображающую точки на измеряемом объекте в I 1 на соответствующие точки в I 2 .

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

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

Так как нам нужна только относительная позиция камеры для каждого изображения, мы можем выбрать использование 3D-системы координат, центрированной и выровненной с системой координат камеры для I 1 . Следовательно, мы будем обозначать матрицу проекции для I 1 через P 1 = K 1 * [I | 0]. Затем мы обозначим матрицу проекции для I 2 (в той же трехмерной системе координат) через P 2 = K 2 * [R 2 | т 2 ]. Мы также будем обозначать через D 1 и D 2 коэффициенты, моделирующие искажения объектива соответственно для I 1 и I 2 .

Поскольку одна цифровая камера приобрела I 1 и I 2 , можно предположить, что K 1 = K 2 = K и D 1 = D 2 = D. Однако, если I 1 и I 2 были получены с большой задержкой между При съемке (или с другим масштабированием и т. д.) будет точнее учитывать, что задействованы две разные матрицы камеры и два набора коэффициентов искажения.

Вот как вы могли бы подойти к такой проблеме:

Шаги для оценки P 1 и P 2 следующие:

  1. Оценка K 1 , K 2 и D 1 , D 2 через калибровку цифровой камеры

  2. Используйте D 1 и D 2 для исправления изображений I 1 и I 2 для искажения объектива, затем определите позиции маркера на исправленных изображениях

  3. Вычислить основную матрицу F 12 (отображение точек в I 1 на эпилины в I 2 ) из соответствующих позиций маркеров и вывести необходимая матрица E 12 = K 2 T * F 12 * K 1

  4. Выведите R 2 и t 2 из E 12 и соответствие по одному пункту (см. этот ответ соответствующемувопрос).На данный момент у вас есть аффинная оценка позы камеры, но не в масштабе , поскольку у t 2 есть единичная норма.

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

  6. Для лучшей точности вы можете уточнить P 1 и P 2 , используя регулировку связки, с K 1 и || t 2 ||фиксированный, основанный на соответствующих позициях маркера в I 1 и I 2 .

На данный момент, у вас есть точный метрика оценка позы камеры P 1 = K 1 * [I |0] и P 2 = K 2 * [R 2 2 ].Теперь шаги для оценки H o 12 следующие:

Используйте D 1 и D 2 для исправления изображений I 1 и I 2 для искажения объектива, затем определитеположения маркеров на исправленных изображениях (как 2. выше, повторять это не нужно) и оцените H m 12 из этих соответствующих позиций

Вычислить вектор 3x1 v, описывающий плоскость маркеров p m , путем решения этого линейного уравнения: Z * H m 12 = K 2 * (R 2 - т 2 * v T ) * K 1 -1 (см. справку по HZ00, глава 13, результат 13.5 и уравнение 13.2), где Z - коэффициент масштабирования.Выведите расстояние до начала координат d m = || v ||и нормаль n = v / || v ||, которые описывают плоскость маркеров p m в 3D.

Так как плоскость объекта p o параллельно p m , они имеют одинаковые нормальные n.Следовательно, вы можете вывести расстояние до начала координат d o для p o от расстояния до начала координат d m для p m и отизмеренное смещение плоскости d mo , как указано ниже: d o = d m ± d mo (знак зависит от относительного положенияплоскостей: положительное, если p m ближе к камере для I 1 , чем p o , отрицательное в противном случае).

Из n и d o , описывающих плоскость объекта в 3D, выведите гомографию H o 12 = K 2 *(R 2 - т 2 * n T / d o ) * K 1 -1 (см. HZ00, глава 13, уравнение 13.2)

Гомография H o 12 отображает точки на измеряемом объекте в I 1 до соответствующих точек в I 2 , где предполагается, что I 1 и I 2 скорректированы с учетом искажения объектива.Если вам нужно отобразить точки от и до исходного искаженного изображения, не забудьте использовать коэффициенты искажения D 1 и D 2 для преобразования входных и выходных точек H o 12 .

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...