在 Android 应用程序中检测手部和分割图像
Detecting hand and segmenting image in Android application
我开发了一个 android 应用程序来捕获和处理图像。我想添加以下功能:
- 检测用户的手在图像中的位置。具体来说,应用程序将使用它来估计用户指向的位置。
- Segment 图像,以便仅保留用户手部的图像部分。如果这不仅仅是一些预定义的半径,而是使用用户手附近的某个对象进行分割,那就更好了。
似乎 Android OpenCV 可以工作,但我不确定它是否 a) 足够强大来执行此操作以及 b) 如何将其用于此功能。
这是一个非常广泛的问题,但让我尝试给出一些建议。
通常您可以将此视为模式检测问题。关键是要定义在您的情况下模式精确意味着什么,即您希望在图像上检测哪种手势?如果你的目标是检测一般的手并且你可以假设将检测到特定的手势,我建议手用直闭合的手指:
下面是原因的解释。这种模式实际上是可检测的,有一个很好的理由:它有一个始终在该模式中观察到的内部特征,并且这个特征对于背景是不变的。特点是指间"lines"。正如您所观察到的,用闭合的直手指可以检测到几个直的、平行的梯度向量:
它们对于背景是不变的。特别是,您不能依赖手的检测边界,因为那里的梯度取决于背景。我认为该方法也适用于不同的肤色,因为该特征显然是渐变,与肤色无关。
过去我一直在研究这样的 haar 分类器,我用这些例子训练过。结果令人满意。我用几百个正模式和几千个负模式训练我的分类器。
我开发了一个 android 应用程序来捕获和处理图像。我想添加以下功能:
- 检测用户的手在图像中的位置。具体来说,应用程序将使用它来估计用户指向的位置。
- Segment 图像,以便仅保留用户手部的图像部分。如果这不仅仅是一些预定义的半径,而是使用用户手附近的某个对象进行分割,那就更好了。
似乎 Android OpenCV 可以工作,但我不确定它是否 a) 足够强大来执行此操作以及 b) 如何将其用于此功能。
这是一个非常广泛的问题,但让我尝试给出一些建议。
通常您可以将此视为模式检测问题。关键是要定义在您的情况下模式精确意味着什么,即您希望在图像上检测哪种手势?如果你的目标是检测一般的手并且你可以假设将检测到特定的手势,我建议手用直闭合的手指:
下面是原因的解释。这种模式实际上是可检测的,有一个很好的理由:它有一个始终在该模式中观察到的内部特征,并且这个特征对于背景是不变的。特点是指间"lines"。正如您所观察到的,用闭合的直手指可以检测到几个直的、平行的梯度向量:
它们对于背景是不变的。特别是,您不能依赖手的检测边界,因为那里的梯度取决于背景。我认为该方法也适用于不同的肤色,因为该特征显然是渐变,与肤色无关。
过去我一直在研究这样的 haar 分类器,我用这些例子训练过。结果令人满意。我用几百个正模式和几千个负模式训练我的分类器。