2010-08-12 115 views
4

我有許多圖像,我知道焦距,像素數,尺寸和位置(來自GPS)。他們都是高度傾斜的,用商用相機拍攝地面。用於測量圖像中像素之間歐幾里德距離的算法

alt text http://desmond.yfrog.com/Himg411/scaled.php?tn=0&server=411&filename=mjbm.jpg&xsize=640&ysize=640

什麼是對圖像中的某些計算像素之間的歐氏距離的最佳方法是什麼?如果確實可行。

+2

如果你想要照片中兩點之間的真實距離,我相信你也需要相機的音高。但是如果你想要那個湖的寬度,而不是一個小小的「海灣」的寬度,會發生什麼? – MPelletier 2010-08-12 18:23:48

回答

2

假設你不是在尋找完整的景觀建模,而是一個簡單的近似,那麼這應該不會太難。基本上,您的圖像的第一個近似縮小爲沿着飛機看到焦距已知的相機。所以我們可以非常容易地創建3D系統的模型 - 這與觀察棋盤格演示的經典觀察者並不遙遠。

通常我們的圖形問題是將3D模型投影到2D中,因此我們可以渲染圖像。儘管現在大多數程序都使用API​​(如OpenGL)來執行此操作,但方程式並不特別複雜或難於理解。我使用3D Graphics In Pascal的例子編寫了我的第一個代碼,這是一個不錯的明確論述,但是會有很多其他類似的源代碼(儘管現在可能少於現在使用的硬件API)。

有用的是,投影方程是可交換的,因爲如果你在圖像和模型上有一個點,你可以通過投影來檢索原始3D座標 - 這就是你想要的去做。

所以有幾種方法建議:或者編寫代碼直接執行上述操作,或者更簡單地使用OpenGL(我推薦使用GLUT toolkit)。如果你的數學是好的,操縱矩陣導致你沒有問題,那麼我會建議前者,因爲解決方案將更加緊湊,這是有趣的東西 - 否則採取OpenGL方法。您可能還想相當早地將相機/平面近似轉換爲相機/球體。

如果這不足以滿足您的需求,那麼理論上去實際的景觀建模將是可行的。 SRTM數據是免費提供的(雖然不是最友好的形式),所以結合你的GPS位置,應該有可能創建一個網格模型,並應用與上述相同的算法。