2012-09-11 71 views

回答

3

它是勉强可能,但需要一些重大的计算。我知道iOS没有现成的库。所以,如果你问,“是否有可能做到这一点容易?”,我会回答,恐怕不是

工具出现这样做通常会使用一些快捷方式,例如

  • 利用人脸检测(即他们工作,只要“对象”是一个人脸
  • 杠杆面积分析(即他们检查是否在图片中间,无论是否重点)

人脸识别是可用的,我相信,石英。无论如何,退房Face Recognition on the iPhone

在一般和杂乱的情况下,通常可以通过分析图像中的对比度或空间频率(分为小区域(通常为16x16或8x8像素))来识别聚焦区域(假设存在)。那些低对比度和/或高频丢失的区域是背景,而高频(清晰度)表示聚焦区域。

这不会告诉你的图像边界,也会给出一些误报(也可能是负面的);但是在这个阶段结束时,对于像素为16像素的每个纹理元素,您将获得原始图像的采样,其状态为“聚焦”,“未聚焦”和“不确定”。

在该地图上,你将不得不申请启发,例如:

  • 边界通常是背景的一部分(因此应试验阳性)
  • 小尺寸的聚焦区域可能是一个假阴性
  • 小尺寸的聚焦区域可能是一个假阳性

在这个细化阶段结束时,你应该有focu上的一些连续大“斑点” sed地区。然后检查这些边界,寻找颜色或光度的锐转变(通常从斑点中心的径向方向)。这是另一种启发式:我们假设你不会在红色背景上聚焦红苹果,或者如果你这样做,苹果将会有高亮显示黄色,白色或非常浅的红色,并允许跟踪“轮廓”。

一旦每个斑点有其自己的轮廓,你可以使用它作为剪影。

你会做这一切的使用工具,如核心图像

http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/CoreImaging/ci_intro/ci_intro.html

,或者更适合的任务,VIMAGE

http://developer.apple.com/library/ios/#documentation/Performance/Conceptual/vImage/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001001

+1

这可能是棘手的核心图像在iOS上为你做这件事,缺乏自定义内核,但我的爱好项目可能会有所帮助:https://github.com/BradLarson/GPUImage。您可能也可以使用图像渐变来帮助识别清晰的区域,因为缺乏焦点应该会抑制边缘的强度,并且Sobel内核可能会将其解决。 –