Ultralytics YOLO27: Вступи в список ожидания.
Лицензия YOLO
Назад к глоссарию Ultralytics

Homography

Гомография — это проективное преобразование, которое отображает плоскости между ракурсами и позволяет исправлять перспективу, совмещать изображения и сшивать панорамы.

Гомография — обратимое проективное преобразование, которое отображает точки одной плоскости в точки другой, сохраняя прямые линии. В компьютерном зрении она описывает, как плоская поверхность выглядит с разных ракурсов: прямоугольная страница, сфотографированная под углом, может быть преобразована в прямоугольник, снятый прямо спереди. Гомографии применяются для совмещения изображений, коррекции перспективы и сшивания панорам. «Проективное преобразование» — синоним; лингвистический термин «омограф» обозначает слова с одинаковым написанием.

Как работает матрица гомографии#

Гомография задаётся матрицей 3 x 3, которую обычно обозначают H. Она действует на однородные координаты, представляющие двумерную точку с помощью трёх значений. После умножения на матрицу деление первых двух значений результата на третье даёт обычные координаты изображения.

Хотя H содержит девять элементов, у неё восемь независимых параметров, или степеней свободы: умножение всех элементов на одно и то же ненулевое число не меняет отображение. Эта геометрия плоских отображений изображений объясняет, почему для задания гомографии достаточно четырёх подходящих пар соответствующих точек.

Аффинное преобразование — это частный случай гомографии, сохраняющий параллельность прямых. Общая гомография также описывает эффекты перспективы, включая схождение параллельных рёбер в точке схода. Расстояния и углы обычно меняются. Мишель Шаль разработал эту концепцию в своей работе 1837 года о двойственности и гомографии.

Как оценить гомографию#

Оценка начинается с соответствующих точек — мест, представляющих одни и те же физические признаки на двух изображениях. Это могут быть вручную выбранные углы или сопоставленные ключевые точки, найденные с помощью извлечения признаков. Такие методы, как масштабно-инвариантное преобразование признаков, формируют дескрипторы — числовые описания локального вида — для сопоставления признаков между ракурсами.

Минимально необходимы четыре пары точек, причём никакие три точки в каждом наборе не должны лежать на одной прямой. Алгоритм прямого линейного преобразования (DLT) преобразует взаимосвязи между их координатами в систему линейных уравнений. Дополнительные соответствия повышают точность оценки, если измерения содержат шум.

Для обработки ошибочных соответствий требуется устойчивое оценивание. Метод случайной выборки консенсуса (RANSAC) многократно подбирает кандидаты на преобразование по небольшим подмножествам и находит инлайеры — соответствия, согласующиеся с кандидатом. Ошибка репроекции измеряет расстояние между преобразованной исходной точкой и её наблюдаемым положением на целевом изображении. API оценки гомографии OpenCV предоставляет доступ к этому процессу через cv2.findHomography и возвращает как H, так и маску инлайеров.

Применение гомографии в Python#

OpenCV предоставляет отдельные операции для оценки матрицы и преобразования изображения. Установи зависимости с помощью pip install opencv-python numpy. В этом примере прямоугольная граница образца изображения преобразуется в трапецию:

from urllib.request import urlopen

import cv2
import numpy as np

image_url = "https://ultralytics.com/images/bus.jpg"
with urlopen(image_url) as response:
    encoded = np.frombuffer(response.read(), dtype=np.uint8)
image = cv2.imdecode(encoded, cv2.IMREAD_COLOR)
height, width = image.shape[:2]

# Сохраняй одинаковый порядок углов по часовой стрелке в обоих массивах.
source = np.float32([[0, 0], [width - 1, 0], [width - 1, height - 1], [0, height - 1]])
target = np.float32([[120, 80], [width - 121, 80], [width - 1, height - 1], [0, height - 1]])
matrix, _ = cv2.findHomography(source, target)
warped = cv2.warpPerspective(image, matrix, (width, height))
cv2.imwrite("homography_result.jpg", warped)

На сохранённом изображении виден перспективный ракурс: верхний край уже, а прямые края сцены остаются прямыми.

Где применяется гомография#

  • Обработка документов: Выпрямление перспективы отображает четыре угла плоского документа в прямоугольник. Этот этап предобработки выравнивает расположение текста перед оптическим распознаванием символов, используя ту же геометрию плоского преобразования, что и в примерах коррекции перспективы OpenCV.
  • Сшивание панорам: Перед объединением перекрывающиеся фотографии совмещаются. Система Autostitch Мэтью Брауна и Дэвида Лоу использует сопоставленные локальные признаки для автоматического построения панорам, в том числе для поиска перекрывающихся изображений в неупорядоченных коллекциях.

В Ultralytics YOLO аугментация RandomPerspective применяет проективные преобразования во время обучения, одновременно преобразуя изображения и связанные с ними ограничивающие рамки, контуры сегментации и ключевые точки. Параметр perspective задаёт компонент перспективы этой аугментации данных.

Одна гомография точно описывает взаимосвязь между идеальными изображениями одной плоскости, полученными камерой-обскурой, или между изображениями, снятыми при вращении камеры вокруг её центра проекции. При смещении камеры и наличии объектов на разных расстояниях параллакс вызывает смещение, зависящее от глубины. При совмещении фоновой плоскости объекты переднего плана остаются смещёнными, из-за чего на сшитых изображениях появляются двойные края или призрачные контуры.

Калибровка камеры учитывает дисторсию объектива: для коррекции её искривлённой геометрии изображения перед совмещением плоскостей требуется предварительная обработка. В общих трёхмерных сценах эпиполярная геометрия ограничивает положение соответствующей точки линией; гомография предсказывает её положение непосредственно. В стереозрении оставшееся положение точки на эпиполярной линии даёт информацию о диспаритете, которая используется для оценки глубины.

Explore solutions

Компьютерное зрение в спорте

Компьютерное зрение в спорте

Узнай, как Ultralytics YOLO обеспечивает компьютерное зрение в спорте: отслеживание игроков и мяча, аналитика результатов, полезные выводы для тренеров и реабилитация спортсменов.
Подробнее
Компьютерное зрение для аэросъёмки

Компьютерное зрение для аэросъёмки

Превращай снимки с дронов и аэрофотоснимки в полезные данные в реальном времени для сельского хозяйства, аквакультуры, охраны природы и геопространственного анализа с Ultralytics YOLO.
Подробнее
Компьютерное зрение в аэрокосмической отрасли

Компьютерное зрение в аэрокосмической отрасли

Применяй компьютерное зрение в аэрокосмической отрасли с Ultralytics YOLO: для осмотра самолётов, обнаружения посторонних предметов на взлётно-посадочных полосах, наземного обслуживания аэропортов и выявления дефектов композитных материалов.
Подробнее
Компьютерное зрение в сфере безопасности

Компьютерное зрение в сфере безопасности

Защити любой объект с помощью моделей Ultralytics YOLO. ИИ на базе компьютерного зрения обеспечивает мониторинг периметра, обнаружение угроз, распознавание номерных знаков и безопасность на рабочем месте.
Подробнее
Компьютерное зрение в робототехнике

Компьютерное зрение в робототехнике

Создавай более интеллектуальные машины с моделями Ultralytics YOLO. ИИ на базе компьютерного зрения в робототехнике обеспечивает автономную навигацию, восприятие, отслеживание объектов и управление в реальном времени.
Подробнее
Компьютерное зрение в логистике

Компьютерное зрение в логистике

Оптимизируй логистику с моделями Ultralytics YOLO. Визуальный AI обеспечивает проверку посылок, сортировку, отслеживание транспорта и мониторинг безопасности на складе в реальном времени.
Подробнее
Компьютерное зрение в розничной торговле

Компьютерное зрение в розничной торговле

Переосмысли розничную торговлю с моделями Ultralytics YOLO. Визуальный AI обеспечивает отслеживание запасов, мониторинг полок, управление очередями и более глубокое понимание поведения покупателей.
Подробнее
Компьютерное зрение в здравоохранении

Компьютерное зрение в здравоохранении

Создавай решения для здравоохранения с моделями Ultralytics YOLO. Визуальный AI в здравоохранении ускоряет медицинскую визуализацию, улучшает диагностику и мониторинг пациентов.
Подробнее
Компьютерное зрение в производстве

Компьютерное зрение в производстве

Оптимизируй производство с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ обеспечивает контроль качества, обнаружение дефектов, контроль использования СИЗ и автоматизацию сборочных линий.
Подробнее
Компьютерное зрение в автомобильной отрасли

Компьютерное зрение в автомобильной отрасли

Применяй компьютерное зрение в автомобильной отрасли с моделями Ultralytics YOLO. Компьютерное зрение на базе ИИ повышает безопасность дорожного движения, улучшает помощь водителю и автоматизацию автомобилей, делая дороги умнее.
Подробнее
Компьютерное зрение в сельском хозяйстве

Компьютерное зрение в сельском хозяйстве

Внедряй ИИ для компьютерного зрения в умное сельское хозяйство с моделями Ultralytics YOLO. Используй их для мониторинга посевов, отслеживания скота и точного земледелия, чтобы повысить урожайность и эффективность.
Подробнее

Давай вместе строить будущее ИИ!

Начни свой путь в будущее машинного обучения