使用iOS 5 AV Foundation和core-image实时确定一张纸的边angular

我目前正在build立一个相机应用程序原型,应该能够识别桌子上的纸张。 关于这个的线索是它应该实时地进行识别,所以我捕捉了相机的videostream,这在iOS 5中可以很容易地用AV基础来完成。 我看着这里和这里

他们正在那里做一些基本的对象识别。

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

所以我需要的是一个algorithm来确定没有OpenCV的图像的边缘。

有没有人有一些示例代码片段展示了如何做到这一点,或指出我在正确的方向。

任何帮助,将不胜感激。

你不能在iOS中使用当前的Core Image实现,因为angular点检测需要一些核心图像还不支持的操作。 不过,我一直在开发一个名为GPUImage的开源框架,它具有所需的function。

为了find一个物体的angular落,你可以使用我刚刚开始工作的哈里斯angular点检测algorithm的GPU加速实现。 您可能需要调整阈值,敏感度和input图像大小以适合您的特定应用程序,但是它能够返回在场景中find的纸张的angular落:

哈里斯的角落

它还会find该场景中的其他angular落,因此您可能需要使用二进制阈值操作或稍后的处理来确定哪些angular落属于矩形纸张,哪些属于其他物体。

我在Signal Processing中描述了这个过程,如果你感兴趣,但是在你的应用程序中使用这个过程,你只需要从GitHub获取最新版本的GPUImage,并使GPUImageHarrisCornerDetectionFilter成为GPUImageVideoCamera实例的目标。 然后你只需要添加一个callback来处理从这个filter返回给你的angular落数组。

在iPhone 4上,angular点检测过程本身在640x480video下以〜15-20 FPS的速度运行,但是我目前的CPU限制angular点列表程序将其降低到〜10 FPS。 我正在用一个基于GPU的例程代替它,它应该快得多。 iPhone 4S目前可以以20-25 FPS的速度处理所有事情,但是我应该能够显着提高速度。 希望这将有资格作为您的应用程序实时接近。

我使用Brad的库GPUImage来做到这一点,结果是完美的,但足够好。

在检测到的哈里斯angular落,我的想法是select:

  • 工作表左上angular最左上angular的位置
  • 表格右上angular的最右上angular
  • 等等

@Mirco – 你有没有find更好的解决scheme?

@Brad – 在你的屏幕截图中,你使用Harrisfilter的参数来检测5个angular点? 我有很多比…