Android:相机视图与存储图像的比较

时间:2012-08-20 03:39:07

标签: android image image-processing graphics

有关如何比较两幅图像的讨论,“计算”它们之间的差异。这可以看作是图像比较的变体,但并非完全如此。 考虑一下: 假设我有一个笔的图像,存储在我手机的SD卡(Android手机)中。并且,我正用我的相机在我的房子里“搜索”这支笔。让我们忽略这样一个事实:我可以用我的眼睛做同样的事情,然后让相机进行搜索。所以,我在我的房子里,把我的相机指向不同的地方,看我的相机是否可以“识别”这支笔,当我把相机指向它时。 为了设置模糊的计算机科学术语,当我把相机指向东西的时候,我在后台运行一个线程,不断地将这支笔的图像与当前的Camera View进行比较。我将相机对准椅子,线程将椅子的相机视图与笔的图像进行比较,由于椅子不是笔,因此返回“假”。 当我最后把它指向同一支笔,躺在桌子上时,线程应该确定这是我们SD卡上的笔的笔。因此,摄像机视图现在显示笔以及它所在的桌子,但它应该使用图像比较技术识别笔。

总的来说,这样的事情可能吗?忘记Android或智能手机是否可以用相机“识别”某个区域或物体?由于不了解图像处理库,我只能假设某些库确实有工具来做这些事情。或者至少,可以有一个“理论”算法,开始研究。

谢谢,

Sanjeev Mk

1 个答案:

答案 0 :(得分:2)

这种事情可以做到,但为了让它运作良好是非常非常艰难的。我在Android上使用OpenCV处理的经验是,使用当前的移动硬件实时完成此操作是不可能的。 (使用静止帧执行此操作可能是可行的)

非常粗糙(并且最简单的国家英里)系统将使用模板匹配cvMatchTemplate。基本上,您将“模板”(例如,笔的照片)与搜索图像中每个可能位置的照片进行比较。它是计算密集型的,但在受限制的情况下运行良好,但是您的应用程序需要完全不受约束的条件。

我的建议是看看Surf或类似的东西和Hough变换。通过在参考图像上的对象上生成一组SURF特征,可以对对象进行“指纹”处理。您在搜索图像上运行冲浪。然后应用广义hough变换,其中对象模型是一组特征点。 Hough空间中的峰值代表着良好的匹配。

我从未尝试过第二种方法,但我知道这是可能的。我提出的两种方法绝不是唯一的两种方法,它们只是我熟悉的两种方法。