Language agnostic 如何找到正方形图案角点的像素坐标?
这可能与编程无关,但程序员可能最适合回答这个问题 对于相机校准,我在一张纸上打印了一个8 x 8的正方形图案。我必须手动将这些坐标输入到文本文件中。然后,软件将从那里提取并计算校准参数 是否有一个脚本或一些软件,我可以在这些图像上运行,并获得64个正方形中每个正方形的4个角的像素坐标Language agnostic 如何找到正方形图案角点的像素坐标?,language-agnostic,image-processing,opencv,camera-calibration,Language Agnostic,Image Processing,Opencv,Camera Calibration,这可能与编程无关,但程序员可能最适合回答这个问题 对于相机校准,我在一张纸上打印了一个8 x 8的正方形图案。我必须手动将这些坐标输入到文本文件中。然后,软件将从那里提取并计算校准参数 是否有一个脚本或一些软件,我可以在这些图像上运行,并获得64个正方形中每个正方形的4个角的像素坐标 您可以使用cvFindChessboardCorners()使用传统的棋盘图案(即没有间隙的黑白方块)来完成此操作。您可以在中阅读有关函数的更多信息,并在或中查看一些示例代码。作为额外的好处,OpenCV具有内置函
您可以使用
cvFindChessboardCorners()
使用传统的棋盘图案(即没有间隙的黑白方块)来完成此操作。您可以在中阅读有关函数的更多信息,并在或中查看一些示例代码。作为额外的好处,OpenCV具有内置函数,用于计算相机的固有参数和平面校准对象的多个视图的一系列外在参数。我确信有许多具有不同功能和许可证的计算机视觉库,但我能记得的是,它应该能够识别这种模式。如果这是不可能的,它还提供了一套非常好的图案,这些图案经过裁剪,即使部分模糊,也能被识别出来。我会:
- 应用阈值并获取二值化图像
- 对图像应用SobelX过滤器。你可以得到一个有垂直线的图像。这属于几乎垂直的正方形的边。将其保存为image1
- 对图像应用SobelY过滤器。你可以得到一个有水平线的图像。这属于几乎水平的正方形的边。将其保存为图像2
- make(image1xorimage2)。您将得到一个黑色图像,其中白色像素表示角点位置
希望能有所帮助。我不知道ARToolKit(虽然我听说过很多),但是对于OpenCV,这个过程很简单。感谢OpenCV的参考,我不确定OpenCV是否可以解码这个模式(我可能错了),我在他们的校准页面上看到了一些其他模式。我知道的所有标准校准例程(OpenCV和其他)假设一个黑白“棋盘”模式,正方形之间没有间隙。如果您不限于使用您发布的校准模式,我强烈建议使用这样的模式。如果这不是一个选项,您将不得不自己编写角点检测代码(如用户531627所述)。谢谢!我将查看ARToolKit!!我该如何做这些,我的意思是在哪个框架中可以做这些?正如Michael Koval所建议的,我会使用OpenCV()。无论如何,你可以自己做一个快速测试。只需构建一个图像。假设图像是一个网格。[0,0][1,0]…取第一行并使Image1[0,0]=SrcImage[1,0]-SrcImage[0,0]以此类推,直到图像结束。这样你得到一个输出图像,其中像素值等于对应像素和相邻像素之间的差值。这样我们得到了类似于水平导数的东西。它揭示了对比突然变化的区域(方边)在水平方向。这是一个简单/快速的近似SobelX。我可以通过任何方式检查它,比如说Paint.Net或一些图像处理软件。