Являются ли однородные координаты, представленные добавлением координат изображения с 1 в изображении камеры

В изображении с камеры есть несколько терминов для координат точек.

Мировые координаты: [X, Y, Z] в физической единице

Координаты изображения: [u, v] в пикселях.

Становятся ли эти координаты однородными, добавляя 1? Иногда в книгах и бумаге это обозначается [x, y w]. Когда используется w? Когда используется 1?

В функции initUndistortRectifyMap, http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#void%20initUndistortRectifyMap(InputArray%20cameraMatrix,%20InputArray%20distCoeffs%20InCarArm_Inc20RameRameRameRameRameRameRameRameRameRameRameRXRXRX_Ru_MarR_M_C_C_W_C_W % 20Size% 20size,% 20int% 20m1type,% 20OutputArray% 20map1,% 20OutputArray% 20map2)

применяется следующий процесс

Есть ли один член для координат [x y 1]? Я не понимаю, почему R можно применить к [x y 1]? На мой взгляд, R - это трансформация в 3D. Является ли [x y 1] одной 2-й точкой или 1-й точкой?

[uv] -> [xy] -> [x y 1] -> [XYW] -> [x 'y'] Координаты обрабатываются в соответствии с вышеуказанной цепочкой. Какой принцип стоит за этим?

1 ответ

В двумерной геометрии перспективы есть два основных набора координат; Декартовы координаты (x,y) и однородные координаты, которые представлены тройкой (x,y,z), Эта тройка может сбивать с толку - это не точка в трех измерениях, как декартова (x,y,z), Из-за этого некоторые авторы используют разные обозначения для однородных точек, такие как [x,y,z] или же (x:y:z)и эта запись имеет больше смысла по причинам, о которых мы поговорим позже.

Третья координата существует только для одной цели, то есть для добавления некоторых точек в область, а именно точек на бесконечности. Для двойника (x,y)нет способа представить бесконечность, по крайней мере, не числами и способами, которыми мы можем легко манипулировать. Но это проблема компьютерной графики, поскольку параллельные линии, конечно, очень распространены, и аксиома евклидовой геометрии заключается в том, что параллельные линии встречаются на бесконечности. И параллельные линии важны, поскольку преобразования, используемые в компьютерной графике, сохраняют линии. Когда мы искажаем точки с помощью гомографии или аффинного преобразования, мы перемещаем пиксели таким образом, чтобы отображать линии на другие линии. Если эти линии оказываются параллельными, как если бы они были в евклидовом или аффинном преобразовании, система координат, которую мы используем, должна быть в состоянии это представить.

Поэтому мы используем однородные координаты (x,y,z) с единственной целью включения тех точек на бесконечности, которые представлены тройкой (x,y,0), И так как мы можем поставить ноль в этом месте для каждой декартовой пары, это похоже на то, что у нас есть точка на бесконечности в каждом направлении (где направление задается углом к ​​этой точке).

Но тогда, поскольку у нас есть третье значение, которое может быть также любым другим числом, отличным от нуля, каковы все эти дополнительные точки? В чем разница между (x,y,2) а также (x,y,3) и так далее? Если точки (x,y,2) а также (x,y,3) это не точки на бесконечности, они должны быть равны некоторым другим декартовым точкам. И, к счастью, есть действительно простой способ отобразить все эти однородные тройки на декартовы пары таким приятным способом: просто разделить на третью координату. затем (x,y,3) возвращается на карту (x/3, y/3)и отображение (x,y,0) для декартовых не определено --- что идеально, поскольку эта точка на бесконечности не существует в декартовых координатах.

Из-за этого коэффициента масштабирования это означает, что однородные координаты могут быть представлены бесконечным числом способов. Вы можете отобразить декартову точку (x,y) в (x,y,1) в однородных координатах, но вы также можете отобразить (x,y) в (2x, 2y, 2), Обратите внимание, что если мы разделим третью координату, чтобы вернуться к декартовым координатам, мы получим ту же самую начальную точку. И это в общем случае, когда вы умножаете на любой ненулевой скаляр. Таким образом, идея в том, что декартовы координаты представлены уникально одной парой значений, тогда как однородные координаты могут быть представлены бесконечным количеством способов. Вот почему некоторые авторы используют [x,y,z] или же (x:y:z), Квадратная скобка часто используется в математике для определения отношения эквивалентности и для однородных координат, [x,y,z]~[sx,sy,sz] для ненулевого s, И так же, : обычно используется как отношение, поэтому соотношение трех точек будет эквивалентно любому скаляру s умножая их. Поэтому, когда вы хотите преобразовать из однородных координат в декартову, просто разделите на последнее число, поскольку оно действует как коэффициент масштабирования, а затем просто вытяните (x,y) ценности. Смотрите мой ответ здесь, например.

Таким образом, простой способ перейти к однородным координатам - добавить 1, но на самом деле вы можете добавить 1 и затем умножить на любой скаляр; ты бы ничего не изменил. Вы могли бы карту (x,y) в (5x,5y,5), примените ваше преобразование (sx',sy',s) = H * (5x,5y,5), а затем получить свои декартовы точки как (sx',sy')/s = (x',y') все так же.

Другие вопросы по тегам