如何检测手掌及其朝向(如面向外)?

我正在进行一个手部检测项目。网上有很多优秀的项目可以实现这个功能,但我的需求是特定的手部姿势检测。需要完全张开的手掌,并且手掌整体朝外,就像下图所示:
左手将不会被检测到

第一只手朝内,因此不会被检测到,而右边的那只手朝外,将会被检测到。现在我可以使用OpenCV检测手部,但如何判断手部的朝向呢?


回答:

与手掌正面匹配的问题属于纹理分类,是一个经典的模式识别问题。我建议你尝试以下方法之一:

  1. 加博滤波器:它在检测朝向和像素强度方面表现良好(因为手掌正面具有不同的特征),OpenCV中有getGaborKernel函数,该函数的两个非常重要的参数是theta(朝向)和lambd(频率)。为了简化操作,你可以在已经检测到的掌部区域上应用这个过程(例如,裁剪拇指或掌心重心周围的矩形区域等)。然后,你可以将其与同一区域的小型图像数据库进行卷积,以获得匹配率,或者你可以使用SVM分类器,你需要通过构建SVM所需的训练矩阵来训练你的SVM(查看此问题),这篇论文
  2. 局部二值模式(LBP):这是一种重要的特征描述符,用于纹理匹配,你可以将其应用于整个手掌图像或裁剪的区域或图像的手指,在OpenCV中使用起来很容易,有很多关于此方法的教程和代码。我建议你阅读这篇论文,讨论了使用局部二值模式进行不变纹理分类。这里有一个好的教程
  3. 哈拉利克纹理:我读到过,当一组特征量化整个图像(全局特征描述符)时,它的工作表现完美。它没有在OpenCV中实现,但易于实现,查看这个有用的教程

  4. 训练模型:我已经建议使用SVM分类器,与某些描述符结合使用,可以完美工作。OpenCV有一个有趣的FaceRecognizer类用于人脸识别,将其用于手掌识别可能是一个有趣的想法(通过调整大小和旋转来获得手掌的唯一姿势),这个类有三种方法可以使用,其中一种是局部二值模式直方图,推荐用于纹理识别。为什么不尝试其他模型(Eigenfaces和Fisherfaces)呢?查看这个教程

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注