【发布时间】:2013-10-13 05:17:57
【问题描述】:
我正在尝试使用 OpenCV 从立体对图像中估计深度。我有视差图和深度估计可以得到:
(Baseline*focal)
depth = ------------------
(disparity*SensorSize)
我使用块匹配技术在两个校正后的图像中找到相同的点。
OpenCV 允许设置一些块匹配参数,例如BMState->numberOfDisparities。
块匹配过程后:
cvFindStereoCorrespondenceBM( frame1r, frame2r, disp, BMState);
cvConvertScale( disp, disp, 16, 0 );
cvNormalize( disp, vdisp, 0, 255, CV_MINMAX );
我发现深度值为:
if(cvGet2D(vdisp,y,x).val[0]>0)
{
depth =((baseline*focal)/(((cvGet2D(vdisp,y,x).val[0])*SENSOR_ELEMENT_SIZE)));
}
但是由于BMState->numberOfDisparities的值改变了结果值,所以得到的深度值与上式得到的值不同。
如何设置此参数?这个参数怎么改?
谢谢
【问题讨论】:
标签: c++ opencv computer-vision depth disparity-mapping