2010-04-26 346 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