detectCheckerboardPoints 返回的点的顺序

Order of points returned by detectCheckerboardPoints

文档中定义了 CV-fcn detectCheckerboardPoints 返回的点的顺序:

数字先沿棋盘的短边增加,然后沿长边增加。但是原点究竟是如何定义的呢?它必须在棋盘的一角,这将留下 4 个选项。如果我们声明原点外侧必须有一个黑色方块,我们仍然有 2 个选项。

现在看看这两张用不同相机拍摄的同一个棋盘的图像,以及绘制在它们上的 detectCheckerboardPoints 结果:

正如我们所见,原点位于左图中的左上角,这支持了外部黑色方块的可能性(两张图片中的方块都是倒置的)。我们还可以看到两个图像的编号非常不同。如果我想计算立体相机校准或图像配准,我需要相应的点对。所以我想我的问题是双重的:

  1. detectCheckerboardPoints 返回的图像点的顺序究竟是如何定义的?有多少种选择?
  2. 当 运行 为同一棋盘的两个图像检测 CheckerboardPoints 时,如何确保我得到匹配的点对?

如果你有一个不对称的棋盘,其中一侧有偶数个方块,另一侧有奇数个,那么只有一种方法可以设置原点,使得它外面的方块是黑色的,长边是X轴,X轴指向右,Y轴指向下。这导致右手坐标系,Z 轴指向电路板。

在文档中的图片中,如果将原点移动到另一个黑色方块,则短边必须成为X轴,或者X轴必须改变方向。

在您的特定情况下,您遇到了问题,因为方块的颜色在 IR 图像中颠倒了。这将导致检测到的点的顺序不同。如果您想将这两个相机校准为一对立体相机,您必须更改红外相机设置以反转图像强度,或者在校准之前以编程方式自行完成。