【问题标题】:Determine chessboard dimensions in pixels以像素为单位确定棋盘尺寸
【发布时间】:2012-09-16 11:56:42
【问题描述】:

类似于使用棋盘校准单个相机 2D 图像,我希望确定棋盘(或单个正方形)的宽度/高度(以像素为单位)。

我有一个垂直对准地面的相机,确保与下面的表面完全齐平。我正在使用相机来确定连续帧之间的平移(使用傅立叶相位相关成功实现),目前我的结果返回以像素为单位的平移,但是我想使用类似于校准的技术,我将相机移动到棋盘平放在地面上,以相对于我的图像高度和宽度自动确定棋盘的大小(以像素为单位)。

知道棋盘的尺寸(以毫米为单位)后,我可以将像素单位转换为以毫米为单位的现实世界单位,即 1 个像素将代表与地面上相机高度成正比的距离。这将允许我将像素平移转换为毫米平移,并在每次更改相机高度时重新校准。

实现这一目标的推荐方法是什么?肯定比单机二维标定要简单。

【问题讨论】:

    标签: c opencv camera-calibration


    【解决方案1】:

    OpenCV 可以通过cv::findChessboardCorners() 为您提供棋盘角的位置。

    我不确定透视失真是否会影响您的计算,但如果棋盘在相机下方完全对齐,它应该可以工作。

    【讨论】:

    • 啊,谢谢,我会试一试。角的输出数组,这是一个像素位置(x,y)吗?棋盘的最外边,基本上找到四个角?
    • 工作得很好,使用棋盘角的坐标来确定每个角之间的像素距离。因此,知道以毫米为单位的角之间的距离可以将我以像素为单位测量的平移转换为以毫米为单位的实际平移。
    • 同时做检查以确保每个角之间的像素距离相对相等,以确保棋盘与相机完全水平进行校准。
    • OpenCV 非常棒。还有一个用于 OpenCV 的简单 Python 包装器,它极大地简化了整个 API:simplecv.org/docs/SimpleCV.html#i/SimpleCV.ImageClass.Image/…
    【解决方案2】:

    这只是一个想法,所以不要打我..但也许使用棋盘的自然对比?

    “在某些时候,它会从亮像素切换到暗像素,并且应该会发生(不记得棋盘上的列数)次。”应该是一个可行的算法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 2017-12-13
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多