opencv - 存在相机抖动时的基准标记检测

标签 opencv computer-vision augmented-reality

当用户猛烈移动相机(手机)时,我正在努力使基于 OpenCV 的基准标记检测更加稳健。标记为 ArTag 样式,在黑色边框内嵌入了海明码。通过对图像进行阈值处理来检测边界,然后根据找到的轮廓寻找四边形,然后检查四边形的内部结构。

一般来说,如果黑色边框被识别,标记的解码是相当稳健的。我尝试了最明显的方法,即对图像进行两次下采样,并在这些级别上执行四重检测。这有助于相机在极端近地标记上散焦,也有助于非常小的图像模糊,但对相机运动模糊的一般情况没有太大帮助

是否有关于使检测更可靠的方法的可用研究?我想知道的想法包括:

  1. 你能做某种光流跟踪来“猜测”下一帧中标记的位置,然后在这些猜测的区域中进行某种角点检测,而不是将矩形搜索视为全帧阈值?
  2. 在 PC 上,是否可以推导出模糊系数(可能通过在最近检测到标记的视频帧上进行配准)并在处理之前对图像进行去模糊处理?
  3. 在智能手机上,是否可以使用陀螺仪和/或加速度计来获取去模糊系数并对图像进行预处理? (我假设不会,因为如果是的话,市场上就会充斥着抖动校正相机应用程序。)

如果能节省我尝试它们的时间,也将不胜感激指向失败想法的链接。

最佳答案

  1. 是的,您可以使用光流来估计标记的位置并定位您的搜索,但这只是重新定位,您的跟踪将因模糊帧而中断。
  2. 我对去模糊知之甚少,只是说它的计算量很大,所以实时可能很困难
  3. 您可以使用传感器来猜测您所面临的模糊类型,但我认为去模糊对于实时移动设备而言计算量太大。

然后是其他一些方法:

这里有一些非常聪明的东西:http://www.robots.ox.ac.uk/~gk/publications/KleinDrummond2004IVC.pdf他们在哪里进行边缘检测(这可以用来找到你的标记边界,即使你现在正在寻找四边形),对来自传感器的相机运动进行建模,并使用这些值来估计方向上的边缘模糊应该出现给定帧率,并搜索它。十分优雅。

同样在这里http://www.eecis.udel.edu/~jye/lab_research/11/BLUT_iccv_11.pdf他们只是预先模糊跟踪目标,并尝试匹配给定模糊方向的适当模糊目标。他们使用高斯滤波器对对称的模糊进行建模,因此您需要的预模糊目标数量是您最初预期的一半。

如果您确实尝试实现其中任何一个,我真的很想知道您的进展情况!

关于opencv - 存在相机抖动时的基准标记检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320479/

相关文章:

android - 需要在 android 中使用相机捕获矩形 View 内的图像

android - 计算透视变换目标图像的纵横比

python - 寻找不同的苹果图片图像分割方法

android - 如何在统一场景中添加.gif 动画? Unity 是否支持 GIF 动画?

iphone - 如何在没有陀螺仪的设备上创建 CMRotationMatrix

opencv - Cvknearest的Mat *输入

python - 什么是 alpha 修剪均值滤波器?

opencv - 如何根据 hog 特征去除相似图像?

machine-learning - 批量归一化适用于小批量吗?

android - 如何更改 Vuforia AR 相机对焦模式?