iPhone iOS UIImage如何检测相机提要上的“激光指针”点?

信息处理 计算机视觉
2021-12-25 15:42:03

我有一个履带式机器人玩具,我用 iPhone 控制它。机器人输出已知帧大小的实时摄像头馈送,我将其显示在 UIImage 上。

我为机器人添加了一个激光指示器,并将其固定在机器人的轴旁边。我正在尝试检测图像上的激光指针点,从而尝试计算物体的接近度。如果激光点远离中心,我知道机器人被卡在墙上,需要倒退。

如何在屏幕上检测一个亮白红色像素点?一种解决方案是对中心某个半径范围内的像素颜色进行采样,并检测一团明亮的颜色。任何人都可以为此活动建议一个算法吗?

另一种方法是在最后几帧中跟踪点的平均位置,从而减少估计半径。如果预定义区域内没有点,则可以扩展搜索区域。

最后,我希望能够教机器人检测周围的地毯。地毯以某种方式反射激光笔,我想了解机器人周围有多少框架具有相似的属性。如果我知道激光笔在屏幕上的位置,我可以从该图像中剪下一个小矩形并将它们相互比较。是否有一种有效的方法可以将多个小图像相互比较以了解它们的轮廓是否匹配?

我注意到激光从光滑的表面反射回来,根据折射定律,这种反射的方向可能会告诉我一些关于表面在空间中的方向的信息。

谢谢!

激光笔关闭

激光笔 1

2个回答

OpenCV可以为 iOS 编译。虽然它可能不是最有效的,但它为您提供了移植算法的选项。我使用 ConDensation 算法完成了类似的标记跟踪问题。使用 OpenCV 查找标记跟踪。这是一个非常大的研究领域,您想要的确切算法完全取决于您的应用程序。如果我没记错的话,报告的图像处理技术大约有 3000 种——挑选一个好的是一门真正的艺术!

一种解决方案是对中心某个半径范围内的像素颜色进行采样,并检测一团明亮的颜色。任何人都可以为此活动建议一个算法吗?

顺便说一句,这就是所谓的粒子过滤器背后的基本思想(冷凝是一种方法)。干得好,你自己想出了基本的想法!

另一种方法是在最后几帧中跟踪点的平均位置,从而减少估计半径。如果预定义区域内没有点,则可以扩展搜索区域。

这称为状态持久性,可以通过多种方式建模。凝聚算法使用与普通的旧卡尔曼滤波器没有什么不同的随机方法。

是否有一种有效的方法可以将多个小图像相互比较以了解它们的轮廓是否匹配?

这个难度有点大。您可以尝试模板匹配,但我不知道它在 iOS 上的性能如何(计算量很大,iOS 相机不太适合它)。

这段代码怎么样

https://www.youtube.com/watch?v=MKUWnz_obqQ

https://github.com/niitsuma/detect_laser_pointer

在此代码中,HSV 颜色使用hotelling 的 t 平方检验进行比较