Я ищу много ресурсов в Интернете в течение многих дней, но я не смог решить проблему.
У меня есть проект, в котором я должен обнаружить положение кругового объекта на плоскости. Так как на плоскости все, что мне нужно, это 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 пары соответствующих копланарных точек на обеих плоскостях). Затем просто применили преобразование на пикселях пикселей изображения.