OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
cv::cuda::StereoBeliefPropagation クラスabstract

確信度伝播(belief propagation)アルゴリズムを用いてステレオ対応を計算するクラス。: 続きを読む...

#include <opencv2/cudastereo.hpp>

Collaboration diagram for 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
 
- Public Member Functions inherited from 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
 
- Public Member Functions inherited from 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 ) を、ヒューリスティックな手法で計算する。
 
- Static Public Member Functions inherited from 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)
 ファイルノードからアルゴリズムを読み込む。
 

Additional Inherited Members

- Public Types inherited from cv::StereoMatcher
enum  {
  DISP_SHIFT = 4 ,
  DISP_SCALE = (1 << DISP_SHIFT)
}
 
- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

詳細説明

確信度伝播(belief propagation)アルゴリズムを用いてステレオ対応を計算するクラス。:

このクラスは [91] で説明されているアルゴリズムを実装する。独自のデータコストを(切断線形モデルを用いて)計算するか、ユーザー提供のデータコストを使用することができる。

覚え書き
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 はパディングを含む1ライン中のバイト数である。

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)\]

詳細については [91] を参照のこと。

デフォルトでは 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() )
pure virtual

指定されたデータコストに対して視差を求めるステレオ対応演算子を有効にする。

引数
dataユーザー指定のデータコスト。msg_type 型で Size(<画像の列数>*ndisp, <画像の行数>) サイズの行列。
disparity出力視差マップ。disparityが空の場合、出力型は CV_16SC1 となる。それ以外の場合は型が保持される。16ビット符号付き形式では、視差値に小数ビットは含まれない。
stream非同期版のための Stream

◆ compute() [2/2]

virtual void cv::cuda::StereoBeliefPropagation::compute ( InputArray left,
InputArray right,
OutputArray disparity,
Stream & stream )
pure virtual

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

◆ 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
pure virtual

データの重み

◆ getDiscSingleJump()

virtual double cv::cuda::StereoBeliefPropagation::getDiscSingleJump ( ) const
pure virtual

不連続のシングルジャンプ

◆ getMaxDataTerm()

virtual double cv::cuda::StereoBeliefPropagation::getMaxDataTerm ( ) const
pure virtual

データコストの切断値

◆ getMaxDiscTerm()

virtual double cv::cuda::StereoBeliefPropagation::getMaxDiscTerm ( ) const
pure virtual

不連続コストの切断値

◆ getMsgType()

virtual int cv::cuda::StereoBeliefPropagation::getMsgType ( ) const
pure virtual

メッセージの型(CV_16SC1 または CV_32FC1)

◆ getNumIters()

virtual int cv::cuda::StereoBeliefPropagation::getNumIters ( ) const
pure virtual

各レベルにおけるBP反復回数

◆ getNumLevels()

virtual int cv::cuda::StereoBeliefPropagation::getNumLevels ( ) const
pure virtual

レベル数

◆ setDataWeight()

virtual void cv::cuda::StereoBeliefPropagation::setDataWeight ( double data_weight)
pure virtual

◆ setDiscSingleJump()

virtual void cv::cuda::StereoBeliefPropagation::setDiscSingleJump ( double disc_single_jump)
pure virtual

◆ setMaxDataTerm()

virtual void cv::cuda::StereoBeliefPropagation::setMaxDataTerm ( double max_data_term)
pure virtual

◆ setMaxDiscTerm()

virtual void cv::cuda::StereoBeliefPropagation::setMaxDiscTerm ( double max_disc_term)
pure virtual

◆ setMsgType()

virtual void cv::cuda::StereoBeliefPropagation::setMsgType ( int msg_type)
pure virtual

◆ setNumIters()

virtual void cv::cuda::StereoBeliefPropagation::setNumIters ( int iters)
pure virtual

◆ setNumLevels()

virtual void cv::cuda::StereoBeliefPropagation::setNumLevels ( int levels)
pure virtual

このクラス詳解は次のファイルから抽出されました: