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