在透视中计算3D物体的2D角度

3

想象一张照片,上面有建筑物的正面。

已知建筑物的正面是一个矩形,有着90度的角。但由于这是一张照片,透视效果会使得正面的平行边汇聚到地平线上。

对于这样的矩形,如何在二维平面中计算垂直它的另一个面的边缘向量的角度呢?

在下面的图像中,蓝色代表照片上标记的正面,我想知道如何计算其他面的红色线段的二维向量:

示例

所以如果暂时忽略图片,专注于线条,是否可以从一个面的轮廓线(包括内角等信息)中获取足够的信息,来确定另一侧的面的路径?公式会是什么?

example

我们知道两个面都是矩形 - 每个角都是直角,并且它们相互垂直。那么如何仅通过第一个面的位置信息来确定第二个面的向量?


你已经找到红边了吗? - mmr
凭借蓝色面是矩形的知识,您可能已经有足够的信息来从蓝色面向后推导 -> 蓝色3D物体+相机 -> 红色3D物体+相机 -> 红线。 - Amber
2个回答

0

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

首先你需要两个消失点,在你的物体左右。它们都在同一地平线上。

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

在放置水平线(选择观察高度)和消失点(点的位置会改变视场)后,你可以轻松计算出你的线条走向(当然你需要能够计算穿过两点的直线:我想你应该会做到)。


0
说实话,我会在图像上进行Hough变换并找到一种方法来识别红线。为了找到红线,我会查找变换中与蓝线相接的任何线条。变换的好处是你可以免费获得角度信息。
由于你知道你正在查看的是线条,你还可以进行Radon变换并查找特定角度的峰值;本质上它们是相同的。
Matlab对这种工作有一些不错的功能。

Hough是一种我熟悉的有趣方法,但我正在寻找一种数学方法来告诉我哪些Hough线是可信的。 - Will
角落交叉点是一个好的信任度量吗?找到你蓝色标记区域的角落应该是可行的,特别是如果保证标记有四个这样的角落。然后,通过那个角落点可能会延伸出线条作为候选项,并且可以选择最近的线条作为答案。 - mmr
我可以通过寻找与候选形状的透视投影匹配的候选线来筛选嘈杂的点;这意味着我必须有投影公式... - Will

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接