我正在研究立体视觉,我对这个问题中深度估计的准确性很感兴趣.这取决于几个因素,如:
假设我们没有低价相机和镜头(没有廉价的网络摄像头等).
我的问题是,我们在这个领域可以实现的深度估算的准确性是多少?谁知道真正的立体视觉系统能够准确地工作?我们可以实现1 mm的深度估算精度吗?
我的问题还针对opencv中实现的系统.您达到了什么准确度?
我注意到即使我已经设置了适当的标志(即 CV_CALIB_FIX_FOCAL_LENGTH),opencvstereoCalibrate() 也会改变相机矩阵中的焦距。我正在使用两个相同的相机,它们在镜头上机械设置了相同的焦距,而且我知道传感器尺寸,因此我可以手动计算内部相机矩阵,我实际上是做什么的。
这里有一些立体声校准程序的输出 - 立体声校准(stereoCalibrate()之前和之后的相机矩阵)。
std::cout << "Before calibration: " << std::endl;
std::cout << "C1: " << _cameraMatrixA << std::endl;
std::cout << "C2: " << _cameraMatrixB << std::endl;
double error = cv::stereoCalibrate(objectPoints, imagePointsA, imagePointsB, _cameraMatrixA, _distCoeffsA, _cameraMatrixB, _distCoeffsB, _imageSize,
R, T, E, F,
cv::TermCriteria((cv::TermCriteria::COUNT + cv::TermCriteria::EPS), 30, 9.999999999999e-7), CV_CALIB_FIX_FOCAL_LENGTH | CV_CALIB_FIX_PRINCIPAL_POINT);
std::cout << "After calibration: " << std::endl;
std::cout << "C1: " << _cameraMatrixA << std::endl;
std::cout << "C2: " << _cameraMatrixB << std::endl;
Run Code Online (Sandbox Code Playgroud)
校准前:
C1: [6203.076923076923, 0, 1280; …