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

使用塊匹配演算法計算立體對應關係的類,由 K. Konolige 引入並貢獻給 OpenCV。更多...

#include <opencv2/calib3d.hpp>

cv::StereoBM 的協作圖

公共型別

列舉  {
  PREFILTER_NORMALIZED_RESPONSE = 0 ,
  PREFILTER_XSOBEL = 1
}
 立體匹配演算法的預過濾型別。更多...
 
- 從 cv::StereoMatcher 繼承的公共型別
列舉  {
  DISP_SHIFT = 4 ,
  DISP_SCALE = (1 << DISP_SHIFT)
}
 

公共成員函式

virtual int getPreFilterCap () const =0
 獲取預過濾畫素的當前截斷值。
 
virtual int getPreFilterSize () const =0
 獲取預過濾核的當前大小。
 
virtual int getPreFilterType () const =0
 獲取演算法中當前使用的預過濾型別。
 
virtual Rect getROI1 () const =0
 獲取左影像的當前感興趣區域 (ROI)。
 
virtual Rect getROI2 () const =0
 獲取右影像的當前感興趣區域 (ROI)。
 
virtual int getSmallerBlockSize () const =0
 獲取用於紋理檢查的較小塊的當前大小。
 
virtual int getTextureThreshold () const =0
 獲取當前紋理閾值。
 
virtual int getUniquenessRatio () const =0
 獲取當前唯一性比率。
 
virtual void setPreFilterCap (int preFilterCap)=0
 設定預過濾畫素的截斷值。
 
virtual void setPreFilterSize (int preFilterSize)=0
 設定預過濾核的大小。
 
virtual void setPreFilterType (int preFilterType)=0
 設定演算法中使用的預過濾型別。
 
virtual void setROI1 (Rect roi1)=0
 設定左影像的感興趣區域 (ROI)。
 
virtual void setROI2 (Rect roi2)=0
 設定右影像的感興趣區域 (ROI)。
 
virtual void setSmallerBlockSize (int blockSize)=0
 設定用於紋理檢查的較小塊的大小。
 
virtual void setTextureThreshold (int textureThreshold)=0
 設定用於過濾低紋理區域的閾值。
 
virtual void setUniquenessRatio (int uniquenessRatio)=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 Ptr< StereoBMcreate (int numDisparities=0, int blockSize=21)
 建立 StereoBM 物件。
 
- 從 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::Algorithm 繼承的保護成員函式
void writeFormat (FileStorage &fs) const
 

詳細描述

使用塊匹配演算法計算立體對應關係的類,由 K. Konolige 引入並貢獻給 OpenCV。

該類實現了用於立體對應的塊匹配演算法,用於從立體影像對計算視差圖。它提供了微調引數的方法,例如預過濾、紋理閾值、唯一性比率和感興趣區域 (ROI),以最佳化效能和準確性。

成員列舉文件

◆ 匿名列舉

匿名列舉

立體匹配演算法的預過濾型別。

這些常量定義了在計算視差圖之前應用於影像的預過濾型別。

  • PREFILTER_NORMALIZED_RESPONSE: 使用歸一化響應進行預過濾。
  • PREFILTER_XSOBEL: 使用 X-Sobel 運算子進行預過濾。
列舉器
PREFILTER_NORMALIZED_RESPONSE 

歸一化響應預過濾器。

PREFILTER_XSOBEL 

X-Sobel 預過濾器。

成員函式文件

◆ create()

static Ptr< StereoBM > cv::StereoBM::create ( int numDisparities = 0,
int blockSize = 21 )
static
Python
cv.StereoBM.create([, numDisparities[, blockSize]]) -> retval
cv.StereoBM_create([, numDisparities[, blockSize]]) -> retval

建立 StereoBM 物件。

引數
numDisparities視差搜尋範圍。對於每個畫素,演算法將找到從 0(預設最小視差)到 numDisparities 的最佳視差。可以透過改變最小視差來移動搜尋範圍。
blockSize演算法比較的塊的線性大小。大小應為奇數(因為塊以當前畫素為中心)。更大的塊大小意味著更平滑但不那麼準確的視差圖。更小的塊大小提供更詳細的視差圖,但演算法找到錯誤對應關係的機率更高。
返回
指向已建立的 StereoBM 物件的指標。

該函式建立一個 StereoBM 物件。然後您可以呼叫 StereoBM::compute() 來計算特定立體對的視差。

◆ getPreFilterCap()

virtual int cv::StereoBM::getPreFilterCap ( ) const
純虛擬函式
Python
cv.StereoBM.getPreFilterCap() -> retval

獲取預過濾畫素的當前截斷值。

返回
當前預過濾上限值。

◆ getPreFilterSize()

virtual int cv::StereoBM::getPreFilterSize ( ) const
純虛擬函式
Python
cv.StereoBM.getPreFilterSize() -> retval

獲取預過濾核的當前大小。

返回
當前預過濾器大小。

◆ getPreFilterType()

virtual int cv::StereoBM::getPreFilterType ( ) const
純虛擬函式
Python
cv.StereoBM.getPreFilterType() -> retval

獲取演算法中當前使用的預過濾型別。

返回
當前預過濾型別:0 表示 PREFILTER_NORMALIZED_RESPONSE,1 表示 PREFILTER_XSOBEL。

◆ getROI1()

virtual Rect cv::StereoBM::getROI1 ( ) const
純虛擬函式
Python
cv.StereoBM.getROI1() -> retval

獲取左影像的當前感興趣區域 (ROI)。

返回
左側影像的當前 ROI。

◆ getROI2()

virtual Rect cv::StereoBM::getROI2 ( ) const
純虛擬函式
Python
cv.StereoBM.getROI2() -> retval

獲取右影像的當前感興趣區域 (ROI)。

返回
右側影像的當前 ROI。

◆ getSmallerBlockSize()

virtual int cv::StereoBM::getSmallerBlockSize ( ) const
純虛擬函式
Python
cv.StereoBM.getSmallerBlockSize() -> retval

獲取用於紋理檢查的較小塊的當前大小。

返回
當前的較小塊大小。

◆ getTextureThreshold()

virtual int cv::StereoBM::getTextureThreshold ( ) const
純虛擬函式
Python
cv.StereoBM.getTextureThreshold() -> retval

獲取當前紋理閾值。

返回
當前紋理閾值。

◆ getUniquenessRatio()

virtual int cv::StereoBM::getUniquenessRatio ( ) const
純虛擬函式
Python
cv.StereoBM.getUniquenessRatio() -> retval

獲取當前唯一性比率。

返回
當前唯一性比率。

◆ setPreFilterCap()

virtual void cv::StereoBM::setPreFilterCap ( int preFilterCap)
純虛擬函式
Python
cv.StereoBM.setPreFilterCap(preFilterCap) ->

設定預過濾畫素的截斷值。

引數
preFilterCap截斷值。通常在 [1, 63] 範圍內。

此值將預過濾器輸出限制在 [-preFilterCap, preFilterCap] 範圍內,有助於減少預過濾影像中噪聲和異常值的影響。

◆ setPreFilterSize()

virtual void cv::StereoBM::setPreFilterSize ( int preFilterSize)
純虛擬函式
Python
cv.StereoBM.setPreFilterSize(preFilterSize) ->

設定預過濾核的大小。

引數
preFilterSize預過濾器核心的大小。必須是奇數整數,通常在 5 到 255 之間。

預過濾器大小決定了預過濾操作的空間範圍,透過歸一化亮度並增強紋理來為視差計算準備影像。更大的尺寸可以減少噪聲但可能模糊細節,而更小的尺寸可以保留細節但更容易受到噪聲影響。

◆ setPreFilterType()

virtual void cv::StereoBM::setPreFilterType ( int preFilterType)
純虛擬函式
Python
cv.StereoBM.setPreFilterType(preFilterType) ->

設定演算法中使用的預過濾型別。

引數
preFilterType要使用的預過濾器型別。可能的值為
  • PREFILTER_NORMALIZED_RESPONSE (0):使用歸一化響應進行預過濾。
  • PREFILTER_XSOBEL (1):使用 X-Sobel 運算子進行預過濾。

預過濾器型別影響影像在計算視差圖之前的準備方式。不同的預過濾方法可以增強特定影像特徵或減少噪聲,從而影響視差圖的質量。

◆ setROI1()

virtual void cv::StereoBM::setROI1 ( Rect roi1)
純虛擬函式
Python
cv.StereoBM.setROI1(roi1) ->

設定左影像的感興趣區域 (ROI)。

引數
roi1左影像的 ROI 矩形。

透過設定 ROI,立體匹配計算被限制在指定區域,透過聚焦影像的相關部分來提高效能和潛在的準確性。

◆ setROI2()

virtual void cv::StereoBM::setROI2 ( Rect roi2)
純虛擬函式
Python
cv.StereoBM.setROI2(roi2) ->

設定右影像的感興趣區域 (ROI)。

引數
roi2右影像的 ROI 矩形。

與 setROI1 類似,這會將計算限制在右影像中的指定區域。

◆ setSmallerBlockSize()

virtual void cv::StereoBM::setSmallerBlockSize ( int blockSize)
純虛擬函式
Python
cv.StereoBM.setSmallerBlockSize(blockSize) ->

設定用於紋理檢查的較小塊的大小。

引數
blockSize較小塊的大小。必須是 5 到 255 之間的奇數整數。

此引數確定用於計算紋理方差的塊的大小。較小的塊捕獲更精細的細節,但對噪聲更敏感,而較大的塊更魯棒但可能遺漏精細細節。

◆ setTextureThreshold()

virtual void cv::StereoBM::setTextureThreshold ( int textureThreshold)
純虛擬函式
Python
cv.StereoBM.setTextureThreshold(textureThreshold) ->

設定用於過濾低紋理區域的閾值。

引數
textureThreshold閾值。必須是非負數。

此引數過濾掉紋理較低的區域(這些區域難以建立對應關係),從而減少視差圖中的噪聲。更高的值過濾更積極,但可能會丟棄有效資訊。

◆ setUniquenessRatio()

virtual void cv::StereoBM::setUniquenessRatio ( int uniquenessRatio)
純虛擬函式
Python
cv.StereoBM.setUniquenessRatio(uniquenessRatio) ->

設定用於過濾模糊匹配的唯一性比率。

引數
uniquenessRatio唯一性比率值。通常在 [5, 15] 範圍內,但可以是 0 到 100。

此引數確保最佳匹配明顯優於次佳匹配,從而減少誤報。更高的值更嚴格,但在困難區域可能會過濾掉有效匹配。


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