【问题标题】:Kinect pattern recognition [closed]Kinect 模式识别
【发布时间】:2011-06-18 01:24:56
【问题描述】:

我买了一个 Kinect 来在我的电脑上用 C# 玩。 (编程是多么有趣!)

我正在使用 CLNUIDevice.dll 从 Kinect 获取深度图像。这很好用,我可以通过图像中的 RGB 值读取深度。

现在我想知道有哪些库可以进行不同类型的识别。我见过手部识别、面部识别、骨骼、情绪、物体等。

图像处理库不一定适用于 Kinect(尽管那会很好),也不一定适用于 .Net(尽管那会很好)。例如:任何对象跟踪库都可以工作,但如果它可以正确使用来自 Kinect 的 3D 热图,它会工作得更好。

【问题讨论】:

  • 我见过的所有演示都使用 OpenCV。这是一个带有丑陋 API 的 C 库,但应该有 C# 绑定。

标签: c# .net algorithm image-processing kinect


【解决方案1】:

您可以获取 Kinect 生成的一系列 RGB 矩阵,并通过标准图像处理算法运行它们,实际上图像处理算法通常组合在一起以产生有意义的结果。以下是一些可以在 .net 中轻松实现(和组合)的标准技术:

模板匹配 - 一种数字图像处理技术,用于查找与模板图像匹配的图像的小部分http://en.wikipedia.org/wiki/Template_matching

形态图像处理 - 一种基于集合论、格理论、拓扑和随机函数的几何结构分析和处理的理论和技术 http://ashleyaberneithy.wordpress.com/2011/08/08/automating-radiology-detecting-lung-nodules-using-morphological-image-processing-in-f/

还有更高级的图像处理技术可用于特定场景,例如通过机器学习进行人脸识别和模式匹配

主成分分析 - 我过去曾使用过这种技术,我认为这在现代消费类相机中用于执行面部识别http://en.wikipedia.org/wiki/Principal_component_analysis

机器学习模式匹配 - 我过去曾使用支持向量机和基于神经网络的学习算法来检测图像矩阵中的模式。值得一读 Vapnik 的 Statistical Learning Theory -http://www.amazon.com/Statistical-Learning-Theory-Vladimir-Vapnik/dp/0471030031,它展示了如何成功地将训练数据映射到 n 维结构中,以及如何在该结构中成功地对超平面进行建模以对数据进行分类,然后可以基于此模型对新数据进行分类。还存在一个名为 LibSVM 的库,我发现它很有用。 http://www.csie.ntu.edu.tw/~cjlin/libsvm/

顺便说一句,在 .net 世界中使用 F# 来实现其中一些算法可能会更自然

编辑:另一本非常好的书是“数字图像处理”

【讨论】:

    【解决方案2】:

    Siding with Kenny 在这个上 - 我想要的是 OpenCV 的 Emgu C# 包装器。 OpenCV(通常基于 C++)是目前使用最广泛的计算机视觉框架,也由英特尔部分维护/优化。许多当前的研究人员和工程师使用它来创建自己的项目,Emgu 包装器为您提供了一个很好的翻译,以开始在 C# 中使用它的库。我觉得 Kinect 领域的许多开源创新都发生在 libfreenect 包装器(最好与 Linux/C++ 一起使用),EmguCV 应该为您提供模仿(或使用其他人的模仿)这些 Vision 研究人员的最佳方式正在做。

    【讨论】:

      【解决方案3】:

      关于 OpenCV 的一些修正,它曾经是一个 C 库,而遗留代码仍在维护中,OpenCV 现在几乎是纯 C++,即从 2.1 版开始。当它是一个纯 C 的库时,很多处理起来真的很复杂,在较新的版本中得到了简化。

      还有一个 Yahoo OpenCV 组,它是一个很好的资源。 openCV 还附带了一组示例,它们可以帮助您掌握基本的模式匹配。

      指向 Yahoo 群组的链接 http://tech.groups.yahoo.com/group/OpenCV/

      Kinect 和 OpenCV 示例http://www.morethantechnical.com/2010/11/22/kinect-and-opencv-2-1/

      【讨论】:

        【解决方案4】:

        学习 OpenCV。它是当今计算机视觉实验室/学习的标准框架。尝试轮廓查找工具、K-最近邻等。但首先,学习它的接口(数据结构、函数)。

        【讨论】:

          【解决方案5】:

          还有强制性的 OpenCV 和我最喜欢的 C# http://www.emgu.com/wiki/index.php/Main_Page 端口

          【讨论】:

            【解决方案6】:

            用于计算机视觉和机器学习的有用 .Net 库是 AForge.NET

            这是一个代码示例和某人在 Kinect 中使用它的视频:Conquex

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-08-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-02-10
              • 2017-11-25
              • 1970-01-01
              相关资源
              最近更新 更多