安卓 : Camera view comparison with stored image

标签 android image image-processing graphics

人们一直在讨论如何比较两个图像,“计算”它们之间的差异。这可以看作是图像比较的一种变体,但不完全是。 考虑一下: 假设我有一支笔的图像,存储在我的手机(Android 手机)的 SD 卡中。而且,我正在用我的相机在我家里“搜索”这支笔。让我们忽略我可以用眼睛做同样的事情这一事实,让相机来进行搜索。所以,我在家里,将相机对准不同的地方,看看当我将相机对准这支笔时,相机是否可以“识别”这支笔。 用模糊的计算机科学术语来说,当我将相机对准物体时,我有一个线程在后台运行,不断地将这支笔的图像与当前的相机 View 进行比较。我将相机对准椅子,线程将椅子的相机 View 与笔的图像进行比较,并且由于椅子不是笔,因此它返回“false”。 当我最终将它指向放在 table 上的同一支笔时,线程应该确定这就是我们在 SD 卡上拥有其图像的笔。因此,相机 View 现在显示笔及其所在的 table ,但它应该使用图像比较技术来识别笔。

一般来说,这样的事情可能吗?忘记Android,或者智能手机,用相机“识别”一个区域或物体可能吗?由于对图像处理库一无所知,我只能假设某些库确实有执行此类操作的工具。或者至少,可能有一个“理论”算法可以开始研究。

谢谢

桑吉夫 Mk

最佳答案

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

一个非常粗糙(而且是最简单的)系统将使用模板匹配cvMatchTemplate。本质上,您将"template"(例如,钢笔的照片)与搜索图像中每个可能位置的照片进行比较。它的计算量很大,但在受限环境下工作得很好,但是您的应用程序需要完全不受约束的条件。

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

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

关于安卓 : Camera view comparison with stored image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12032028/

相关文章:

java - 什么是类型和类型 token ?

android - 从不同的 Activity 中调用函数

java - 如何使用for循环一次运行多个登录?

image - 在 Matlab 中将绘图另存为 PNG

matlab - 哈里斯角点检测

python - 根据蒙版将 2 张图像加在一起

android - 我应该如何解析数组中的数组中的Json

php - 如何在php中显示来自mysql的图像

javascript - 将父组件中的: Pass image from this.状态 react 到子组件

android - 任何算法来检查包含特定颜色的每个像素?在安卓 :)