我想检测一个聚焦在相机中的物体,并将未聚焦的背景剪切掉并用图像替换它。这可能吗?
答案 0 :(得分:3)
略微可能,但需要一些繁重的计算。我知道没有现成的iOS库。所以如果你问,“是否有可能轻松地?”,我会回答,我恐怕不。
出现的工具通常会使用某些快捷方式,例如
我相信,Quartz可以使用人脸识别功能。无论如何,请查看Face Recognition on the iPhone。
在一般和杂乱的情况下,您通常可以通过分析图像中的对比度或空间频率来识别聚焦区域(假设存在),划分为小区域(通常为16x16或8x8像素)。具有低对比度和/或缺少高频的区域是背景,而高频(清晰度)的存在表示聚焦区域。
这不会告诉你图像边界,也会给出几个误报(也可能是否定的);但是在这个阶段结束时,您将对原始图像进行采样,其中每个纹素(如16像素边)的状态为“聚焦”,“未聚焦”和“不确定”。
在此地图中,您必须应用启发式扫描,例如:
在这个改进阶段结束时,你应该有一些重点区域的连续大的“blob”。然后检查这些边界,寻找颜色或亮度的明显过渡(通常在从斑点中心的径向方向)。这是另一种启发式方法:我们假设您不会将红色苹果聚焦在红色背景上,或者如果您这样做,苹果将会有高亮显示黄色,白色或非常浅红色并允许描绘“轮廓”。
每个blob都有自己的轮廓,你可以用它来剪切。
您必须使用Core Image
等工具完成所有这些操作或者,更适合任务,vImage