OpenCVでステレオペア画像から深さを推定しようとしています。私は2枚のrectificated画像における同じ点を見つけるために、ブロックマッチング技術を使用している視差マップからのOpenCv深度推定
(Baseline*focal)
depth = ------------------
(disparity*SensorSize)
:私は、視差マップ及び奥行き推定を得ることができる持っています。 OpenCVでは、ブロック一致パラメータを設定することができます(例:BMState->numberOfDisparities
)。
は、ブロックマッチング処理後:
cvFindStereoCorrespondenceBM(frame1r, frame2r, disp, BMState);
cvConvertScale(disp, disp, 16, 0);
cvNormalize(disp, vdisp, 0, 255, CV_MINMAX);
私は深さ値が見つかりました:
if(cvGet2D(vdisp,y,x).val[0]>0)
{
depth =((baseline*focal)/(((cvGet2D(vdisp,y,x).val[0])*SENSOR_ELEMENT_SIZE)));
}
しかしobtaied奥行き値がBMState->numberOfDisparities
の値による前式でobtaied値と異なります結果値が変更されます。
このパラメータはどのように設定できますか?このパラメータを変更するにはどうすればよいですか?
おかげ
あなたの答えはタクスです。ブロックマッチングプロセスで2つの整流された画像が得られるので、この式は正しく機能するはずですか?今度は、reprojectImageTo3D関数を使用しようとします。イタリア語版:Dal nome credo che tu sia italiano、quindi per una maggiore chiarezza(私の);イマジネーションは、前の数式の前に置かれていますか?再利用イメージを利用すると、 Grazie per la risposta。 – Speed87
"うまくいくはずですか"を定義しますか?パラレルカメラ式は、整流された画像を観察する理想的なカメラに関して、特定のピクセルで深さを与えます。再構成は射影的に行われるが、正確で正確ではない。 [はい、私はイタリア語を話しますが、これは英語のみのフォーラムです] –