I'm trying to estimate depth from a stereo pair images with OpenCV. I have disparity map and depth estimation can be obtained as:
(Baseline*focal)
depth = ------------------
(disparity*SensorSize)
I have used Block Matching technique to find the same points in the two rectificated images.
OpenCV permits to set some block matching parameter, for example BMState->numberOfDisparities
.
After block matching process:
cvFindStereoCorrespondenceBM( frame1r, frame2r, disp, BMState);
cvConvertScale( disp, disp, 16, 0 );
cvNormalize( disp, vdisp, 0, 255, CV_MINMAX );
I found depth value as:
if(cvGet2D(vdisp,y,x).val[0]>0)
{
depth =((baseline*focal)/(((cvGet2D(vdisp,y,x).val[0])*SENSOR_ELEMENT_SIZE)));
}
But the depth value obtaied is different from the value obtaied with the previous formula due to the value of BMState->numberOfDisparities
that changes the result value.
How can I set this parameter? what to change this parameter?
Thanks