2016-07-27 33 views
2

我想使用光流系統來獲得周圍環境的速度。我已經閱讀過有關光流如何工作的論文,但他們沒有關注光纖傳感器的細節。如何確定光流所需的處理器速度?

我的問題是:如何確定執行光流分析需要多少計算能力?

我想使用低功耗系統(如微控制器),但我不知道我可以使用這種系統的相機類型。我的意思是,它可能是彩色的,還是需要黑白?捲簾或全局快門?哪個幀率或像素數量?

我想自己指定系統,但不知道這些相機屬性如何影響處理負載,我不知道從哪裏開始。

+2

我認爲這個問題將得到更好的構成,如果你問:「我該如何確定需要多大的計算能力來執行光流分析?」然後,通過對過程如何工作的描述,您可以倒退,並確定您可以使用哪種相機。這是工程中常用的兩種方法中的一種 - 從設備開始並向前移動(「如果您的電機尺寸爲X,則可以轉速爲Y」)或從最終規格開始並向後工作(「如果您想要爲了提高速度Y你需要一個尺寸爲X的電機「)。你試圖做後者 - 處理器Y需要攝像頭X. – Chuck

+0

實際上,正如我寫的那樣,我想,「這聽起來像是一個關於運行某些軟件需要多少處理器的問題」,然後讓我想到它可能更適合[so]。我查了一下,他們有一個標籤,「opticalflow」,有222個問題。我們甚至沒有標籤在這裏。我將編輯您的問題併爲您進行遷移。希望你會在那裏得到一些很好的答案! – Chuck

+0

你好堆棧溢出!我是[robotics.se]的主持人,並且認爲這個問題在這裏更適合。我編輯了題目和標籤的問題,但沒有特權推動他們完成。我希望這個問題是針對你們的話題,並且這個問題會得到很多很好的答案!隨意刪除此評論和較早的評論;我只是憎恨遷移的東西,沒有留下一個筆記到網站。 – Chuck

回答

1

由於Chuck已經在評論中說過。你首先需要從某件事開始。 Opticalflow計算真的取決於您使用的是什麼以及您想要實現的目標。對於實時應用程序,您可能需要考慮使用更快的處理器(但這總是正確的)。

繼續我的答案。

光流法計算性能取決於幾個主要的事情:

  • 光流方法您選擇(密集稀疏),你可以閱讀更多關於它herehere。當然,你不僅應該考慮到稀疏比密集更快,在某些情況下稀疏可能不太準確。再次,這取決於你想要達到的目標。
    另外,你會看到有不同的光流算法。有些可能比其他人快。有很多算法,如盧卡斯,金出武雄,霍恩 - Schunck,TVL1,Farneback等
  • 大部分從圖書館光流的方法,如OpenCV的給你,以改變一些參數發揮的能力在準確性和性能之間進行權衡。請參閱this並檢查OpenCV方法(例如thisthis) - 請參閱不同的參數。

  • The 決議你的形象。較小的圖像通常意味着更快的計算。

一些事情你也可能​​要考慮:

  • 如果您使用的是具有多核處理器,請確保您使用的全部核的光流計算。有些圖書館可能已經爲你做了這件事,但在某些情況下,你需要自己做。在this post看看我的問題和答案,它可能會給你一些想法,並幫助你開始這種情況。
  • 如果你想要更精確的光流結果你必須使用全球快門相機。捲簾快門相機,例如大多數網絡攝像頭,都會給你一個額外的錯誤,你不想要的。
  • 你不需要彩色圖像,如果你有一個灰度相機它會更好。如果沒有,您需要將其轉換爲灰度(而不是黑白)以獲得更快的性能。
  • 一些庫如OpenCV的一個選項(在某些情況下),以在GPU運行這些算法。如果使用GPU是一種選擇,您可能也需要考慮這一點。

從我自己的經驗來看,讓性能提升的主要因素是將我的分辨率從640x480改爲320x240甚至160x120。在我的情況下,它並沒有真正傷害到準確性。
我使用的Odroid U3迷你PC與320x240分辨率的OpenCV PyrLK算法和輸入幀。應用描述here(將圖像拆分爲4以進行並行計算)後,它運行得非常好(實時)。