从照片背景中检测并剪切出聚焦的物体

时间:2012-09-11 19:39:12

标签: ios image camera

我想检测一个聚焦在相机中的物体,并将未聚焦的背景剪切掉并用图像替换它。这可能吗?

1 个答案:

答案 0 :(得分:3)

略微可能,但需要一些繁重的计算。我知道没有现成的iOS库。所以如果你问,“是否有可能轻松地?”,我会回答,我恐怕不

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

  • 利用面部检测(即只要“对象”是人脸,它们就会起作用)
  • 杠杆区域分析(即他们检查图片中间的任何内容,无论是否重点)

我相信,Quartz可以使用人脸识别功能。无论如何,请查看Face Recognition on the iPhone

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

这不会告诉你图像边界,也会给出几个误报(也可能是否定的);但是在这个阶段结束时,您将对原始图像进行采样,其中每个纹素(如16像素边)的状态为“聚焦”,“未聚焦”和“不确定”。

在此地图中,您必须应用启发式扫描,例如:

  • 边框通常是背景的一部分(因此应该测试为正面)
  • 小尺寸的聚焦区域可能是假阴性
  • 小范围的未聚焦区域可能是误报

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

每个blob都有自己的轮廓,你可以用它来剪切。

您必须使用Core Image

等工具完成所有这些操作

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