Поиск координат реального мира точки изображения

Я ищу много ресурсов в Интернете в течение многих дней, но я не смог решить проблему.

У меня есть проект, в котором я должен обнаружить положение кругового объекта на плоскости. Так как на плоскости все, что мне нужно, это x и y position (not z). Для этой цели я решил пойти с обработкой изображений. Камеры (один вид, а не стерео) положение и ориентация фиксируется по отношению к эталонной системе на плоскости координат и известны

Я обнаружил координаты пикселей изображения центров окружностей с помощью opencv. Теперь мне нужно преобразовать координацию. к реальному миру.

http://www.packtpub.com/article/opencv-estimating-projective-relations-images на этом сайте и на других сайтах гомографическое преобразование называется:

p = C [R | T] P; где P - координаты реального мира, а p - координата пикселя (в гомографической координате). C - матрица камеры, представляющая внутренние параметры, R - матрица вращения, а T - трансляционная матрица. Я выполнил руководство по калибровке камеры на opencv (применил исходный файл камеры калибровки), у меня есть 9 штрафных шахматных изображений, а в качестве вывода у меня есть внутренняя матрица камеры, а также трансляционные и вращательные параметры каждого изображения.

У меня есть встроенная матрица матрицы 3x3 (фокусное расстояние и центральные пиксели) и внешняя матрица 3x4 [R | T], в которой R - левый 3x3, а T - это трещина 3x1. Согласно формуле p = C [R | T] P, я предполагаю, что, умножив эти матрицы параметров на P (мир), мы получим p (pixel). Но мне нужно проецировать координату p (пиксель) на P (мировые координаты) на плоскости земли.

Я изучаю электротехнику и электронику. Я не занимался обработкой изображений или расширенными классами линейной алгебры. Как я помню из курса линейной алгебры, мы можем манипулировать преобразованием как P = [R | T] -1 * C-1 * p. Однако это в евклидовой системе координат. Я не знаю, что такое возможно в hompographic. кроме того, 3x4 [R | T] Vector не обратим. Более того, я не знаю, что это правильный путь.

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

ИЗМЕНИТЬ Я читал "изучение opencv" у Гэри Брэдски и Адриана Каэлера. На странице 386 в разделе Калибровка- > Гомография написано: q = sMWQ, где M - внутренняя матрица камеры, W - 3x4 [R | T], S - коэффициент масштабирования "до", который я предполагаю связанным с понятием гомографии, я dont знать ясно. q - пиксель cooord, а Q - реальная координация. Говорят, чтобы получить координату реального мира (на плоскости шахматной доски) координаты объекта, обнаруженного на плоскости изображения; Z = 0, то и третий столбец в W = 0 (предполагается, что поворот оси i), обрезание этих ненужных частей; W - матрица 3 × 3. H = MW является матрицей гомографии 3x3. Теперь мы можем инвертировать матрицу гомографии и умножать ее на q, чтобы получить Q = [X Y 1], где Z-координата была обрезана.

Я применил упомянутый алгоритм. и я получил некоторые результаты, которые не могут быть между углами изображения (плоскость изображения была параллельна плоскости камеры прямо перед камерой размером ~ 30 см, и я получил результаты, например, 3000) (квадратные размеры шахматной доски были введены в миллиметрах, поэтому я предполагаю, что выведенные координаты реального мира снова в миллиметрах). Во всяком случае, я все еще стараюсь. Кстати, результаты очень часто очень велики, но я делю все значения в Q на третью компоненту Q, чтобы получить (X, Y, 1)

ОКОНЧАТЕЛЬНОЕ ИЗОБРАЖЕНИЕ

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

Ответ 1

Вы сказали: "У меня есть внутренняя матрица камеры, а также трансляционные и вращательные параметры каждого изображения". но это перевод и поворот с вашей камеры на вашу шахматную доску. Они не имеют никакого отношения к вашему кругу. Однако, если у вас действительно есть матрицы перевода и вращения, то получение 3D-точки очень просто.

Примените обратную внутреннюю матрицу к вашим экранным точкам в однородных обозначениях: C -1 * [u, v, 1], где u = col-w/2 и v = h/2- строка, где col, row - столбец изображения, а строка и w, h - ширина и высота изображения. В результате вы получите 3d пони с так называемыми нормализованными координатами камеры p = [x, y, z] T. Все, что вам нужно сделать, это вычесть перевод и применить транспонированное вращение: P = R T (p-T). Порядок операций обратный к оригиналу, который вращается, а затем переводится; обратите внимание, что транспонированное вращение делает обратную операцию исходным вращением, но намного быстрее вычисляет, чем R -1.