Estimativa de profundidade OpenCv do Mapa de Disparidade

Eu estou tentando estimar a profundidade de um par de imagens estéreo com o OpenCV. Eu tenho mapa de disparidade e estimativa de profundidade pode ser obtida como:

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

Eu usei a técnica Block Matching para encontrar os mesmos pontos nas duas imagens retificadas. O OpenCV permite definir algum parâmetro de correspondência de bloco, por exemploBMState->numberOfDisparities.

Após o processo de correspondência de bloco:

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

Eu encontrei o valor da profundidade como:

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

Mas o valor de profundidade obtido é diferente do valor obtido com a fórmula anterior devido ao valor deBMState->numberOfDisparities que altera o valor do resultado.

Como posso definir esse parâmetro? o que mudar esse parâmetro?

obrigado

questionAnswers(2)

yourAnswerToTheQuestion