Расчет 2D углов для 3D объектов в перспективе - PullRequest
3 голосов
/ 26 апреля 2010

Представьте себе фотографию с выделенным лицом здания.

Учитывая, что лицо здания представляет собой прямоугольник с углами 90 градусов. Однако, поскольку это фотография, перспектива будет задействована, и параллельные края лица сойдутся на горизонте.

С таким прямоугольником как рассчитать угол в 2D векторов краев грани, перпендикулярной к ней?

На изображении ниже синим является лицо, отмеченное на фотографии, и мне интересно, как рассчитать двухмерный вектор красных линий другого лица:

пример http://img689.imageshack.us/img689/2060/leslievillestarbuckscor.jpg

Так что, если вы на мгновение проигнорируете изображение и сконцентрируетесь на линиях, достаточно ли информации в одном из контуров лица - внутренних углах и т. Д. - чтобы узнать путь лица на другой стороне угла ? Какой будет формула?

пример http://i41.tinypic.com/zvvgqc.jpg

Мы знаем, что оба являются прямоугольниками, то есть каждый угол является прямым углом, и что они находятся под прямым углом друг к другу. Так как же определить вектор второго лица, используя только знание положения первого лица?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2010

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

Поскольку вы знаете, что смотрите на линии, вы также можете выполнить преобразование Радона и искать пики под определенными углами; это по сути то же самое.

Matlab обладает неплохой функциональностью для такой работы.

0 голосов
/ 26 апреля 2010

Это довольно просто, вы должны использовать базовые 2-точечные перспективы правила.

Прежде всего вам нужно 2 точки схождения, одна слева и одна справа от вашего объекта. Они оба останутся на одной линии горизонта.

альтернативный текст http://img62.imageshack.us/img62/9669/perspectiveh.png

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

...