繁体   English   中英

如何从这些图像中提取手部特征?

[英]How can I extract hand features from these images?

我有两种不同类型的图像(由于声誉我无法发布,因此已链接它们):

图片1 图片2

我试图使用OpenCV和Python从图像中提取手部特征。 哪种看起来像这样:

import cv2
image = cv2.imread('image.jpg')
blur = cv2.GaussianBlur(image, (5,5), 0)
gray = cv2.cvtColor(blur, cv2.COLOR_BGR2GRAY)
retval, thresh1 = cv2.threshold(gray, 70, 255, / cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
cv2.imshow('image', thresh1)
cv2.waitKey(0)

结果如下:

图片1 图片2

第二张图片中背景的变化使cv2.threshold()函数cv2.threshold()混乱,并且皮肤部分无法正常使用。 有办法做到这一点吗?

作为后续问题,提取手部特征的最佳方法是什么? 我尝试了HaaR级联,但没有真正得到结果吗? 我应该训练自己的瀑布吗? 我还有什么其他选择?

基于两个图像的样本大小很难说,但是我会尝试使用OpenCV的整体通道功能 (ChnFtrs),就像增压的Haar功能一样,它可以从颜色以及您希望创建和提供的任何其他图像通道中获取线索。

  • 无论如何,您都必须训练自己的瀑布。 当然,单独的叶栅用于正面和侧面拍摄。
  • 去除肤色阈值,因为您已经注意到,根据实际对象的肤色和光线,它可能会丢掉部分或全部双手。 ChnFtrs将比固定阈值更强大地为您执行皮肤检测。 (尽管以供将来参考,所有人类实际上都是橙色的 :)
  • 您可以通过仅在希望的手所在的边界框内进行检测来消除一些误报。
  • 尝试使用RGB和YUV通道,看看哪种效果最好。 您也可以添加边缘检测的结果(例如Canny,将其在3个颜色通道中最大化)以进行良好的测量。 最后,您可以根据需要清除未充分使用的通道以保存处理。
  • 如果手部姿势有很大变化,则可能需要对相似的姿势进行分组,并为每个组训练单独的ChnFtrs级联。 各个级联不具有分支结构,因此当正样本在参数空间中不相交时,它们无法很好地应对。 AFAIK,这是一个未开发的领域。

训练有素的ChnFtrs级联(或多个)可能会为您提供一个手的边界框,这将有助于提取手的轮廓,但不能在同一边界框中排除无效轮廓。 大多数其他对象检测例程也将出现此问题。

另一种可能比ChnFtrs更好/更简单的选择是LINEMOD(我的当前最爱)。 它的优点是不需要复杂的培训过程,也不需要任何培训时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM