识别3D Kinect中的手语

时间:2015-11-09 11:12:39

标签: c# 3d kinect emgucv

我们正在为我的本科最后一年项目使用kinect 1.0设备制作手语翻译器。 到目前为止,我们已经使用kinect sdk中的骨架api和在其上应用DTW算法来识别2D中的手势。 我们还使用轮廓并在轮廓上应用凸包来跟踪手指并区分框架中显示的手指数量。我们使用C#和Emgucv来实现这一目标。

现在我们一直坚持如何将数据转换为3d协调。我没有得到的是:

  1. 三维可视化的外观如何?我的意思是现在我们只使用深度流并在其上应用皮肤分类器,仅将皮肤部分显示为白色像素,将其余对象显示为黑色像素,并在颜色流中显示轮廓和凸起的去壳区域。对于3D,我们将使用相同的深度和颜色流?如果是,那么我们如何将数据和坐标转换为3d?

  2. 对于涉及触摸鼻子上的手指的手势,我如何将轮廓区域隔离,不包括所有脸部,只是告诉哪个手指接触鼻子的哪一侧?这是3d会进来的吗?

  3. 哪些api和库可以帮助我们进行c#?

    Extracted Fingers after Contouring and Convex Hull

1 个答案:

答案 0 :(得分:0)

Kinect支持使用红外激光创建深度贴图。它投射红外网格并测量网格中每个点的距离。您似乎已经在使用此网格的深度信息了。 要转换为3D,您应该使用深度信息。一些基本的三角函数将有助于将深度图转换为3D(x,y,z)坐标。来自摄像机的颜色流可以映射到这些点上。

检测手指是否接触鼻子是一个难题。虽然kinect的网格密度不是很高,但3D可能不会帮助你。我建议在相机图像上使用边缘检测(例如canny算法)和轮廓识别来检测手指是否在脸部前面。测试手指是否实际接触鼻子或接近是真正的挑战。