相机校准与有限的一组图像在OpenCV和c++



当样本数量有限且在图像的小区域内时,您对相机校准有什么想法或建议吗?

下面是一些附加信息:

我正在做一个帮助残疾人用眼睛使用电脑的项目。由于我对OpenCV缺乏经验,有些事情给我带来了一些麻烦。

摄像机是头戴式的,凸出度还不错,但眼球本身是凸出的,并在旋转。我打算把眼睛"弄平",让它看起来像在一个平面上移动。最明显的选择是校准相机,试图消除径向畸变。

在校准过程中,用户看着屏幕上网格的各个角。在校准过程中,瞳孔的力矩存储在每个位置的Mat中。所以我有一个图像,当我看着屏幕上网格的角落时,这些点对应着一些眼睛的位置。

我可以绘制填充多边形连接四个点的组并创建棋盘图案,或者我可以将每个眼睛位置保存为一个点,并使用对称圆形图案进行校准。

我遇到的问题是,相机是静态的,眼睛的位置没有变化,因此我限制了我能生成多少图像,因为位置范围不是那么大。

我正在考虑将网格细分为更小的棋盘图案,但它们都将在同一个小区域中,所以我不确定这将有多有用。

谢谢!

你所说的实际上似乎不是相机校准-这是你的眼动追踪设置的校准。

当你在OpenCV中校准相机时,你会尝试去除径向和切向失真,因此将该过程应用于"平坦"圆形物体似乎很直观。然而,球面透镜带来的径向畸变并不是你要处理的。你关心的是球形物体上的点投射到图像中的方式。

不可否认,模型看起来非常相似,但关键是,在校准测试对象的设置期间,您不应该触摸相机的校准(您应该离线进行校准)。事实上,你的"位置范围"是有限的,这是你的问题固有的,不能通过图像处理来改变。你拍摄的眼睛只占了相机视野的一小部分。

就我个人而言,我会将瞳孔位置记录在屏幕上均匀分布的9个点上,并将屏幕坐标与瞳孔二阶多项式的图像坐标相关联。这可以归结为取球面投影的第一个泰勒项,这可能足够好,除非眼球运动很大。然后,您可以针对第二次校准测试预测的运动,使用16而不是9个点。

我想你可以找到一本关于这个主题的书来获得更多的信息。

最新更新