【问题标题】:Why does the camera calibration in opencv-python takes more than 30 minutes?为什么opencv-python中的相机校准需要30多分钟?
【发布时间】:2018-06-28 00:59:44
【问题描述】:

我试图复制this camera calibration code

当我运行我的脚本时,校准过程不会停止大约 30 分钟(我期望输出的固有相机矩阵)。我的代码有什么问题?为什么校准过程需要这么长时间?

这是我的代码

import os
import cv2
import numpy as np 

# DUMMY TEST
FilepathCalib = './data'

# Declaring global variable
img_calib_set = []

points_3d_sample = np.zeros((6*7,3), np.float32)
points_3d_sample[:,:2] = np.mgrid[0:7,0:6].T.reshape(-1,2)

points_2d = []
points_3d = []

# Loading calibration image dataset
for img_calib in os.listdir(FilepathCalib):
    img_calib = cv2.imread(FilepathCalib + '/' + img_calib, 0)
    img_calib_set.append(img_calib)

# Finding checkerboard corners pattern in image dataset
for img in img_calib_set:
    ret_val, corner = cv2.findChessboardCorners(img, (7,9), None)

    if ret_val == True:
        points_3d.append(points_3d_sample)
        points_2d.append(corner)

# Extracting camera parameters 
ret_val, intrinsic_mat, dist_coef, rot_vector, tran_vector =         
cv2.calibrateCamera(points_3d, points_2d, img_calib_set[0].shape[::-1], None, None)
print(intrinsic_mat)

这是我的示例校准图像

【问题讨论】:

    标签: python opencv computer-vision camera-calibration


    【解决方案1】:

    cv2.findChessboardCorners() 函数的处理时间很大程度上取决于输入图像。

    1K-4K 图像 30 分钟不异常。 您是否尝试将处理时间写入控制台输出或调试日志?

    通过这种方式,您可以了解某些图像是否比其他图像花费的时间更长。我有一个案例,大多数图像需要 10-20 秒,但少数需要 3-5 分钟。花费大量时间处理的图片通常具有模糊的棋盘图案(运动模糊),或者具有其他矩形背景图案(壁橱、百叶窗、窗框等)。

    判断您输入的图像,我可以肯定地看到纸卡纸由于握住它而略微弯曲。我也很难将校准图案粘贴到真正平坦的表面上。最后,我使用液晶显示器显示图像,并移动相机以获取校准图像(确保不要在显示器上缩放图像;图像上的 1 个像素应该是显示器上的 1 个像素,并且它不必是全屏的)。 这给了我最低的重投影误差。

    您的示例图像质量是否低于实际素材?您可以清楚地看到,JPEG 压缩算法会在图像边缘产生大量压缩伪影。这并不理想。如果这是您的实际素材,我建议将压缩质量设置为最高,或使用 PNG 等无损格式。

    通过用更好的候选图像替换一些校准图像,我能够将校准时间缩短一半。

    【讨论】:

    • 啊,我明白了。是的,它最终在 2.5 小时内完成了全部 50 张图像,与 Matlab 校准工具箱的结果相比略有不同(我还没有测量实际误差)。是的,我没有使用合适的设备来拍摄图像,我是用“DIY-ish”的方式拍摄的。哦,其实上传的样张图只是实物图的截图,我用相机拍的原图进行了校准。我会在以后的实验中尝试你的建议。谢谢 Gwen,我认为长时间的过程是一个错误。
    猜你喜欢
    • 2021-10-18
    • 2016-12-29
    • 1970-01-01
    • 2013-01-28
    • 2014-10-23
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多