使用iOS 5 AV Foundation和核心图像实时确定一张纸的角落

Mir*_*rco 3 core-image avfoundation ios

我目前正在构建一个相机应用程序原型,它应该识别躺在桌子上的纸张.关于这一点的线索是它应该实时识别,所以我捕获了相机的视频流,在iOS 5中可以很容易地用AV基础完成.我看着这里和这里

他们正在那里做一些基本的物体识别.

我发现在这个实时环境中使用OpenCV库并不能以高效的方式工作.

所以我需要的是一种在没有OpenCV的情况下确定图像边缘的算法.

有没有人有一些示例代码片段,其中列出了如何执行此操作或指向正确的方向.

任何帮助,将不胜感激.

Bra*_*son 10

你不可能在iOS中使用当前的Core Image实现,因为角点检测需要一些Core Image尚不支持的操作.但是,我一直在开发一个名为GPUImage的开源框架,它具有所需的功能.

为了找到对象的角落,您可以使用我刚刚开始工作的Harris角点检测算法的GPU加速实现.您可能需要调整阈值,灵敏度和输入图像大小以适合您的特定应用程序,但它可以返回它在场景中找到的纸张的角落:

哈里斯角落

它还会在该场景中找到其他角落,因此您可能需要使用二进制阈值操作或稍后的处理来识别哪些角落属于矩形纸张以及哪些角落属于其他对象.

如果您有兴趣,我会在Signal Processing中描述这个过程,但是要在您的应用程序中使用它,您只需要从GitHub获取最新版本的GPUImage,并使GPUImageHarrisCornerDetectionFilter成为GPUImageVideoCamera实例的目标.然后,您只需添加一个回调来处理从此过滤器返回给您的角落数组.

在iPhone 4上,角点检测过程本身在640x480视频上以~15-20 FPS运行,但是我当前的CPU限制角落列表例程将其降低到~10 FPS.我正在努力用基于GPU的例程替换它,这应该快得多.iPhone 4S目前以20-25 FPS处理所有内容,但我应该能够显着提高速度.希望这对于您的应用程序来说足够接近实时.