OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::cuda::StereoBeliefPropagation 類參考抽象

使用置信傳播演算法計算立體匹配的類。: 更多...

#include <opencv2/cudastereo.hpp>

cv::cuda::StereoBeliefPropagation 的協作圖

公共成員函式

virtual void compute (InputArray data, OutputArray disparity, Stream &stream=Stream::Null())=0
 啟用立體匹配運算子,該運算子根據指定的資料成本查詢視差。
 
virtual void compute (InputArray left, InputArray right, OutputArray disparity, Stream &stream)=0
 
virtual double getDataWeight () const =0
 資料權重
 
virtual double getDiscSingleJump () const =0
 不連續單跳
 
virtual double getMaxDataTerm () const =0
 資料代價截斷
 
virtual double getMaxDiscTerm () const =0
 不連續代價截斷
 
virtual int getMsgType () const =0
 訊息型別 (CV_16SC1 或 CV_32FC1)
 
virtual int getNumIters () const =0
 每個級別的BP迭代次數
 
virtual int getNumLevels () const =0
 級別數
 
virtual void setDataWeight (double data_weight)=0
 
virtual void setDiscSingleJump (double disc_single_jump)=0
 
virtual void setMaxDataTerm (double max_data_term)=0
 
virtual void setMaxDiscTerm (double max_disc_term)=0
 
virtual void setMsgType (int msg_type)=0
 
virtual void setNumIters (int iters)=0
 
virtual void setNumLevels (int levels)=0
 
- 從 cv::StereoMatcher 繼承的公共成員函式
virtual void compute (InputArray left, InputArray right, OutputArray disparity)=0
 為指定的立體對計算視差圖。
 
virtual int getBlockSize () const =0
 
virtual int getDisp12MaxDiff () const =0
 
virtual int getMinDisparity () const =0
 
virtual int getNumDisparities () const =0
 
virtual int getSpeckleRange () const =0
 
virtual int getSpeckleWindowSize () const =0
 
virtual void setBlockSize (int blockSize)=0
 
virtual void setDisp12MaxDiff (int disp12MaxDiff)=0
 
virtual void setMinDisparity (int minDisparity)=0
 
virtual void setNumDisparities (int numDisparities)=0
 
virtual void setSpeckleRange (int speckleRange)=0
 
virtual void setSpeckleWindowSize (int speckleWindowSize)=0
 
- 從 cv::Algorithm 繼承的公共成員函式
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除演算法狀態。
 
virtual bool empty () const
 如果 Algorithm 為空(例如,在最開始或讀取不成功後),則返回 true。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 從檔案儲存中讀取演算法引數。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 將演算法引數儲存到檔案儲存中。
 
void write (FileStorage &fs, const String &name) const
 

靜態公共成員函式

static void estimateRecommendedParams (int width, int height, int &ndisp, int &iters, int &levels)
 使用啟發式方法計算指定影像尺寸(width 和 height)的推薦引數(ndisp、iters 和 levels)。
 
- 從 cv::Algorithm 繼承的靜態公共成員函式
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 從檔案中載入演算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 從字串載入演算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 從檔案節點讀取演算法。
 

附加繼承成員

- 從 cv::StereoMatcher 繼承的公共型別
列舉  {
  DISP_SHIFT = 4 ,
  DISP_SCALE = (1 << DISP_SHIFT)
}
 
- 從 cv::Algorithm 繼承的受保護成員函式
void writeFormat (FileStorage &fs) const
 

詳細描述

使用置信傳播演算法計算立體匹配的類。

該類實現了 [89] 中描述的演算法。它可以使用截斷線性模型計算自己的資料成本,也可以使用使用者提供的資料成本。

注意
StereoBeliefPropagation 需要大量記憶體用於訊息儲存

\[width \_ step \cdot height \cdot ndisp \cdot 4 \cdot (1 + 0.25)\]

以及資料成本儲存

\[width\_step \cdot height \cdot ndisp \cdot (1 + 0.25 + 0.0625 + \dotsm + \frac{1}{4^{levels}})\]

width_step 是包含填充在內的一行中的位元組數。

StereoBeliefPropagation 為資料成本和不連續性項使用截斷線性模型

\[DataCost = data \_ weight \cdot \min ( \lvert Img_Left(x,y)-Img_Right(x-d,y) \rvert , max \_ data \_ term)\]

\[DiscTerm = \min (disc \_ single \_ jump \cdot \lvert f_1-f_2 \rvert , max \_ disc \_ term)\]

欲瞭解更多詳情,請參閱 [89]

預設情況下,StereoBeliefPropagation 對訊息使用浮點算術和 CV_32FC1 型別。但它也可以使用定點算術和 CV_16SC1 訊息型別以獲得更好的效能。為了避免在這種情況下發生溢位,引數必須滿足以下要求

\[10 \cdot 2^{levels-1} \cdot max \_ data \_ term < SHRT \_ MAX\]

另請參見
StereoMatcher

成員函式文件

◆ compute() [1/2]

virtual void cv::cuda::StereoBeliefPropagation::compute ( InputArray data,
OutputArray disparity,
Stream & stream = Stream::Null() )
純虛擬函式

啟用立體匹配運算子,該運算子根據指定的資料成本查詢視差。

引數
data使用者指定的資料成本,一個 msg_type 型別和 Size(<影像列數>*ndisp, <影像行數>) 大小的矩陣。
disparity輸出視差圖。如果 disparity 為空,則輸出型別為 CV_16SC1。否則,型別將保留。在 16 位有符號格式中,視差值沒有小數位。
用於非同步版本的 Stream

◆ compute() [2/2]

virtual void cv::cuda::StereoBeliefPropagation::compute ( InputArray ,
InputArray ,
OutputArray disparity,
Stream & stream )
純虛擬函式

這是一個過載成員函式,為方便起見而提供。它與上述函式唯一的區別在於接受的引數。

◆ estimateRecommendedParams()

static void cv::cuda::StereoBeliefPropagation::estimateRecommendedParams ( int width,
int height,
int & ndisp,
int & iters,
int & levels )
static

使用啟發式方法計算指定影像尺寸(width 和 height)的推薦引數(ndisp、iters 和 levels)。

◆ getDataWeight()

virtual double cv::cuda::StereoBeliefPropagation::getDataWeight ( ) const
純虛擬函式

資料權重

◆ getDiscSingleJump()

virtual double cv::cuda::StereoBeliefPropagation::getDiscSingleJump ( ) const
純虛擬函式

不連續單跳

◆ getMaxDataTerm()

virtual double cv::cuda::StereoBeliefPropagation::getMaxDataTerm ( ) const
純虛擬函式

資料代價截斷

◆ getMaxDiscTerm()

virtual double cv::cuda::StereoBeliefPropagation::getMaxDiscTerm ( ) const
純虛擬函式

不連續代價截斷

◆ getMsgType()

virtual int cv::cuda::StereoBeliefPropagation::getMsgType ( ) const
純虛擬函式

訊息型別 (CV_16SC1 或 CV_32FC1)

◆ getNumIters()

virtual int cv::cuda::StereoBeliefPropagation::getNumIters ( ) const
純虛擬函式

每個級別的BP迭代次數

◆ getNumLevels()

virtual int cv::cuda::StereoBeliefPropagation::getNumLevels ( ) const
純虛擬函式

級別數

◆ setDataWeight()

virtual void cv::cuda::StereoBeliefPropagation::setDataWeight ( double data_weight)
純虛擬函式

◆ setDiscSingleJump()

virtual void cv::cuda::StereoBeliefPropagation::setDiscSingleJump ( double disc_single_jump)
純虛擬函式

◆ setMaxDataTerm()

virtual void cv::cuda::StereoBeliefPropagation::setMaxDataTerm ( double max_data_term)
純虛擬函式

◆ setMaxDiscTerm()

virtual void cv::cuda::StereoBeliefPropagation::setMaxDiscTerm ( double max_disc_term)
純虛擬函式

◆ setMsgType()

virtual void cv::cuda::StereoBeliefPropagation::setMsgType ( int msg_type)
純虛擬函式

◆ setNumIters()

virtual void cv::cuda::StereoBeliefPropagation::setNumIters ( int iters)
純虛擬函式

◆ setNumLevels()

virtual void cv::cuda::StereoBeliefPropagation::setNumLevels ( int levels)
純虛擬函式

此類的文件生成自以下檔案