2010-04-26 159 views
3

想象一张照片,并标出建筑物的正面。以立体角度计算3D物体的2D角度

它给出了建筑物的面部是一个矩形,90度角。但是,因为它的照片,视角将会被涉及,并且脸部的平行边缘将会聚集在地平线上。

有了这样一个矩形,你如何计算与其垂直的面的边缘向量的二维角度?

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

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

所以,如果你忽略了一会儿的画面,并专注于线条,在其中一个脸部轮廓中有足够的信息 - 内部角度等 - 知道角落另一侧脸部的路径?公式会是什么?

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

我们知道,无论是长方形的 - 那就是每个角是直角 - 和他们是成直角对方。那么,如何仅使用第一个位置的知识来确定第二个面的向量呢?

+0

你已经找到了红色的边缘吗? – mmr 2010-04-26 17:40:59

+0

由于知道蓝色面是矩形,因此您可能有足够的信息从蓝色脸 - >蓝色3-d物体+相机 - >红色3-d物体+相机 - >红色线向后工作。 – Amber 2010-04-26 17:43:56

回答

0

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

首先你需要2个消失点,一个在你的对象的左边和右边。他们都会保持在同一条地平线上。

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

已经放置在地平线(即选择了视线唤起注意)和消失点(该点的位置将改变视野),你可以很容易地计算出您的线去(当然,你需要经过以便能够计算穿过两点的线:我认为你可以做到这一点)

0

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

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

Matlab对这类工作有一些很好的功能。

+0

霍夫是一个我熟悉的有趣的方法,但我正在寻找一种数学方法来告诉我哪些霍夫线要信任。 – Will 2010-04-26 17:58:31

+0

角落交叉口是一个很好的信任度量吗?找到蓝色标记区域的角落应该是可行的,特别是如果标记保证有四个这样的角落。然后可以延伸穿过该角点的线可以是候选者,并且可以选择最接近的线作为答案。 – mmr 2010-04-26 18:13:24

+0

通过查找与候选形状的透视投影相匹配的候选线,我可以剔除噪点;这意味着我必须有投影的论坛... – Will 2010-04-26 18:42:59