Opencv 使用长焦距镜头对大图像进行摄像机标定时,遇到了较大的误差

Opencv 使用长焦距镜头对大图像进行摄像机标定时,遇到了较大的误差,opencv,computer-vision,camera-calibration,Opencv,Computer Vision,Camera Calibration,我是新来的,如果我违反了任何规则,请帮助我改进 我正在做一些视觉定位的工作,工作半径大约300米。所以我用了一个4912*3684分辨率的大相机。但我用棋盘校准相机的结果是重投影误差超过3.6像素。 摄像机矩阵是 [ 3.0126352098515147e+05, 0., 2456., 0., 4.3598609578377334e+05, 1842., 0., 0., 1. ] 我意识到外汇远不是财政年度。标称像素尺寸为1.25um,焦距为755mm。 我指的是这个问题中的一些建议 可能

我是新来的,如果我违反了任何规则,请帮助我改进

我正在做一些视觉定位的工作,工作半径大约300米。所以我用了一个4912*3684分辨率的大相机。但我用棋盘校准相机的结果是重投影误差超过3.6像素。 摄像机矩阵是

[ 3.0126352098515147e+05, 0., 2456.,
 0., 4.3598609578377334e+05, 1842.,
 0., 0., 1. ]
我意识到外汇远不是财政年度。标称像素尺寸为1.25um,焦距为755mm。 我指的是这个问题中的一些建议

可能正确的方法是从较低的分辨率开始(即缩小尺寸),然后放大由此找到的角点的位置,并将其用作以完全分辨率运行cvFindCornersSubpix的初始估计值

因此,我在
cv::findChessboardCorners()之前调整输入图像的大小,如下代码所示:

cv::Size msize(1228921)//第4912*3684号决议
int-downsize=4//缩小比例系数
cv::Mat small;//用于缩小图像大小的临时文件
cv::调整大小(imageInput,小,msize);
bool ok=findChessboardCorners(小型、板大小、图像点、CV校准、CB自适应、阈值、CV校准、CB标准化图像);
如果(确定){
//纠偏
对于(size_t j=0;jcout要使任何校准准确,应尝试考虑以下事项:

通过使用简单的焦点图表进行验证,确保焦点正确。 环境问题,场景应该少反射。 校准取决于您使用的焦距图。因此,焦距图保持平坦非常关键。任何毫米级凸起也会影响校准。 考虑覆盖角以获得更好的失真系数。 使用不同的图案位置以覆盖最大的视野


除此之外,获取单个图像的校准误差,您可以观察哪个图像的误差更大,哪个图像好。校准过程中应简单地丢弃未聚焦图像和模糊图像。如果您给患者时间,这是一个简单的过程。祝您校准愉快。

对于任何校准准确地说,您应该尝试考虑以下事项:

通过使用简单的焦点图表进行验证,确保焦点正确。 环境问题,场景应该少反射。 校准取决于您使用的焦距图。因此,焦距图保持平坦非常关键。任何毫米级凸起也会影响校准。 考虑覆盖角以获得更好的失真系数。 使用不同的图案位置以覆盖最大的视野


除此之外,获取单个图像的校准误差,您可以观察哪个图像的误差更大,哪个图像好。校准过程中应简单地丢弃未聚焦图像和模糊图像。如果您给患者时间,这是一个简单的过程。祝您校准愉快。

谢谢您的建议。我拍摄了一系列新照片,并删除了一些重设错误率较高的图像。结果要好得多。但是,fy/fx=1.13,我想知道是否有问题。很高兴知道。您可以检查是否进行了任何大小调整。尝试使用原始分辨率。同样,焦距也起到了作用。您得到的总体RMS错误是什么g现在?RMS错误是2.40438px。我删除了其中一些RMS错误较高的图像。根据,图像应涵盖X、Y、大小和倾斜方向。您的数据集显示您正在对倾斜和大小进行合理调整。缺少X、Y方向图像。请通过链接并尝试从更长距离进行校准。Tha谢谢你的建议。我拍摄了一系列新的照片,删除了一些重排错误很高的图像。结果要好得多。但是,fy/fx=1.13,我想知道是否有什么问题。很高兴知道。你可以检查是否进行了任何大小调整。尝试使用原始分辨率。同样,对焦也起到了作用。总体RMS e是多少您现在得到的错误?RMS错误为2.40438px。我删除了其中一些RMS错误较高的图像。根据,图像应涵盖X、Y、大小和倾斜方向。您的数据集显示您正在正确地调整倾斜和大小。缺少X、Y方向图像。请浏览链接并尝试从更远的距离。
double err_first = calibrateCamera(object_points_seq, image_points_seq, image_size, cameraMatrix, distCoeffs, rvecsMat, tvecsMat, CV_CALIB_FIX_K3 | CALIB_FIX_PRINCIPAL_POINT);