iPhone iOS UIImage如何检测相机源上的“激光指示器”点?


9

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

我向机器人添加了激光指示器,并将其固定在机器人的轴上。我试图检测图像上的激光指示器点,从而尝试计算物体的接近度。如果激光点距离中心较远,我知道机器人被卡在墙上,需要备份。

如何检测屏幕上明亮的白红色像素点?一种解决方案是对中心一定半径内的像素颜色进行采样并检测斑点明亮的颜色。谁能为此活动提出算法?

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

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

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

谢谢!

激光笔关闭

激光笔1


1
能否以某种模式打开和关闭激光指示器?就像关闭一帧,打开下一帧一样,然后减去后续几帧使其非常明显。
endlith 2012年

好主意!但是我无法控制激光指示器,无论激光指示器是打开还是关闭。
亚历克斯·斯通

@AlexStone我正在尝试实现类似的目的,唯一的区别是我正在尝试检测瞳孔上的激光。您可以通过ios代码或您在opencv中起诉的任何示例代码来帮助我跟踪激光束吗?提前感谢您的帮助,谢谢AJ。
AmJa '18

Answers:


10

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

一种解决方案是对中心一定半径内的像素颜色进行采样并检测斑点明亮的颜色。谁能为此活动提出算法?

顺便说一句,这是所谓的粒子过滤器(凝聚是一种方法)背后的基本思想。做得好,您自己就能找到基本的想法!

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

这称为状态持久性,可以用多种方式建模。压缩算法使用的随机方法与普通的旧式卡尔曼滤波器并无二致。

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

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


保罗,谢谢你提供了非常详细的答案!我得到了OpenCV框架,并将寻找使用它的项目示例。
亚历克斯·斯通

嗨,保罗,您对示例应用程序有任何想法,可以使用openCV通过iOS相机进行激光检测吗?
AmJa '18

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.