ブロックマッチングアルゴリズムを用いてステレオ対応点を求めるためのクラス.
class StereoBM_GPU
{
public:
enum { BASIC_PRESET = 0, PREFILTER_XSOBEL = 1 };
enum { DEFAULT_NDISP = 64, DEFAULT_WINSZ = 19 };
StereoBM_GPU();
StereoBM_GPU(int preset, int ndisparities = DEFAULT_NDISP,
int winSize = DEFAULT_WINSZ);
void operator() (const GpuMat& left, const GpuMat& right,
GpuMat& disparity);
void operator() (const GpuMat& left, const GpuMat& right,
GpuMat& disparity, const Stream & stream);
static bool checkIfGpuCallReasonable();
int preset;
int ndisp;
int winSize;
float avergeTexThreshold;
...
};
このクラスは,ブロックマッチングアルゴリズムを用いて視差マップを計算します.これには,事前処理,事後処理が含まれます:Sobel 事前フィルタリング( PREFILTER_XSOBEL がセットされた場合),および低テクスチャフィルタリング( avergeTexThreshold 0 の場合)です. avergeTexThreshold = 0 の場合,低テクスチャフィルタリングは行われません.そうでない場合は,左画像において となる箇所,つまり,左の入力画像のテクスチャが不足していると,各点 (x, y) における視差が0にセットされます.
_
StereoBMGPU コンストラクタ.
パラメタ: |
|
---|
ステレオ対応点オペレータ.指定された平行ステレオペアにおける視差を求めます.
パラメタ: |
|
---|
このアルゴリズムに対して,現在のGPUがCPUよりも高速に動作するか否かを推定する経験則.現在アクティブなデバイスに対して実行されます.
このクラスは,belief propagation アルゴリズムを用いて,ステレオ対応点を求めます.
class StereoBeliefPropagation
{
public:
enum { DEFAULT_NDISP = 64 };
enum { DEFAULT_ITERS = 5 };
enum { DEFAULT_LEVELS = 5 };
static void estimateRecommendedParams(int width, int height,
int& ndisp, int& iters, int& levels);
explicit StereoBeliefPropagation(int ndisp = DEFAULT_NDISP,
int iters = DEFAULT_ITERS,
int levels = DEFAULT_LEVELS,
int msg_type = CV_32F);
StereoBeliefPropagation(int ndisp, int iters, int levels,
float max_data_term, float data_weight,
float max_disc_term, float disc_single_jump,
int msg_type = CV_32F);
void operator()(const GpuMat& left, const GpuMat& right,
GpuMat& disparity);
void operator()(const GpuMat& left, const GpuMat& right,
GpuMat& disparity, Stream& stream);
void operator()(const GpuMat& data, GpuMat& disparity);
void operator()(const GpuMat& data, GpuMat& disparity, Stream& stream);
int ndisp;
int iters;
int levels;
float max_data_term;
float data_weight;
float max_disc_term;
float disc_single_jump;
int msg_type;
...
};
このクラスは,Pedro F. Felzenszwalb のアルゴリズム felzenszwalb_bp を実装しています.自身のデータのコスト(切断線形モデルを利用します)または,ユーザによって与えられたデータのコストを計算することができます.
注意事項: StereoBeliefPropagation は,大量のメモリを必要とします: メッセージストレージ用に
.また,データコストストレージ用に
. width_step は,パディングを含む1行のバイト数です.
StereoBeliefPropagation コンストラクタ
パラメタ: |
|
---|
StereoBeliefPropagation uses truncated linear model for the data cost and discontinuity term:
詳細は, felzenszwalb_bp を参照してください.
デフォルトでは, StereoBeliefPropagation は,浮動小数点数を利用し,メッセージには CV_32FC1 型が用いられます.しかし,パフォーマンスを上げたい場合に,固定小数点数と CV_16SC1 型のメッセージを利用することもできます.この場合,オーバフローを避けるために,パラメータは以下を満足しなければいけません.
指定された画像サイズ( widthと height)に対する推奨パラメータ( ndisp, iters, levels)を計算するための経験則.
ステレオ対応点オペレータ.指定された平行化ステレオペア,またはデータコストにおける視差を求めます.
パラメタ: |
|
---|
constant space belief propagation アルゴリズムを用いてステレオ対応点を求めるためのクラス.
class StereoConstantSpaceBP
{
public:
enum { DEFAULT_NDISP = 128 };
enum { DEFAULT_ITERS = 8 };
enum { DEFAULT_LEVELS = 4 };
enum { DEFAULT_NR_PLANE = 4 };
static void estimateRecommendedParams(int width, int height,
int& ndisp, int& iters, int& levels, int& nr_plane);
explicit StereoConstantSpaceBP(int ndisp = DEFAULT_NDISP,
int iters = DEFAULT_ITERS,
int levels = DEFAULT_LEVELS,
int nr_plane = DEFAULT_NR_PLANE,
int msg_type = CV_32F);
StereoConstantSpaceBP(int ndisp, int iters, int levels, int nr_plane,
float max_data_term, float data_weight,
float max_disc_term, float disc_single_jump,
int min_disp_th = 0,
int msg_type = CV_32F);
void operator()(const GpuMat& left, const GpuMat& right,
GpuMat& disparity);
void operator()(const GpuMat& left, const GpuMat& right,
GpuMat& disparity, Stream& stream);
int ndisp;
int iters;
int levels;
int nr_plane;
float max_data_term;
float data_weight;
float max_disc_term;
float disc_single_jump;
int min_disp_th;
int msg_type;
bool use_local_init_data_cost;
...
};
このクラスは,Q. Yang のアルゴリズム qx_csbp を実装しています. StereoConstantSpaceBP は,局所的最小値,大域的最小値データコスト初期化アルゴリズムを共にサポートしています.詳細は,論文をご覧ください.デフォルトでは,局所的最小値アルゴリズムが利用され,大域的最小値アルゴリズムを有効にするには use_local_init_data_cost を false にセットしてください.
StereoConstantSpaceBP コンストラクタ.
パラメタ: |
|
---|
StereoConstantSpaceBP uses truncated linear model for the data cost and discontinuity term:
詳細は, qx_csbp を参照してください.
デフォルトでは, StereoConstantSpaceBP は,浮動小数点数を利用し,メッセージには CV_32FC1 型が用いられます.しかし,パフォーマンスを上げたい場合に,固定小数点数と CV_16SC1 型のメッセージを利用することもできます.この場合,オーバフローを避けるために,パラメータは以下を満足しなければいけません.
指定された画像サイズ( widthと height)に対するパラメータ( ndisp, iters, levels, nrplane)を計算するための経験則.
ステレオ対応点オペレータ.指定された平行化ステレオペアにおける視差を求めます.
パラメタ: |
|
---|
joint bilateral フィルタリングによる視差マップ改善のためのクラス.
class CV_EXPORTS DisparityBilateralFilter
{
public:
enum { DEFAULT_NDISP = 64 };
enum { DEFAULT_RADIUS = 3 };
enum { DEFAULT_ITERS = 1 };
explicit DisparityBilateralFilter(int ndisp = DEFAULT_NDISP,
int radius = DEFAULT_RADIUS, int iters = DEFAULT_ITERS);
DisparityBilateralFilter(int ndisp, int radius, int iters,
float edge_threshold, float max_disc_threshold,
float sigma_range);
void operator()(const GpuMat& disparity, const GpuMat& image,
GpuMat& dst);
void operator()(const GpuMat& disparity, const GpuMat& image,
GpuMat& dst, Stream& stream);
...
};
このクラスは,Q. Yang のアルゴリズム qx_csbp を実装しています.
DisparityBilateralFilter コンストラクタ.
パラメタ: |
|
---|
joint bilateral フィルタリングを用いて,視差マップを改善します.
パラメタ: |
|
---|
視差画像に色をつけます.
パラメタ: |
|
---|
この関数は, を HSV 色空間の に変換し,その HSV 色空間を RGB に変換します.
視差画像を3次元空間に再投影します.
パラメタ: |
|
---|
参考: reprojectImageTo3D() .