c++ - 如何在 iOS 中使用 Opencv 检测嘴唇边缘?

标签 c++ ios xcode opencv

我是 OpenCV 的新手,所以请帮助我。我想使用 OpenCV 检测 嘴唇边缘 。那么你能给我一些链接和解决方案吗? 我检查了使用 OpenCV 检测面部和嘴巴的正常程序,但准确性不高。我使用“haarcascade_mcs_mouth”来检测图片中的嘴巴,但结果不是很好。我听说过 AAM 方法,但无法获得任何相关文件。请帮助我...

最佳答案

唇部识别是计算机视觉中尚未完全解决的问题。您一直在使用的类似 haar 的分类器(包含在 OpenCV 中)在人脸识别方面表现良好,但对于唇部识别,已经开发出更好的技术。您将不得不构建不同的算法并根据您的目的选择更好的算法。由于额外的限制(内存占用、CPU 等),您正在为 iOS 开发的事实使任务变得更加困难。我为您简要概述了唇部识别的最新技术,以便您可以进一步研究:

识别嘴唇的方法可以分为三大类:

  • 基于图像的技术:这些基于皮肤和嘴唇具有不同颜色的假设。论文 [2] 是这种方法应用于手语识别的一个例子。 [3] 也探索了颜色聚类。它假设图像中有两个像素类:皮肤和嘴唇。例如,如果此人有 mustache 或露出 dentry ,则此方法不合适。

  • 基于模型的技术:这些方法比以前的方法更稳健,因为它们使用了关于嘴唇形状的先验信息。然而,它们在计算上更昂贵,因此它们可能不适合在移动设备上实现。 AAM(Active Appearance Models)属于这一组,它从手动标注的数据中学习嘴唇的形状。在 Wikipedia article 的“外部链接”部分您可以看到一些可以移植到 C++/OpenCV 的开源实现和库。

  • 混合技术:这些方法结合了基于图像的方法和基于模型的方法。通常,首先将基于颜色的技术应用于图像以估计嘴唇区域的位置和大小;然后,将基于模型的技术(如 AAM)应用于感兴趣区域以提取嘴唇轮廓。 [4] 是这种技术的一个例子。

[2] U. Canzler 和 T. Dziurzyk,“基于视频的手语识别的非手动特征提取”。 ;在 MVA session 记录中。 2002, 318-321

[3] 梁书鸿、王世林和刘永康。 “使用结合椭圆形函数的模糊聚类进行唇部图像分割。”图像处理,IEEE Transactions on 13.1 (2004):51-62。

[4] Bouvier, Christian, P-Y。 Coulon 和 Xavier Maldague。 “基于 ROI 优化和参数模型的无监督嘴唇分割。” Image Processing, 2007. ICIP 2007. IEEE 国际 session 上。卷。 4. IEEE, 2007.

关于c++ - 如何在 iOS 中使用 Opencv 检测嘴唇边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14683646/

相关文章:

ios - 有什么方法可以管理 iPhone 应用程序中的 session 吗?

iOS SDK - 与 socket 建立连接的正确方法?

iphone - 有没有办法从 .app 文件对 Xcode 项目进行逆向工程?

iPhone UITableView 创建部分

c++ - 如何将 vector 传递给 function() 并将 vector [array]返回给 main function()

iphone - NSFetchedResultsChangeUpdate 更改类型何时发生?

c++ - 如何在结构 vector 中创建结构链表

ios - 使用带数组的 NSDictionary 创建 JSON 文件

c++ - 在 Z3 C++ 绑定(bind)中定义有趣的宏和正则表达式

c++ - 代码中的溢出会覆盖什么内存