Ror*_*ter 28 opencv computer-vision ios
如何在iPhone上进行面部识别.有人可以给我提供参考/文章,指出我正确的方向吗?我已经做了研究并意识到我需要首先进行人脸检测以提取图像,然后通过将其与数据库中的其他图像进行比较来进行面部识别.
我已经意识到我已经通过使用OpenCV或利用iOS 5.0及更高版本来检测面部进行面部检测.我不确定面部识别(我计划将图像存储在远程数据库上,然后与远程数据库进行比较).
Tom*_*P89 14
人脸检测
我会使用开放式CV中的Haarcascades来执行快速准确的人脸检测.
http://opencv.willowgarage.com/wiki/FaceDetection
人脸识别
我会使用诸如主成分分析(PCA)又称特征脸的方法.
http://www.cognotics.com/opencv/servo_2007_series/part_5/index.html
这链接显示如何获得与OpenCV的工作教程 - 我认为这是C写的,但我敢肯定,你可以得到它的基本JIST.
如果你觉得勇敢(也不是太糟糕),你也可以自己去实现它......
http://www.face-rec.org/algorithms/PCA/jcn.pdf
http://blog.zabarauskas.com/eigenfaces-tutorial/
数据库
我实际上做了类似于你的事情,虽然在PC而不是iPhone上,但它仍然是相同的概念.我将所有图像存储在数据库中作为Blob数据类型,然后在必要时将它们加载到我的程序中.
编辑
数据库是系统中特别棘手的部分,因为这是最大的瓶颈所在.在我的申请中,我将完成以下步骤......
幸运的是,我的数据库服务器位于局域网上,因此速度不是问题,但我可以看到为什么你有一个问题,因为在移动设备上你有一个有限的数据连接(速度/带宽).您可以压缩图像,但由于图像质量下降,这可能会导致更差的识别率,并且您还必须在设备上进行解码.还有如何将远程数据库暴露给应用程序的问题,但我相信这可以使用PHP和JSON(以及其他技术,见下文).
也许您可以与数据库进行初始同步,以便将图像缓存在手机上?无论如何,我认为你可能不得不在某种程度上将这些图像放在手机上.
找出将识别数据/图像存储在数据库中的最佳方法是我面临的最大挑战之一,所以如果你找到一个好的方法,我会有兴趣听听.
Sed*_*ien 12
正如您所指出的,iOS 5和iOS的第一步(脸部检测)很容易CoreImage.framework.快速举例:
CIImage *image = [CIImage imageWithCGImage:image_ref];
NSDictionary *options = [NSDictionary dictionaryWithObject:CIDetectorAccuracyHigh forKey:CIDetectorAccuracy];
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace context:nil options:options];
NSArray *features = [detector featuresInImage:image];
for (CIFaceFeature *feature in features)
{
CGRect face_bounds = [feature bounds];
CGPoint mouth_position = [feature mouthPosition];
// do something with these values
}
Run Code Online (Sandbox Code Playgroud)
关于你问题的第二部分(即面部识别),我会把它留给比我更有资格回答的人.:)
您可能希望看看Pedro Centieiro 的midian项目,该项目使用OpenCV在iOS 5上执行人脸识别.它在github上:
它使用我的libfacerec的一部分,因此它支持面部识别的特征脸,Fisherfaces和局部二值模式直方图.