Detect and cut out focused object from photo background
我想检测相机中对焦的对象,并将未对焦的背景剪掉并替换为图像。这可能吗?
这是微乎其微的可能,但需要一些繁重的计算。据我所知,没有现成的 iOS 库。因此,如果您问”是否可以轻松做到这一点?”,我会回答,恐怕不会。
执行此操作的工具通常会使用一些快捷方式,例如
- 利用人脸检测(即只要”对象”是人脸,它们就可以工作)
- 利用区域分析(即他们检查图片中间的任何内容,无论是否集中)
我相信 Quartz 可以进行人脸识别。无论如何,请查看 iPhone 上的人脸识别。
在一般和杂乱的情况下,您通常可以通过分析图像中的对比度或空间频率来识别焦点区域(假设存在),这些区域被划分为小区域(通常为 16×16 或 8×8 像素)。那些对比度低和/或高频缺失的区域是背景,而高频(锐度)的存在表示聚焦区域。
这不会告诉您图像边界,还会给出几个误报(可能还有负数);但在此阶段结束时,您将获得原始图像的采样,其中每个纹素的状态为”聚焦”、”未聚焦”和”不确定”,例如 16 像素边。
您必须对这张地图应用启发式方法,例如:
- 边框通常是背景的一部分(因此应该测试为阳性)
- 小尺寸的焦点区域可能是假阴性
- 小尺寸的未聚焦区域可能是误报
在此细化阶段结束时,您应该有几个连续的大”斑点”重点区域。然后检查它们的边界,寻找颜色或亮度的急剧过渡(通常在从斑点中心的径向方向上)。这是另一个启发式方法:我们假设您不会将红色苹果聚焦在红色背景上,或者如果您这样做,苹果将具有显示黄色、白色或非常浅红色的高光,并允许跟踪”轮廓”。
一旦每个斑点都有自己的轮廓,您就可以将其用于切口。
您必须使用诸如 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
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/268622.html