Estimación de profundidad de OpenCv a partir del mapa de disparidad

Estoy tratando de estimar la profundidad de un par de imágenes estéreo con OpenCV. Tengo mapa de disparidad y la estimación de profundidad se puede obtener como:

             (Baseline*focal)
depth  =     ------------------
           (disparity*SensorSize)

He usado la técnica Block Matching para encontrar los mismos puntos en las dos imágenes rectificadas. OpenCV permite establecer algunos parámetros de coincidencia de bloques, por ejemploBMState->numberOfDisparities.

Después del proceso de coincidencia de bloque:

cvFindStereoCorrespondenceBM( frame1r, frame2r, disp, BMState);
cvConvertScale( disp, disp, 16, 0 );
cvNormalize( disp, vdisp, 0, 255, CV_MINMAX );

Encontré valor de profundidad como:

if(cvGet2D(vdisp,y,x).val[0]>0)
   {
   depth =((baseline*focal)/(((cvGet2D(vdisp,y,x).val[0])*SENSOR_ELEMENT_SIZE)));
   }

Pero el valor de profundidad obtenido es diferente del valor obtenido con la fórmula anterior debido al valor deBMState->numberOfDisparities Eso cambia el valor del resultado.

¿Cómo puedo configurar este parámetro? ¿Qué cambiar este parámetro?

Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta