2014-02-08 62 views
4

我們拍攝的圖片是飛機在50%重疊區域上飛行的飛機,並且正在使用OpenCV拼接算法將它們拼接在一起。這對我們的版本1來說工作得很好。在我們的下一個迭代中,我們想看看幾個額外的東西,我可以使用一些評論。OpenCV攝像機參數已知的圖像

當前拼接算法估計攝像機參數。我們確實有攝像機參數和飛機上提供的關於攝像機角度,位置(GPS)等的大量信息。根據匹配的特徵點,我們能夠從這些信息中獲益嗎?

這些圖像是以高分辨率拍攝的,算法在這一點上佔用了相當數量的RAM,這不是一個大問題,因爲我們只是將大型機器放在雲中。但我想在下一次迭代中從縮減採樣的圖像中獲取單應性,並稍後將其應用於大圖像。這也將給我們更多的選擇來操作和可視化原始圖像上的其他信息,並且能夠在原始圖像和拼接圖像之間前後移動。

如果我們問題1將拆開拼接算法來輸入已知信息,那麼它是使用findHomography方法獲取信息,還是在我們實際知道平面時有更好的替代方案來創建單應性位置和角度以及相機參數。

我對opencv有一個基本的瞭解,對C++編程很好,所以編寫我們自己定製的stitcher不是問題,但理論在這裏有點生疏。

+0

你在什麼分辨率捕捉圖像?如果它們足夠高,那麼你可以對它們進行縮減採樣,但我建議你儘可能地避免它(我不是一個縮減採樣的狂熱粉絲)。您可以使用特徵點或校準攝像頭進行拼接(我不確定組合是否是可行的解決方案);不過,您可以使用相機參數來加快您的單應性功能。 – scap3y

+0

5000x7400像素(50mb)原始文件。在這個時候,我想知道是否有必要花費時間來獲取關於使用相機參數進行任何事情的知識,或者只要功能匹配,匹配功能就沒有問題。但感謝您的評論。但是下采樣圖像應該不會有任何問題。下采樣還可以消除我假設的圖像中的一些噪聲。 –

+0

您的GPS信息足夠精確,可以精確調整圖像嗎? – Micka

回答

2

由於您正在使用單應性來扭曲您的圖像,我假設您捕捉的區域足夠小,您不必擔心地球曲率效應。另外,我假設你不使用高程模型。

一般而言,由於您的最終輸出是拼接圖像,因此您總是希望使用匹配的圖像點來收緊您的(單應性)模型。如果您擁有RAM和CPU預算,則可以使用最大似然估計器來優化線性模型。具有先前的運動模型(例如來自GPS + IMU)可用於初始化特徵搜索和匹配。通過對特徵明顯運動進行足夠好的初始估計,您可以省去昂貴的特徵描述符計算和存儲,並且可以使用歸一化的互相關。

+0

謝謝,這些評論都很好。其結論我現在也可以使用先前的信息來簡化搜索功能的區域,並以這種方式加快過程。很高興知道我總是希望收緊匹配圖像點的單應性。此時我們將典型的5-15幅圖像合併在一起以覆蓋當地區域。但是我也非常感興趣,如果我們要將所有東西拼接成一個包含地球曲面並且在大面積上呈現大地圖的錯誤圖像,那麼我也非常感興趣。 –

2

如果我理解正確,圖像是垂直拍攝的並且與已知數量的像素重疊,那麼計算單應性有點矯枉過正:您只是在談論轉換矩陣,並且只能使用更強大的算法給你不好的條件矩陣。

在2D中,如果H是表示透視變換的一般化單應性矩陣,

H=[[a1 a2 a3] [a4 a5 a6] [a7 a8 a9]] 

那麼子矩陣R和T分別表示旋轉和平移,如果A9 == 1。

R= [[a1 a2] [a4 a5]], T=[[a3] [a6]] 

[a7 a8]代表每個軸的拉伸。 (所有這些都是,因爲當所有效果都存在時,它們會相互影響)。

所以,如果你知道的橫向位移,可以創建只具有a3a6a9=1一個3x3矩陣,並把它傳遞給cv::warpPerspectivecv::warpAffine

作爲匹配正確性的標準,您可以f.e.計算像素之間的歸一化差異。

+0

謝謝。這就說得通了。我認爲弗朗切斯科有一個觀點,即使用形象點來收緊單應性總是一個好主意。 –

+0

的確如此,但要小心使用RANSAC和四點組的單應性估計,因爲它可能給出嚴重條件的矩陣。一種可能性是使用特徵對應的單應矩陣計算,提取矩陣T並驗證R和拉伸子矩陣不會進入香蕉。 – miguelao

+0

只是爲了證實,你是在說要驗證RANSAC發現的單應應該從我們從gps和飛行數據獲得的已知信息中進行驗證? –