可以找到ChessboardCorners加速吗?

时间:2018-02-20 18:52:19

标签: opencv computer-vision camera-calibration corner-detection

我找到了这篇文章OpenCV findChessboardCorners very slow,但它没有完全回答我的问题。

我在覆盆子pi上运行相机校准工具,在全分辨率图像中检测棋盘角需要花费大量时间。我目前正在重新缩放它们,但计算出的参数不能用于全尺寸图像。

我想到的一件事是将图像中的角点检测到小4倍,然后将角点坐标乘以4,但结果并不完全相同。

您认为有没有办法加快或插入另一个角落检测?

我正在使用python实现(cv2)

由于

1 个答案:

答案 0 :(得分:4)

大部分时间用于棋盘提取,其中包括(粗略地说)三个步骤:检测图像中的棋盘角,将它们细化为子像素分辨率,并将它们与标称棋盘匹配。

在这三个中,第一步是最昂贵的,因为它涉及处理整个图像。因此,您可以通过检测角落并以较低分辨率匹配棋盘来获得一些时间(使用cv2.findChessboardCorners)。然后,您可以将其坐标重新缩放为全分辨率,并对其进行亚像素精化(cv2.find4QuadCornersSubpix)以获得更高的精度。细化例程适用于检测到的角落周围的小区域,因此需要更少的内存 - 这对于处理缓存大小有限的CPU很有用。

此过程也有其他原因,请参阅this other answer