使用相机检测真实物体。使用相机找到真实物体的可能性

时间:2013-05-20 06:08:35

标签: java android c++ opencv

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

enter image description here

使用相机绘画检测对象时,阴影会被检测为对象。从上图中,音乐符号被检测为对象。是否有任何付费或开源库可以使用相机找出真实物体检测(如果它可以在Java或c ++中使用,将会更有帮助)。我已经尝试过opencv,javacv,jhlabs,jjil,aviary sdk,jiu,imagemagic等等。但是没有我能在哪里找到满足我需求的精确解决方案。如果有人使用此图像处理请建议我使用Android相机在真实对象检测中可以做什么。如果不可能,请给我解释为什么不可能。

我尝试过的可能性:

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

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

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

6 个答案:

答案 0 :(得分:4)

  

如果有人使用此图像处理请建议我使用Android相机在真实物体检测中可以做什么。如果不可能,请给我解释为什么不可能。

实时,即时对象检测是一个深入研究的领域。

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

现实世界检测的问题在于现实世界太真实了。任何类型的对象或项目都有很多变体,单个库不可能为它们提供检测。通过机械学习进行大量数据生成和培训,实际检测只是合理的,这需要比大多数移动设备所能提供的更多处理和电池供电。

答案 1 :(得分:2)

您可能希望熟悉称为动作结构的技术。如果您使用相同的相机拍摄一系列照片,并且拍摄时间很短,您可以获取有关照片上场景的一些3D信息。不幸的是,我不知道任何库可以为你开箱即用,但这是一个非常受欢迎的问题,所以一些搜索可能会给你一个现成的解决方案。

答案 2 :(得分:1)

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

最重要的是,您需要更多地调整您的需求/资源。

PS。如果你像你刚才说的那样设法做到这一点,我们会在一些游艇上看到你有一些漂亮的模特

希望这有助于并享受您的工作。

答案 3 :(得分:1)

如果摄像机与地面平行且地面通常是平坦的,您可以根据视频帧上的位置估算物体的距离。 Hogher对象的距离,更多的是它将成为图像的顶部。事实上,你可以用一些噪音估计一个以米为单位的值,就像我们人类一样。

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

您是否考虑过立体视觉方法?使用两个摄像头,您可以更恰当地处理三维问题。

答案 4 :(得分:0)

我认为你应该使用多个相机.....给图像一个二维视图.....希望它会有所帮助......

答案 5 :(得分:0)

您可以使用Tensorflow训练或使用预训练模型深度学习模型,而Keras首先必须尽可能多地收集对象数据,以确保它是从现场收集的,然后根据需要尝试训练具有不同架构的模型您可以调整超参数并将模型转换为Tensorflow lite以在Android应用中打包模式。

有关更多参考,您可以访问tenserflow

这是我发现的解决计算机视觉问题的最简单方法。