2011-01-05 106 views
3

我編寫了一個應用程序,用於檢測圖像中的正方形。爲了讓你怎麼含有這樣一種映像這樣的廣場,在這種情況下,標記有很好的理解,可能是這樣的:計算正方形的方向並顯示具有相同方向的對象

我能得到什麼,在檢測之後,有四角的座標我的標記。現在我不知道如何在我的標記上顯示一個對象。物體應該與標記具有相同的旋轉/角度/方向。

是否有任何關於如何實現該功能的論文,我可以使用哪種證明是相當紮實/有效的算法?

它不需要是一個可行的解決方案,它可以是一個關於如何實現或類似的簡單描述。如果你指向一個庫或其他東西,它應該在Linux下工作,不需要Windows,但是如果我需要在某個時候移植應用程序,那將是非常棒的。 我已經看過ARToolkit,但他們是相機參數文件和更復雜的矩陣,而我只有四個角點和一個圖像,而不是整個視頻/相機流。

+0

您的相機是否已校準?如果沒有,你可以這樣做嗎?如果你這樣做,它會使問題變得更加簡單(這只是一個記錄棋盤圖案的多個圖像並運行可用算法(例如從opencv運行)的問題)。 – etarion 2011-01-05 14:49:40

回答

0

這是一個正方形。它應該在一個正常的飛機上運轉,我們需要找到它,因爲這是我們應該放置我們物體的方式。我們可以假設所有y cooridnates都是0,現在我們正在處理方面問題。也許我們可以先將它映射到0-1範圍內。大多數左邊的點在x上得到0,最右邊的1,同樣在z上 - 最近的get的0和最近的1.我們可以通過檢查對角線的長度來確定這一點。較短的一個連接前後點和旁邊的其他2 所以我們得到類似

 x z 
left: 0 ? 
right: 1 ? 
front: ? 0 
back: ? 1 

我想這些?可以通過側面來計算。使用方形簡化了問題。如果連接前右和左前的兩條線相同,則左側和右側的z值爲0.5。好吧,這樣你可以得到所有3個維度,並使用向量交叉乘積計算正常。然後,您可以將模型以y軸作爲高度,使用計算矩陣將0,1,0向量旋轉爲您獲得的正常值,然後繪製位置2D圖像並正確縮放它。我不知道我是否幫助過你,也許這不是它的工作方式,但我希望我寫了一些有用的東西。

1

我相信你可以使用OpenCV的cvGetPerspectiveTransform找到可以扭曲正方形到標記邊角的變換,然後使用cvWarpPerspective來翹曲圖像。