以透视方式计算3D对象的2D角度

时间:2010-04-26 17:37:53

标签: math graphics geometry perspective

想象一张照片,标有建筑物的表面。

鉴于建筑物的表面是一个矩形,有90度角。然而,因为它是一张照片,所以会涉及透视,并且脸部的平行边缘会聚在地平线上。

使用这样的矩形,如何计算与其成直角的面边缘矢量的2D角度?

在下图中,蓝色是照片上标记的面部,我想知道如何计算另一面红线的2D矢量:

example http://img689.imageshack.us/img689/2060/leslievillestarbuckscor.jpg

因此,如果您暂时忽略图片,并专注于线条,是否有足够的信息在其中一个面部轮廓 - 内角等 - 以了解角落另一侧的脸部路径?公式是什么?

example http://i41.tinypic.com/zvvgqc.jpg

我们知道两者都是矩形 - 即每个角都是直角 - 并且它们彼此成直角。那么如何仅使用第一个面的位置知识来确定第二个面的矢量?

2 个答案:

答案 0 :(得分:0)

这很简单,你应该使用基本的 2点透视规则。

首先,您需要2个消失点,一个在物体的左侧,另一个在物体的右侧。他们都会保持同一水平线。

alt text http://img62.imageshack.us/img62/9669/perspectiveh.png

在放置地平线(选择视线高度)和消失点(点的位置将改变视野)后,您可以轻松计算出线的位置(当然,您需要能够计算出跨越两点的线:我认为你可以做到这一点)

答案 1 :(得分:0)

老实说,我要做的是在图像上Hough Transform并确定一种识别图像中红线的方法。为了找到红线,我会发现变换中的任何线条都会碰到你的蓝线。变换的好处是你可以免费获得角度信息。

既然你知道你正在寻找线条,你也可以做Radon Transform并在特定角度寻找峰值;它基本上是一回事。

Matlab为这种工作提供了一些很好的功能。