2012-03-05 18 views
0

我正在使用EMGU OpenCV封裝的c#。我有一個很好地創建的差異地圖。但是對於我的具體應用,我只需要非常少的像素差異值,而且我需要它們實時。現在計算大約需要100 ms,我想通過獲得數百個像素值而不是數千個像素值的差距會大大加快。我不太瞭解立體聲解算器代碼的「底層」內容,有沒有一種方法可以通過僅計算我需要的像素的差異來加快速度?EMGU OpenCV僅在某些像素上的差異

回答

0

首先,你沒有提到你真正想要達到的目標,此外,你正在使用什麼算法。例如。與StereoSGBM和StereoBM相比,StereoGC非常慢(即不實時),但通常要準確得多)。最後兩個可以實時使用,只要滿足幾個條件即可:

  • 輸入圖像的大小相當小;
  • 您沒有使用一組極其繁多的參數(例如,numberOfDisparities的較大值會增加計算時間)。

不要指望奇蹟的準確性。

除此之外,還有「只有幾個像素」的問題。據我所知,在OpenCV中實現的算法通常依賴於來自多個像素的信息來確定差異值。例如。它需要一個鄰域來檢測圖像A中的哪個像素映射到圖像B中的哪個像素。結果,通常不可能丟棄圖像的每個其他像素(順便說一下,如果您已經知道了圖像中的位置這兩個圖像,你根本不需要立體聲方法)。所以,除非你可以放棄你的輸入圖像的大邊界,你知道你永遠不會找到你感興趣的像素,否則我會說你的問題的這個部分的答案是「否」。

如果您碰巧知道您感興趣的像素始終位於輸入圖像的某個矩形內,則可以爲該矩形指定輸入圖像ROI(感興趣的區域)。假設OpenCV在這裏不包含bug,這應該會加快計算的速度。

通過一些Google搜索,您可以找到使用EmguCV(或普通OpenCV)在Youtube上使用GPU查找立體聲對應的實時示例。也許這可以幫助你。

聲明:如果您的問題包含更多細節,這可能是一個更完整的答案。