設定BM SGBM和GC演算法的狀態引數

2021-06-22 17:43:32 字數 1229 閱讀 3084

from 

5. 如何設定bm、sgbm和gc演算法的狀態引數?

(1)stereobmstate

// 預處理濾波引數

// sad 引數

// 後處理引數

// opencv2.1 新增的狀態引數

在上述引數中,對視差生成效果影響較大的主要引數是 sadwindowsize、numberofdisparities 和 uniquenessratio 三個,一般只需對這三個引數進行調整,其餘引數按預設設定即可

在opencv2.1中,bm演算法有c和c++ 兩種實現模組。

(2)stereosgbmstate

sgbm演算法的狀態引數大部分與bm演算法的一致,下面只解釋不同的部分:

注意opencv2.1的sgbm演算法是用c++ 語言編寫的,沒有c實現模組。與h. hirschmuller提出的原演算法相比,主要有如下變化:

演算法預設執行單通道dp演算法,只用了5個方向,而fulldp使能時則使用8個方向(可能需要占用大量記憶體)。

演算法在計算匹配代價函式時,採用塊匹配方法而非畫素匹配(不過sadwindowsize=1時就等於畫素匹配了)。

匹配代價的計算採用bt演算法("depth discontinuities by pixel-to-pixel stereo" by s. birchfield and c. tomasi),並沒有實現基於互熵資訊的匹配代價計算。

增加了一些bm演算法中的預處理和後處理程式。

(3)stereogcstate

gc演算法的狀態引數只有兩個:numberofdisparities 和 maxiters,並且只能通過 cvcreatestereogcstate 在建立演算法狀態結構體時一次性確定,不能在迴圈中更新狀態資訊。gc演算法並不是一種實時演算法,但可以得到物體輪廓清晰準確的視差圖,適用於靜態環境物體的深度重構。

注意gc演算法只能在c語言模式下執行,並且不能對視差圖進行預先的邊界延拓,左右檢視和左右視差矩陣的大小必須一致。

說說JVM的GC功能之一GC演算法的選擇

如果你的應用可以忍受full gc帶來的停頓,throught收集器 即並行gc 能獲得最高的效能。同是他使用cpu和堆的大小都比其他的收集器少 當然不包括serial收集器,它的使用場景太有限 如果無法忍受full gc帶來的停頓,如果可用堆較小,可以選擇cms或g1,如果可用堆較大,建議使用g1...

常見軟體的GC演算法解析

今天和大家一起解析下常見的gc演算法設計。gc是一種軟體進行自動的記憶體 的方式。如果軟體執行過程中,發現某些物件沒有了引用 或者稱之為不可達 的狀態時,就會啟動gc過程。將這部分記憶體進行釋放。以避免程式設計師因為忘記顯示釋放記憶體導致程式出現out of memory。gc的過程主要分為標記 移...

關於簡單的GC演算法理解

首先,最基礎的gc演算法有三個 標記 清除演算法 通過gc root物件進行遍歷,對從gc root物件可達的物件都加乙個標記,即標記其為可達物件,然後再對堆記憶體進行遍歷,如果乙個物件沒有該標記,那就直接從堆記憶體中 這個物件。複製演算法 把記憶體分成兩個部分,使用其中一塊,當這一塊記憶體使用完,...