我正在尝试使用OpenCV估计来自立体对图像的深度。我可以为获得视差图和深度估计:来自Difparity的OpenCv深度估计图
(Baseline*focal)
depth = ------------------
(disparity*SensorSize)
我已经使用块匹配技术来找到两个rectificated图像的相同点。 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)));
}
但是obtaied的深度值是从与前面的公式obtaied的值不同由于BMState->numberOfDisparities
值这改变了结果值。
如何设置此参数?什么改变这个参数?
由于
泰克斯为您的答案,我给块匹配过程中的两个矫正图像,所以这个公式应该正常工作?现在我将尝试使用reprojectImageTo3D函数。意大利语版本:Dal nome信条语意大利语,quindi per una maggiore chiarezza(per me); se utilizzogiàle immagini rettificate la formula precedente dovrebbe andare bene giusto? Se invece utilizzo ReprojectImageTo3D dovrei estrapolare soltanto il valore Z? Grazie per la risposta。 – Speed87
定义“应该工作”?平行相机公式给出了相对于观察整流图像的理想相机的给定像素的深度。它的重建将是射影式的,但不是精确的。 [是的,我确实说意大利语,但这是一个只有英语的论坛] –