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