2013-05-20 206 views
6

我正在开发一个使用android相机的机器人项目。如果在路径中找到任何物体,机器人可以移动并清洁表面。我被困在路径中的物体检测中,我没有使用任何传感器来查找相机和物体之间的距离。我只使用相机来查找路径中的对象。我不想查找路径中物体的形状,类型和颜色。在路径的小物件可以例如沙子,草等不应该有路径中的任何大对象(下图中的标记部分)使用相机检测真实物体。使用相机寻找真实物体的可能性

enter image description here

被忽略当使用相机画探测对象,阴影,被检测为对象。从上图中可以看出音乐符号是一个物体。是否有任何付费或开放源代码库来查找使用摄像头进行真实对象检测(如果它在Java或C++中可用,它会更有帮助)。我已经尝试过opencv,javacv,jhlabs,jjil,aviary sdk,jiu,imagemagic等等,但是没有我可以找到我的需求的确切解决方案。如果有人使用这个图像处理,请建议我在使用android相机进行实物检测时可以做些什么。如果这是不可能的,请给我一个解释为什么这是不可能的。

可能性我曾尝试:

  1. 人脸识别算法(特征检测): - 人脸检测算法基于匹配的图案。这在这种情况下不适用。即,这里的对象可以是任何形状或任何形状。没有匹配的模式。

  2. 物体识别:物体识别也是这样做的,这与匹配的模式相同。我不想识别这个对象,只是想找出它们是图像中标记部分的一个对象,它是一个真实的对象(即,不是任何地板绘画,阴影等)。

  3. 边缘检测:我尝试了不同的边缘检测算法,但这对我来说也不准确。即绘画和阴影有边缘,所以我们不能假设我们找到的边缘是真实的物体。

+1

你解决了吗?你是否试图从扭曲的图像中找到常见的图像。实现高斯模糊很容易,因为它只是将周围像素的平均值直接放入窗口矩阵中?其他扭曲也不是太困难。至于实时性,当发现某些东西并处理你发现的东西然后继续时,你可能会减慢机器人的速度。尝试http://www.amazon.com/dp/013168728X/?tag=stackoverfl08-20。对不起,我用Java完成了我的工作。 –

+0

谢谢安德鲁。我会检查这个,我会在这里分享结果。我现在有一些项目 - 比如现在,当我变得自由时,我会检查这个。 – Sujith

回答

4

如果有人用该图像处理工作请建议我什么,我可以实时目标检测采用了android相机呢。如果这是不可能的,请给我一个解释为什么这是不可能的。

实时,在飞行中物体检测是一个热门研究领域。

现在,我们现有的算法只能进行模式匹配,并且在相机框架内寻找预先定义的图像。

真实世界检测的问题是真实世界太...真实。您有任何种类的对象或项目的变体,并且单个库不可能为它们提供检测。真正的世界检测只有通过机器学习进行大量数据生成和培训才是合理的,这需要比大多数移动设备提供更多的处理和电池供电。

+0

感谢拉格哈夫苏德,请让我知道,如果你发现任何可能性有关.. – Sujith

1

在视频监控中做了很多图像分析。首先,您需要定义您需要的成功率。如果你在一张图片上尝试所有这些,你可能会意识到这不会起作用:)。在视频分析中,您可以搜索一些用于运动检测的优秀算法,这些算法将在某些背景下为您提供所有移动对象。你有一个更困难的情况,你正在移动。你以某种方式需要建模该背景。如果你想让你的机器人在一些彩色背景上移动,比如绘画,你怎么知道什么是没有深度感知的物体。也许尝试阴影但不是。毕竟,这些算法都非常密集,结果越好,所需的CPU功率就越多。 Android并不意味着这一点。你可以做一些简单的处理,但你想要的方式远远超过目前的可能。

底线是你需要调整你的需求/资源多一点。

PS。如果你能像你第一次说的那样做到这一点,我们会在一些漂亮的模型上看到你的游艇

希望这可以帮助和享受你的工作。

+0

感谢马尔科拉齐奇。如果您尝试过任何图像处理库,请告诉我。这是令人心碎的想到,我会错过游艇;) – Sujith

0

我认为你应该使用一个以上的摄像头.....给人以图像的二维视图.....希望这将有助于....

+0

感谢互换。如果你发现任何与此有关的事情,请让我。 – Sujith

2

您可能要熟悉技术所谓的运动结构。如果您从同一个摄像机拍摄了一系列短时间拍摄的照片,则可以获取有关照片场景的一些3D信息。不幸的是,我不知道任何图书馆会为你开箱,但这是一个非常流行的问题,所以一些搜索可能会给你一个现成的解决方案。

+0

感谢morynicz的信息。我从运动搜索结构,真棒概念家伙。 – Sujith

+2

嗨morynicz,我只是从nadroid的运动中找出一些structre样本。请查看此演示:https://play.google.com/store/apps/details?id=org.boofcv.android。来源:https://github.com/FedeCamposeco/Android-SfM-client,https://github.com/lessthanoptimal/BoofAndroidDemo。 – Sujith

1

如果摄像机与地面平行且地面通常平坦,则可以根据视频帧上的位置估计物体的距离。将物体的距离越高,越靠近图像的顶部。事实上,你可以估算出一些有噪音的米值,就像我们人类一样。

我认为你的识别“真实物体”的问题可以转化为:“查找不平坦(到地面)的视觉元素,换句话说,找到具有某种高度的物体”。

您是否考虑过立体视觉方法?使用两台相机可以更好地处理三维问题。

+1

感谢马文为您的答案..找到距离是一个解决方案..但问题是我们无法估计从物体到相机在android ..的距离..有没有传感器来找到在android的距离.. – Sujith