Являются ли однородные координаты, представленные добавлением координат изображения с 1 в изображении камеры
В изображении с камеры есть несколько терминов для координат точек.
Мировые координаты: [X, Y, Z] в физической единице
Координаты изображения: [u, v] в пикселях.
Становятся ли эти координаты однородными, добавляя 1? Иногда в книгах и бумаге это обозначается [x, y w]. Когда используется w? Когда используется 1?
применяется следующий процесс
Есть ли один член для координат [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')
все так же.