Геометрия
Проективная геометрия
Каждый раз, когда Google Фото «выравнивает» скан документа или ARCore накладывает объект на поверхность - работает гомография. OpenCV, PyTorch3D, COLMAP - везде проективная геометрия.
- **Camera calibration:** cv2.calibrateCamera использует проективную модель пинхол-камеры
- **Image stitching:** гомография + RANSAC = панорамные фотографии в Google Maps
- **AR/VR:** матрица проекции в OpenGL/Vulkan - прямо из проективной геометрии
- **Epipolar geometry:** fundamental matrix F - обобщение гомографии для двух камер
Предварительные знания
Однородные координаты и точки на бесконечности
Проективная плоскость RP² дополняет евклидову плоскость «точками на бесконечности» - по одной для каждого направления. Это устраняет исключения при параллельных прямых.
**Однородные координаты:** точка (x, y) → (X:Y:W) где x=X/W, y=Y/W. (X:Y:W) и (kX:kY:kW) - одна точка для k≠0. **Точка на бесконечности:** W=0, например (1:0:0) - бесконечно далеко по оси X. **Прямая** в однородных: ax+by+c=0 → вектор (a:b:c). Пересечение прямых l и m: l×m (векторное произведение).
В проективной геометрии точка на бесконечности - полноправный объект. Параллельные прямые пересекаются в точке бесконечности в своём направлении.
Что означает однородная координата (3:6:0)?
Кросс-отношение
Кросс-отношение (double ratio) - единственный числовой инвариант проективных преобразований. Оно сохраняется при перспективной проекции, что делает его ключевым в computer vision.
**Кросс-отношение** четырёх точек A, B, C, D на прямой: (A, B; C, D) = (AC/BC) · (BD/AD) где AC = расстояние от A до C. **Инвариантность:** сохраняется при проекциях, гомографиях и конформных отображениях. **Применение:** восстановление проективных свойств из изображений (camera calibration).
Какой инвариант проективных преобразований используется в camera calibration?
Матрица перспективной проекции
Матрица камеры (camera matrix / projection matrix) переводит 3D точки в 2D пикселы. Она состоит из intrinsic (внутренние параметры) и extrinsic (позиция/ориентация) матриц.
**Пинхол-камера (pinhole camera model):** P = K · [R | t] где: - K - intrinsic matrix: [[f, 0, cx], [0, f, cy], [0, 0, 1]] - R - матрица поворота камеры (3×3) - t - вектор переноса (3×1) - f - фокусное расстояние в пикселах - (cx, cy) - principal point
Что хранит intrinsic matrix K камеры?
Гомография и DLT-алгоритм
Гомография H - проективное преобразование между двумя плоскостями (или изображениями). 8 степеней свободы (8 DOF) определяются по 4 парам соответствующих точек.
**Гомография:** p' = H · p (в однородных координатах) H - матрица 3×3, определена с точностью до масштаба (8 DOF). **DLT (Direct Linear Transform):** для каждой пары точек получаем 2 уравнения. 4 пары → 8 уравнений → решаем SVD. **Применение:** image stitching (панорамы), AR marker tracking, document rectification.
Сколько пар соответствующих точек минимально нужно для вычисления гомографии?
Ключевые идеи
- **Однородные координаты:** (x:y:1) - обычная точка; (x:y:0) - точка на бесконечности
- **Cross-ratio:** единственный проективный инвариант - сохраняется при любых проекциях
- **Camera matrix P = K[R|t]:** K - внутренние параметры, R,t - поза камеры
- **Гомография H (8 DOF):** проективное отображение плоскостей; 4 пары точек → DLT → SVD
Связанные темы
Проективная геометрия - основа computer vision и рендеринга:
- Геометрические преобразования — Гомография = обобщение аффинных трансформаций
- Геометрия в CS — RANSAC + гомография - базовый pipeline feature matching
- Геометрия на собеседовании — Camera matrix и проекции - частые вопросы в FAANG CV-ролях
Вопросы для размышления
- Почему параллельные рельсы на фотографии сходятся в точку? Как это объясняет проективная геометрия?
- Что такое epipolar constraint и как он связан с гомографией для двух камер?
- Как RANSAC помогает вычислить гомографию при наличии ошибок в соответствиях точек?