Программное обеспечение для изменения перспективы изображения доски (или какой-либо другой плоскости), чтобы оно выглядело 2D

Допустим, у меня есть доска в комнате, полной людей. Я хочу сфотографировать доску, но на пути стоят люди, поэтому я не могу сфотографировать доску прямо.

Мне придется установить камеру выше, чтобы смотреть вниз на доску. Это меняет перспективу. Поскольку у нас есть полная информация о плоскости доски, теоретически возможно «неисказить» изображение и изменить перспективу так, чтобы казалось, что у нас есть двухмерная доска или мы просто смотрим прямо на доску. Есть ли программное обеспечение, которое делает это?

Чтобы лучше изобразить то, что я пытаюсь сказать, вот изображение знака остановки с неблагоприятного ракурса.

Как мы искажаем его, чтобы он выглядел так:

Окружение на изображении не имеет значения. Меня интересует только информация на плоской плоскости вывески/щита.

Бонусные баллы, если вы можете сделать это в режиме реального времени с помощью видеопотока. (Камера будет зафиксирована, поэтому свойства искажения будут одинаковыми для всех изображений в видео).

Это то, что делает Microsoft Office Lens.

Ответы (2)

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

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

Многие программы редактирования изображений (Photoshop, Gimp и т. д.) имеют функцию коррекции перспективы, которая может делать это для отдельных изображений. Тем не менее, не ждите чудес: очень большое изменение, как в ваших примерах со знаком стоп, может быть возможным, но вы, вероятно, значительно потеряете в качестве.

Не уверен, что сделаю это в режиме реального времени для видео; вы можете задать вопрос на Stack Exchange видеопроизводства .