从照片背景中检测并剪切出聚焦对象



我想检测一个在相机中聚焦的对象,并将未聚焦的背景剪切为图像并将其替换为图像。这可能吗?

这在一定程度上是可能的,但需要一些繁重的计算。据我所知,没有现成的iOS库。所以,如果你问,"有可能轻松地做到这一点吗?",我会回答,恐怕没有。

出现的工具通常会使用一些快捷方式,如

  • 利用人脸检测(即,只要"对象"是人脸,它们就可以工作)
  • 杠杆区域分析(即,他们检查图片中间的任何内容,无论是否聚焦)

我相信Quartz可以进行人脸识别。无论如何,看看iPhone上的人脸识别。

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

这不会告诉你图像的边界,还会给出几个假阳性(可能还有阴性);但在这个阶段结束时,您将对原始图像进行采样,状态为"聚焦"、"未聚焦"one_answers"不确定",例如,16像素侧的每个纹素。

对于这个地图,你必须应用启发式方法,例如:

  • 边界通常是背景的一部分(因此应该检测为阳性)
  • 小尺寸的聚焦区域可能是假阴性
  • 小尺寸的未聚焦区域可能是假阳性

在这个细化阶段结束时,您应该有几个连续的、大的集中区域。然后检查这些边界,寻找颜色或亮度的急剧过渡(通常是在斑点中心的径向方向上)。这是另一种启发式方法:我们假设你不会将一个红色苹果聚焦在红色背景上,或者如果你这样做了,苹果的高光将显示黄色、白色或非常浅的红色,并允许追踪"轮廓"。

一旦每个斑点都有自己的轮廓,就可以将其用于剪切。

你必须使用核心图像等工具来完成所有这些

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

最新更新