gpt4 book ai didi

c++ - 在 OpenCV 和 c++ 中使用一组有限的图像进行相机校准

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:18:22 26 4
gpt4 key购买 nike

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

这里是一些额外的信息:

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

摄像头是头戴式的,凸度还不错,但眼球本身是凸的,会转动。我打算“压平”眼睛,让它看起来像在平面上移动。显而易见的选择是校准相机以尝试消除径向畸变。

在校准过程中,用户查看屏幕上网格的角。在校准期间,瞳孔的时刻存储在每个位置的 Mat 中。所以当我在屏幕上查看网格的角时,我有一个图像,其中的点对应于多个眼球位置。

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

我遇到的问题是相机是静态的,眼睛位置不会改变,因此我可以生成多少图像是有限的,因为位置范围不是那么大。

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

谢谢!

最佳答案

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

当您在 OpenCV 中校准相机时,您确实会尝试消除径向和切向失真,因此应用该过程“压平”圆形物体似乎很直观。但是,球形透镜 引入的径向畸变不是您要处理的。您关心球形物体上的点投影到图像中的方式。

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

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

我假设你能找到 book on the topic了解更多信息。

关于c++ - 在 OpenCV 和 c++ 中使用一组有限的图像进行相机校准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16764679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com