Оценка глубины OpenCv с карты диспаритета

Я пытаюсь оценить глубину от стереопары изображений с 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)));
   }

Но полученное значение глубины отличается от значения, полученного в предыдущей формуле, из-за значенияBMState->numberOfDisparities это меняет значение результата.

Как я могу установить этот параметр? что изменить этот параметр?

Спасибо

Ответы на вопрос(2)

Ваш ответ на вопрос